Nous
allons aborder au cours de ce chapitre, ce qui faut savoir pour
émettre et recevoir sur le port série et le port infrarouge.
Comme nous, l'avons déjà vu dans le chapitre système, nous avons
à notre disposition 3 types de langages de programmation: Le
RPL de base (Le language polonaise Inversée) , le RPL système
(on parle d'externals ou de sysevals) et l'assembleur (les autres
langages étant des dérivés des deux derniers). En RPL, Les commandes
pour la gestion du port série sont communes avec celles pour
la gestion du port Infrarouge.
Il
faut faire un choix préliminaire du port que l'on veut choisir
avant d'utiliser de telles commandes:
->Sous
HP48G/GX, il faut utiliser le sous menu transfert du menu
I/O:
-Ici
on choisit la liaison série (pour la liaison IR appuyez sur
choose et sélectionnez infrared)
-Le protocole peut être soit Kermit soit X/Ymodem
-Le format ASC (texte ASCII) ou BIN (binaire)
-La vitesse de transfert est ici de 9600 bauds
-Pas de bit de parité
->Avec la HP48 S/SX, il faut sélectionner le sous menu
setup du menu I/O . On retrouve à peu près les mêmes informations
IR / WIRE, ASCII / BINARY; baud, parity, checksum type et
translate code. (le deux derniers on ne s'en occupe
jamais)
A
- Les commandes d'Entrée/Sortie en RPL
1)
Envoi d'une chaine ou d'un caratère sur un port
Action
Commande
Envoyer
hello par la voie série ou infrarouge
"hello"
XMIT
Envoyer
le caractère A
"A"
XMIT
Envoyer
le caractère numéro X avec
X=0 à 255
X
CHR XMIT
La
dernière action est très pratique. Deux remarques sont à apporter
: d'une part, XMIT ouvre le port série pour
vous et il vaut mieux le refermer derrière avec CLOSEIO d'autre
part, la commande renvoie 1 si tout s'est bien déroulé
0 sinon. On peut connaitre la valeur d'un caractère en
tapant NUM [entree]
2)
Réception d'un caractère sur un port
a) Attente de réception Active (scrutation active)
Action
Commande
Récupération
de X caractères
(X=1 à 255 caractères max)
X
SRECV
La
commande SRECV ouvre le port série et essaie d'extraire
les caractères qui viennent d'être réceptionnés. Si aucun
caractère n'est présent, la HP attend pendant un moment
(TIMEOUT) puis renvoie soit les caractères reçus avec leur
nombre soit une chaîne vide et 0 (aucun caractère reçu).
La hp48 est inutilisable pendant tout ce temps de traitement.
b)
Attente de réception Passive (scrutation passive)
Il
suffit d'ouvrir le port série grâce à la commande OPENIO
et d'utiliser la commande SRECV pour vider régulièrement
les caractères reçus (avant que le buffer déborde!).
Si
l'on force l'envoi des données séries de l'autre coté (c'est
à dire on raccourcit la durée inter-trames), la HP est fortement
ralentie (elle ne suit plus la cadence entre deux caractères
successifs), le sablier s'allume et la HP se comporte comme
si l'on avait appuyé sur trop de touches consécutives.
Il
existe une limite intéressante de ce phénomène (serial spawning),
le temps inter-trame avant que le sablier s'allume car c'est
ce temps qui donne les meilleurs temps de réponse de la
hp sur la liaison série.
Quand
on a fini d'échanger des données, le mieux est de fermer
le port série manuellement avec CLOSEIO, cela économise
les piles. Cette action est impossible quand on surcharge
le registre (buffer) de réception de la hp.