|
|
||||||
|
Le contrôle de communication série gère 2 buffers, l'un pour l'écriture et l'autre pour la lecture. Ces buffers sont des zones de stockage temporaires qui permettent de ne pas sans arrêt attendre un caractère en lecture ou attendre que tous les caractères soient envoyés avant de passer à autre chose. Ces buffers permettent un travail asynchrone, très pratique.
Lorsqu'un matériel envoie des données par liaison série, il doit être sûr que celui qui les reçoit à le temps de les traiter. C'est le cas typique des imprimantes qui possèdent un buffer de reception limité et qui, du fait du temps d'impression, doivent parfois demander à l'envoyeur de suspendre momentanément l'envoi des données. La manière d'annoncer l'arrêt ou la reprise de l'envoi des données s'appelle le Handshaking. Il en existe 3 sortes. Le premier est matériel, ce sont des fils supplémentaires dans le cable série qui indiquent que la voie est ouverte ou fermée. Pour que ça marche, ces fils doivent être présents (ce qui n'est pas toujours le cas). Le second est logiciel. On utilise des caractères réservés (XON et XOFF) pour demander l'arrêt (XOFF) ou la reprise (XON) de l'envoi des données. Le dernier est le plus simple, on ne contrôle rien et on part du principe que l'autre écoute et traite en permanence les données envoyées. Le contrôle de communication fourni avec eVB permet de choisir le Handshaking en utilisant la propriété 'Handshaking' (tout simplement) : Rem On utilise un contrôle
matériel Rem On utilise un contrôle
logiciel (xon et xoff) Rem On utilise un contrôle
matériel doublé d'un contrôle logiciel Rem Pas de contrôle
Il est possible d'envoyer (et de recevoir du même coup) les données sous 2 formats. Le premier format, la chaine de caractères, est le plus habituel. Le second, moins utilisé, est le format binaire (le tableau d'octets). Note: Si les données que vous envoyez ou que vous recevez contiennent des caractères de contrôle qui doivent être considérés comme des données, il faut choisir le type binaire. Pour que le contrôle sache comment vous fournir les données (chaine ou tableau d'octets) il faut donner à la propriété 'InputMode' le type de données à utiliser en réception : Rem On veut recevoir les données
sous forme de chaine de caractères Rem On veut recevoir les données
sous forme de tabeau d'octets (byte array) Note: Nous allons utiliser le mode texte (valeur par défaut) pour envoyer et recevoir des données.
Note: Avant d'envoyer ou de recevoir des données, il faut que le port série ait été paramètré et ouvert. Si vous ne savez pas (ou plus) comment faire, veuillez vous référer à la première partie de cet article. Pour envoyer des données sur le port série, il sufft d'utiliser la propriété 'Output' avec comme valeur la chaine de caractères que vous souhaitez envoyer Comm1.Output = "Bonjour" Les caractères de la chaine "Bonjour" sont placés dans le buffer de sortie, puis envoyés 1 à 1 par la liaison série. L'envoi effectif est géré en tâche de fond par le contrôle. Il est possible de connaître le nombre de caractères attente dans le buffer de sortie en lisant le contenu de la propriété 'OutBufferCount' : Rem Lecture du nombre de caractères
dans le buffer de sortie
Toutes les données reçus sont stockées par le contrôle liaison série dans le buffer d'entrée. Ainsi, il est théoriquement impossible de louper des caractères. Il est possible à tout moment de connaitre le nombre de caractères disponibles dans le buffer d'entrée en lisant le contenu de la propriété 'InBufferCount' : Rem Lecture du nombre de caractères
dans le buffer d'entrée La réception des données peut se faire de deux manières. Vous pouvez demander la lecture de tout le buffer d'entrée d'un coup ou vous pouvez demander la lecture d'un nombre précis de caractères. La propriété 'InputLen' indique combien de caractères doivent être retirés du buffer d'entrée. Si vous placez la valeur zéro, tout le buffer d'entrée sera lu. Si vous placer une valeur suppérieure à zéro, seuls le nombre de caractères demandés seront lu et retirés du buffer d'entrée. La propriété 'Input' active la lecture : Rem Nous allons lire tous les caractères
présents dans le buffer d'entrée Rem Nous allons lire 5 caractères
du buffer d'entrée Important : Si le nombre de caratères présents dans le buffer d'entrée est insufisant, le contrôle attend le nombre de caractères demandés avant de rendre la main à votre application eVB. Le mieux est de contrôler le nombre de caractères disponibles avant de lancer une lecture. Rem Nous devons lire les caractères 2 par 2
Rem Nous vérifions qu'il y a au moins 2 caractères
Voila, vous savez maintenant envoyer et recevoir des données. Dans la 3ème partie nous parlerons de quelques astuces pour simplifier la gestion d'une liaison série.
|
||||||
|
|
||||||
|
Copyright 2001-2004 - Tous droits réservés
|
||||||
|
iPAQ
est un produit de COMPAQ.
|