Retour à la table des matières
ACQUISITION DE DONNEES PAR LE PORT SERIE SOUS LINUX
---------------
DISCLAIMER:
USE OF THIS WORK IS AT YOUR OWN RISK, I MAKE NO CLAIMS AS TO IT'S RELIABILITY.
THESE SOFTWARES, ACCOMPANYING FILES AND/OR DOCUMENTATIONS ARE RELEASED "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OR MERCHANTABILITY OR ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED.
----------------
CE DOCUMENT EST FOURNI « TEL QUEL » ET IL N'EST DONNÉ AUCUNE GARANTIE,
IMPLICITE OU EXPLICITE, QUANT À SON UTILISATION COMMERCIALE, PROFESSIONNELLE OU
AUTRE. L'AUTEUR NE PEUT EN AUCUN CAS ÊTRE TENU POUR RESPONSABLE DE QUELQUE
DOMMAGE OU PRÉJUDICE DIRECT, INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES
PERTES FINANCIÈRES DUES AU MANQUE À GAGNER, À L'INTERRUPTION D'ACTIVITÉS, OU LA
PERTE D'INFORMATIONS ET AUTRES) DÉCOULANT DE L'UTILISATION DE LA DOCUMENTATION
OU DE L'IMPOSSIBILITÉ D'UTILISER CELLE-CI, ET DONT L'UTILISATEUR ACCEPTE
L'ENTIÈRE RESPONSABILITÉ.
Un exercice de découverte
De nombreux appareils de laboratoire peuvent communiquer par l'intermédiaire d'un port série ("RS-232")
Cet article décrit une manière (rustique et sans application pratique immédiate) de récupérer des données provenant d'un appareil de laboratoire dans un PC fonctionnant avec tomsrtbt, une mini-distribution de Linux qui tient sur une seule disquette.
Cette méthode n'a été testé avec succès pour l'instant qu'avec un CELL-DYN 3200 ABBOTT.
Matériel nécessaire:
Un PC, avec 8 Mo de Ram minimum.
Un cable "null-modem"
Un appareil de laboratoire correspondant par liaison unidirectionnelle par l'intermédiaire d'un port série.
Préparation d'une mini-distribution
Préparez une disquette contenant une minidistribution de Linux:
je conseille tomsrtbt (http://www.toms.net/rb/) parce qu'on peut la paramétrer facilement avec un clavier français.
Vous aurez besoin de déchiffrer le mode d'emploi en d'anglais pour préparer votre disquette.
Bien entendu vous pouvez aussi utiliser un PC sur lequel une distribution "normale" de Linux est installée.
Mode d'emploi résumé de la préparation d'une disquette tomsrtbt, sous Windows:
- téléchargez tomsrtbt-1.7.205.dos.zip (version dos)
- dézipper le fichier dans un dossier temporaire
- redémarrer votre PC en mode MS-DOS
- Placez vous dans le dossier temporaire (commande cd (change directory): cd répertoire pour se déplacer dans le répertoire, cd .. pour remonter d'un répertoire)
- Préparer une disquette de BONNE qualité.
- La disquette va être formaté dans un format spécial de grande capacité. Il y a un risque théorique d'abimer le lecteur de disquette (infime avec un lecteur récent). Manoeuvre à vos risques et périls !
- install
- Si tout s'est bien passé, votre disquette est prête
Essai de Boot
Booter votre PC avec cette disquette
Si tout votre matériel est reconnu, vous êtes sous linux (en fait une version spéciale et aux possibilités limitées, mais sous linux quand même).
Tomsrtbt s'éxécute en mémoire vive, et votre disque dur est totalement court-circuité (vos données habituelles ne risquent absolument rien - rien ne sera modifié sur ce PC sauf si vous utilisez vraiment à tord et à travers les autres utilitaires présents sur la disquette ! - mais les risques de faire une telle fausse manoeuvre par hasard sont infimes).
Loggez vous, c'est à dire à l'invite:
tty1 tomsrtbt login:
tappez "root"
ensuite tapper le mot de passe: par défaut avec tomsrtbt: "xxxx"
Password: xxxx
vous êtes au prompt de root
(si à ce stade ceci est du vraiment peu clair pour vous, c'est par manque de connaissances de base sur Unix. Pour en savoir plus, jetez un coup d'oeil à mes "conseils à ceux qui veulent débuter l'étude de Linux")
Mise en route
Reliez (d'ailleurs, faites ceci avant toute chose, appareil et PC éteints) votre appareil de labo à la prise série de votre PC par un cable "null modem" (dit aussi cable de liaison série - la seule confusion possible à ma connaissance serait avec des cables de rallonge série)
En général, il faudra inhibiber le mode "canonique" qui est un paramétrage par défaut du port série
Pour cela:
# stty -icanon < /dev/ttyS0
ou bien
# stty raw < /dev/ttyS0
# cat /dev/ttyS0 (ce peut être aussi cat /dev/ttyS1 si votre PC à plusieurs ports séries)
Votre PC est en attente de réception de donnée sur son port série.
Faites envoyer des données par votre appareil
En principe les données en question s'affiche sur le terminal du PC.
Debugging:
si ça ne marche pas:
# Ctrl-c (interrompt le programme cat)
# stty < /dev/ttyS0
speed 9600 baud; line = 0;
-brkint -imaxbel
/donne des indications sur le paramétrage du port série
voire
# stty -a < /dev/ttyS0
/donne des indications beaucoup plus complètes.
Pour en savoir plus:
# man stty
Comparez le paramétrage du port série avec ce que vous pouvez trouver dans la documentation de votre appareil de laboratoire.
( en général, on a
9600 bd
Aucune parité
start bit = 1
word length = 8
stop bit= 1)
Récupération des données dans un fichier
Les données s'affichent sur votre écran. Très bien. Vous voudriez
maintenant les récupérer dans un fichier pour les exploiter:
# Ctrl-c (interrompt le programme cat)
# cat /dev/ttyS1 > fic1
Faites envoyer des données par votre appareil (on ne voit
rien, mais les données reçues sont écrites dans "fic1")
(Avec une version de linux plus normale, on pourrait diriger le flux de données en provenance du port série à la fois vers l'écran et vers le fichier, par:
# cat /dev/ttyS1 | tee fic1
Malheureusement ça ne marche pas avec le tee de tomrstbt qui est différent du tee GNU)
# Ctrl-c (interrompt le programme cat)
Introduisez une disquette formaté (win95/98)
# mount -t vfat /dev/fd0 /mnt
# cp fic1 /mnt
# umount /mnt
Récupérer votre disquette
Vous pouver lire votre fichier "fic1" avec un éditeur de texte.
Attention, les terminaisons de lignes sont de type Unix (LF sans CR).
Ceci explique la drôle d'allure dans une application Windows.
Comment exploiter ce fichier ?
Ceci fera l'objet de prochains articles ! Sachez seulement que les manières d'exploiter et de traiter un tel fichier sous linux sont nombreuses et variées, grace à l'architecture et à la philosophie d'Unix.
Un exemple pour un CELL-DYN 3200est donné un peu plus bas.
Allez plus loin
Vous aurez constaté que la récupération du fichier sur disquette est assez "pénible":
Il est possible de simplifier toutes ces étapes en fabriquant une version personnalisée de tomsrtbt.
--------------------
Exemple de personnalisation de tomsrtbt:
description du but à atteindre
Un automate d'hématologie est relié à un PC sous windows.
Ce PC fait partie d'un réseau qui comprend un ordinateur sous Linux.
Le but:
booter le PC windows avec une disquette tomsrtbt personnalisée:
A la fin du boot, et après login, le PC est:
- automatiquement à l'écoute du port série
- tout ce qui arrive sur le port série est copié par l'intermédiaire du réseau dans un fichier sur la machine linux distante (qui fait tourner un serveur NFS)
- la machine linux distante étant en outre munie d'un modem et faisant tourner un serveur ftp, le fichier est récupérable par la ligne téléphonique.
Description:
il faut éditer conformément à la doc tomsrtbt.FAQ les fichiers:
settings.s
IPADDR= votre adresse ip (ex: 192.168.10.5)
NETWORK=adresse en rapport (ex: 192.168.10.0)
NETMASK= en rapport (ex: 255.255.255.0)
PASSWD= le mettre vide, se sera toujours ça de moins à tapper en se loggant
c'est tout
et le fichier rc.custom (après expansion: gzip -d rc.custom.gz):
dans la section cat>profile<<'X'
après stty sane
tappez:
stty raw < /dev/ttyS0
stty raw < /dev/ttyS1
cat /dev/ttyS0 > /mnt/fic1 # ou ttyS1
plus loin, après route add -net 127.0.0.0 lo
tappez
mount -t nfs ADRESSE_IP_DE_VOTRE_ORDI_LINUX_DISTANT:/repertoireNFS/exporté /mnt
# ex: mount -t nfs 192.168.10.2:/home/celldyn /mnt # vous devez avoir configuré votre machine 192.168.10.2 pour qu'elle exporte le système de fichier /home/celldyn par NFS.
plus loin, après:
Select keyboard, ENTER for default (15 seconds): " J/dev/tty1
[ "$J" ]&&loadkeys $J.map
rm P
X
tappez
loadkeys 7.map # charge automatiquement le clavier français
sorter de votre éditeur. Reste à faire:
gzip rc.custom
umount /mnt (ou Ctrl-Alt-Sup)
C'est fini, votre disquette est prète.
Une autre méthode de personnalisation de tomsrtbt, un peu plus complexe, mais qui permet de supprimer l'étape de login - password est décrite sur mon site de documentation Linux.
Quelques essais
CELL-DYN 3200
Il s'agit d'un automate à numérations-formules sanguines distribué en France par Abbott.
La procédure fonctionne relativement bien, à conditions de transmettre les numérations une par une, et pas trop vite.
Parfois (transmissions trop rapprochées?), la transmission se bloque.
Il faut alors réinitialiser la connexion (menu sur l'écran tactile: CONFIGURATION - AUTRES CONFIG - CONFIG ORDINATEUR - ARRET TRANSMISSION - CONFIRMER ARRET)
Un échantillon de programme en PERL permettant d'exploiter les données d'un CELL-DYN se trouve là.
VES-MATIC 20:
Il s'agit d'un petit automate à mesurer les vitesses de sédimentation.
Le site officiel: chercher sur Google.
Cet appareil est pourvu à l'arrière d'une interface série RS232.
Le connecteur est un connecteur à 25 broches décrit comme "standard" dans le manuel.
On observe 4 broches fonctionnelles sur ce connecteur:
Une PIN 2 (TX d'après le manuel)
PIN 3 (RX)
PIN 4 (non mentionnée dans le manuel)
PIN 7 (signal ground)
En pratique, la connection d'un cable null-modem même sur un PC éteint bloque totalement la mise en route du VES-MATIC:
Après contact téléphonique avec le service technique de l'importateur, j'ai appris ceci:
Les seules broches utiles seraient la broche d'envoi des données (TX) qui ne serait pas la PIN2 comme mentionnée dans le manuel, mais la PIN3, et la PIN 7.
J'ai donc bricolé avec 2 connecteurs à souder DB25 femelles un cable adh'oc.
En réalité la connexion PIN 7 VES-MATIC - PIN 7 PC (même PC éteint) bloque tout démarrage du VES-MATIC ( à la mise sous tension).
Je ne sais pas si il s'agit d'un défaut de MON VES-MATIC ou d'un défaut général.
Merci d'avance à ceux qui auraient des informations supplémentaires de me mettre au courant.
Trucs et astuces en vrac:
Si votre appareil est déjà relié à un PC, il est possible avec un cable null-modem "bifide" d'envoyer simultanément les données sur 2 PC (tout au moins je l'ai déjà fait avec un CELL DYN 3000 Abbott.
Si vous rater le choix du clavier français à la fin de la séquence de boot de tomsrtbt, vous pouvez rattraper les choses graces à la commande:
# loadkeys 7.map
Si vous voulez réaliser la récupération de données directement sous Windows, vous pouvez utiliser le programme "Hyperterminal", avec le paramétrage de COM(1) ad'hoc,
ou mieux encore le freeware d'origine coréenne cité dans les liens.
Bibliographie:
en Français:
Un article de Pierre Ficheux:
http://pficheux.free.fr/articles/lmf/serial/
en Anglais:
Serial programming guide for POSIX operating systems:
http://www.easyw.com/~mike/serial/
Retour à la table des matières
12 mars 2005 (suppression liens casses)
rev 1.3