Le Voltcraft VC670 connecté par son câble RS232 DB-25 d'origine, via un adaptateur DB-25/DE-9
Avec cet appareil, il faut en premier lieu activer la transmission vers l'ordinateur en maintenant la touche "HOLD" pendant une à deux secondes. Après le second bip, un symbole spécique apparait à l'écran pour indiquer que la transmission activée.
Bizarre comme symbole, non ?
DB-25 DE-9 Signal .-------. | |------ 3 2 RXD | |------ 20 4 DTR | |------ 4 7 RTS | | | |------ 2 3 TXD | |------ 1 - Shield ground | __/ \--/ | | | | | |
Extrait de la documentation technique du VC670, la liaison est (heureusement !) opto-isolée
Pour fonctionner, RTS doit être maintenu à une tension négative (pour le pull-down) et DTR à une tension positive (collecteur du photo-transistor).
Le manuel donne du code BASIC en exemple pour ouvrir le port série :
OPEN "COM1:4800,n,7,2,rs,cs,ds,cd" FOR RANDOM AS #1Ce qui est bien gentil, ça aurait très bien pu être du Cobol. Sous Linux, pour tester la liaison avec picocom on peut taper :
$ picocom --baud 4800 --raise-dtr --lower-rts --databits 7 --imap crcrlf /dev/ttyUSB0Comme on ne fait que recevoir et jamais transmettre, il est inutile de spécifier la durée de 2 bits de stop. En python, rapidement, on pourrait coder quelque chose comme ceci :
import serial with serial.Serial("/dev/ttyUSB0", 4800, bytesize=7) as ser: ser.rts = False ser.dtr = True while(True): string = ser.read_until(b'\r').decode('ascii').strip() if len(string) == 13: print(string)Ou alors, comme cela :
import serial with serial.Serial("/dev/ttyUSB0", 4800, bytesize=7) as ser: ser.rts = False ser.dtr = True string = "" ser.reset_input_buffer() while(True): b = ser.read() try: c = b.decode("ascii") if c != "\r": string+=c else: if len(string) == 13: print(string) # OK string = "" except: continueLes trames font toujours 14 caractères de long (13 sans le retour chariot), c'est spécifié dans le manuel. Voilà quelques trames obtenues en pressant un peu au hasard sur les boutons des différentes fonctions :
AC 0.001 V AC 0.001 V DC 000.1 mV DC -005.9 mV DC -012.0 mV DC -018.0 mV AC -02.14 mA AC 00.84 mA AC 00.70 mA AC 00.60 mA AC 0.052 V AC 0.023 V OH 00.20MOhm OH 40.00MOhm OH 40.00MOhm FR 0.065 KHz FR 2.545 KHz FR 0.660 KHz FR 0.066 KHz FR 0.066 KHz FR 0.068 KHz AC 0.019 V OH 00.18MOhm OH 40.00MOhm CA 4.000 nF CA 0.495 nF DI 0228 mV DI 0275 mV DI 4000 mV
Cette image - réalisée avec un scanner car je ne disposais pas pas d'APN à l'époque - date du début des années 2000 !
Il est assez facile de couper le câble et de le brancher directement à un convertisseur USB-TTL série : il faut brancher l'émetteur de l'optocoupleur à la masse (au lieu de RX), et le collecteur sur RX (au lieu de DTR). Il suffit alors d'ajouter une résistance de pull-up dans le câble (de 10kΩ par exemple) entre RX et l'alimentation positive fournie par l'adaptateur usb-ttl. Il n'y a plus besoin de régler DTS et DTR en logiciel pour l'alimentation. J'ai fait la modification en mars 2024.