ComSerFich :
Logiciel de COMmunication en SERie par des FICHiers
Pierre DIEUMEGARD (retour aux logiciels Win32)
pierre.dieumegard@free.fr (télécharger ComSerFich)
Illustration
1: Aspect d'une prise série sur un PC (tiré de
http://fr.wikipedia.org/wiki/RS-232)
De nombreux langages de programmation, anciens
ou modernes, sont parfois intéressants, mais ont du mal à
communiquer avec le monde extérieur par l'intermédiaire
d'une voie qui est (ou a été) très répandue
: la voie série RS232 (= V24), qui se trouve souvent à
l'arrière des ordinateurs sous la forme d'une prise à 9
broches mâle.
Par contre, tous les langages de programmation doivent permettre l'écriture et la lecture de fichiers de type texte. ComSerFich peut envoyer des signaux sur la voie RS232 en fonction de ce qu'il a lu sur un fichier, et écrit les signaux qu'il a reçu sur cette même voie dans un fichier. Par conséquent, il suffit que le langage utilisé écrive et lise ces fichiers pour qu'il puisse communiquer par la voie série.
Dans la pratique, il en existe deux versions : une version "normale", et une version permettant l'utilisation des broches d'état (RTS, TXD, DTR, CTS, RNG, DSR, DCD), ce qui permet de commander trois broches (donc allumer des diodes ou enclencher des relais) ou d'avoir quelques entrées logiques (donc percevoir des contacts).
Toute la partie gauche et centrale est consacrée aux réglages.
Illustration
2: Fenêtre principale de ComSerFich au moment du lancement
- le numéro du port. Traditionnellement,
s'il n'y a qu'une prise, c'est Com1:, s'il y en a deux ce sont Com1:
et Com2:. Les ordinateurs modernes sont parfois dépourvus de
telles prises, mais il existe des adaptateurs USB-->série
qui en font l'adjonction ; ce qui est un peu étrange est que
dans ce cas, même s'il n'y a qu'une seule prise série,
elle peut être Com3:, ou Com5:... Pour le savoir, consultez le
"gestionnaire de périphériques" du Panneau de
Configuration, au répertoire "Ports".
- la vitesse de communication, en bits par seconde (bauds). Seules les basses vitesses, les plus fréquentes pour les appareils de mesure, sont disponibles. Le nombre de bits de données, qui en général est 8, les bits de stop, en général 1, et la parité. Pour savoir quelle combinaison utiliser, il faut consulter le mode d'emploi de l'appareil que l'on veut brancher sur la prise série.
- l'intervalle entre les lectures/écritures de fichiers.
Après avoir effectué ces réglages, on peut activer ComSerFich en cliquant sur le bouton "Action ?", qui se transforme en bouton "Arrêt", c'est à dire qu'il faudra cliquer sur ce bouton pour désactiver ComSerFich.
Dessin
1: ComSerFich après activation, et échange avec Orphy
GTS : l'envoi de XEA 0 provoque la réponse 255
Lorsque ComSerFich est activé, il lit à
intervalles réguliers le fichier "envoi.txt", et
envoie son contenu vers la voie série, puis détruit ce
fichier. Si la voie série lui envoie des signaux, il les écrit
(à la fin du fichier s'il existe déjà) dans le
fichier "retour.txt".
En même temps, ces signaux s'inscrivent dans la fenêtre de droite. Les signaux émis (provenant de "envoi.txt" sont précédés du signe ">:", et les signaux reçus (écrits dans "retour.txt") sont précédés par "<:". D'une part cette fenêtre visualise l'échange des signaux, d'autre part on peut copier ou couper son contenu vers le presse-papier par les boutons "copier tout ?" et "couper tout ?", ce qui permet de récupérer tous les signaux échangés, et de les traiter par un autre logiciel.
Consultez le mode d'emploi de votre langage de programmation. Certains langages ont des fonctions très puissantes et très complexes d'écriture et de lecture de fichiers, mais aussi des fonctions plus simples (et moins puissantes), qui sont amplement suffisantes.
Selon l'appareil branché, les messages seront différents. Certains appareils (Orphy) renvoient directement une valeur numérique, d'autres (pHmètres Tacussel-Radiometer) renvoient toute une ligne de caractères, à l'intérieur de laquelle se trouve la valeur numérique mesurée. Il faut donc souvent effectuer un traitement de la chaîne de caractères.
Les exemples sont donnés pour Orphy GTS : l'envoi de XEA 0 provoque la prise de mesure.
- Scilab : write('envoi.txt','XEA 0')
- Matlab : dlmwrite('envoi.txt','XEA 0','')
On récupère la réponse de l'appareil dans la chaîne ch.
- Matlab : ch=textread('retour.txt','%s','whitespace','')
- Octave : [a,ch]=dos('type retour.txt')
- Scilab : ch=read('retour.txt',-1,1,'(A)')
Pour faire une simple liaison série, il suffit de 3 fils : la masse commune, le fil d'envoi des données et le fil de réception des données.
Or les prises habituelles ont 9 broches (et les prises plus anciennes en ont 25). A quoi servent ces autres broches, pouvant être connectées entre elles par des fils ?
Ces autres broches servent (ou peuvent servir) à synchroniser les deux appareils informatiques : que l'un n'envoie des signaux que si l'autre est en état de les recevoir. Dans la pratique, ces autres broches sont très peu utilisées, et on peut les détourner de leur fonction initiale pour réaliser des entrées/sorties logiques.
Certaines broches sont commandables par l'ordinateur, qui peut faire varier leur tension électrique. Ainsi on peut allumer ou éteindre des diodes lumineuses, enclencher ou déclencher des relais...
D'autres broches informent l'ordinateur si elles sont sous tension ou non. Ainsi, on peut détecter un contact.
Pour plus de détails, voir le livre de B. Kainka et H.J. Berndt "Je programme les interfaces de mon PC sous Windows", Publitronic/Elektor 1999.
Une variant de ComSerFich a été réalisée en utilisant la bibliothèque dynamique port.dll (fournie dans le livre cité ci-dessus), et elle peut utiliser ces broches d'état : il suffit de mettre quelques caractères dans le fichier envoi.txt. La contrainte supplémentaire est qu'il faut que cette bibliothèque port.dll soit présente dans le répertoire du logiciel.
Mettre dans le fichier envoi.txt "RTS+", "TXD+", "DTR+" si on veut faire passer ces broches à l'état haut, et "RTS-", "TXD-", "DTR-" pour les faire passer à l'état bas. Attention ! la broche TXD est la broche de transmission des données : on ne peut pas à la fois envoyer des données normalement et commander l'état de cette broche : il faut choisir.
Mettre dans le fichier "envoi.txt" "CTS?", "RNG?", "DSR?" ou "DCD?", et le logiciel met dans le fichier "retour.txt" les chaînes "CTS-" ou "CTS+", ou bien "RNG-" ou "RNG+", ou "DSR+" ou "DSR-", ou "DCD+" ou "DCD-".
En dehors de ces capacités supplémentaires, tout fonctionne comme le ComSerFich normal.