J’ai un géné pilotable via un port USB (en fait une liaison série classique).
J’ai installé un « USB to UART Bridge » qui transforme la liaison USB en liaison série sur le port COM4.
Je voudrais envoyer des séquences dans le genre :
début
fréquence = f1;
attendre xxx ms;
fréquence = f2;
attendre xxx ms;
fréquence f3;
attendre xxx ms;
…
…
aller à début
Je cherche donc à écrire ce petit programme qui permettrait d’envoyer des séries de commandes au géné afin de le transformer en géné wobulé.
Ma question est : comment envoyer des caractères ASCII sur le port série COM depuis un programme sous XP ?
Qbasic fonctionne encore sous XP, je ne sais plus si il était encore fourni avec XP mais on peut toujours le télécharger chez microsoft (voir le lien dans wikipédia fr.wikipedia.org/wiki/QBasic) ou ailleurs. QB64 est une version récente gratuite compatible avec qbasic/QuickBasic qui tourne sur tous les Windows récents et il existe une myriade d’autres Basic gratuits, Visuel ou pas, orientés objet ou pas pour le prix d’un téléchargement. En ce qui concerne Qbasic, il est seulement possible d’utiliser COM 1 et 2., QB64 semble capable d’ouvrir n’importe quel numéro de port COM : qb64.net/wiki/index.php/OPEN_COM
Le Basic est sans doute le langage le plus simple pour ce genre de tâches.
Ah OK, merci !
Open, print #, input #, close : ça me rappelle « le bon vieux temps » quand je travaillais chez Fluke pour écrire des programmes de pilotage d’instrumentation de mesure en IEEE-488 !
Pourquoi COM4 ici, je me le demande…
Je vais voir tout ça.
Via le gestionnaire de périphériques, je peux changer le COM4 en COM2 et
je peux encore piloter le géné en mode "ligne de commande".
Yapuka télécharger un basic interprété avec les instructions de pilotage de ports COM1/COM2
comme tu me l'as conseillé.
Le COM1 est déjà utilisé, je me demande bien par quoi (l'écran ?)...
J’arrive à piloter le géné avec l’interface écran fournie par le constructeur, sur le COM4 ou le COM2.
Mais ça ne fait qu’un « programme » d’1 seule ligne pour piloter le géné.
Avec qb64, j’ai essayé
10 OPEN « COM2:9600,n,8,1, » FOR OUTPUT AS #4
20 PRINT #4, « :01,w210,000\n »;
30 CLOSE #4
35 PRINT « zut »
la chaîne :01,w210,000\n ne rentre pas dans le géné car il y reste insensible.
Avec l’interface écran fournie par le constructeur, le géné répond.
Le « zut », lui, apparaît bien à l’écran :mrgreen:
Dicton du jour :
RS232, t’en perds tes cheveux :mrgreen:
Et c’est rien de le dire
Je compatis
Quand c’est pas dans le câblage, c’est dans le paramétrage
Hum, la phrase dans la doc de qb64 ;
« Currently, QB64 only supports OPEN FOR RANDOM access using the GET/PUT commands in BIN mode! »
n’est pas très claire mais il se pourrait que « OPEN FOR OUTPUT » ne soit pas encore supporté.
Les exemples donnés n’utilisent que open for random.
Essayer :
dim Z$ = « :01,w210,000\n » as string *14 (je ne suis pas trop sur de la longueur)
OPEN « COM2:9600,n,8,1,BIN, » FOR RANDOM AS #4
…
PUT #4,Z$
…
Enfin, comme d’habitude, rien n’est jamais vraiment simple et le basic n’était peut être pas une si bonne idée que ça, aujourd’hui le moindre programme devient infernal.
Oui, mais l’IEEE488, c’était après !
En assembleur avec un 6850 c’est le pied la RS232, quand on doit passer par les routines du DOS et le basic, c’est moins le pied, perso j’ai toujours associé l’oscillo, au moins pour voir si ça « sort » quelque chose
Effectivement, un coup d’oscillo pour voir, ce n’est pas bête…
Mais pas facile avec des prises USB.
Avec l’hyperterminal, la commande ligne à ligne passe à condition de remplacer le « » par un « _ »… Curieux, même touche mais un « Alt gr » en supplément pour le « ».
J’ai bien entendu fait la même modif’ dans mon bout de programme… mais ça ne marche pas.
J’ai aussi joué avec des CR LF, sans succès.
Intéressant…
Quel est le type de PC ? un clavier de portable ne permet pas toujours de générer les caractères que l’on pense, il faut parfois un pavé numérique.
Si c’est un PC de bureau, j’essayerais d’installer une carte pour avoir une vraie sortie RS232, la conversion vers l’USB ne m’a jamais vraiment convaincu, de plus il est beaucoup plus facile de brancher un oscillo sur une prise SUBD 9 ou 25 broches.
Le géné (MHS-2300A) a un port USB et le port « COM » du PC est un USB to Uart Bridge de Silicon Labs.
Bon, on n’a pas à se battre avec les pin 2 et 3 et les pins de handshake !
Si j’arrive à piloter tout ce bazar avec l’hyperterminal, je devrais pouvoir le piloter par un programme.
J’ai aussi ajouté une routine de traitement de code erreur dans mon programme : pas d’erreur retournée !
Doit y avoir un piège quelque part.
Il me faudrait un « Datascope » pour choper les caractères ASCII qui sortent du PC… comme dans les temps jadis…
Si c’est prévu en USB, c’est vrai que ça simplifie, mais pourquoi tourner à 9600 bds ?
Un cable USB, c’est peanuts, alors un coup de cutter et 4 ou 5 bornes avec le blindage, ça permet de visualiser à l’oscillo et ça n’est jamais perdu
Je ne crois pas, voir l’exemple 3 de la doc (qb64.net/wiki/index.php/OPEN_COM), Byte4 est une chaine de caractères de longueur fixe, concaténation de 4 chr$(). Selon la doc de QuickBasic, la différence entre ASCI et BIN porte sur le traitement du LineFeed, les retours chariot forcés en fin de ligne et le remplacement de TAB par des Espaces.
J’ai placé la doc de Open Com ici : demo.ovh.eu/download/5205df84ba9 … en_com.pdf
Il s’agit de la doc de QuickBasic, je ne pense pas qu’il y ait de différences avec Qbasic, avec QB64, par compte, c’est pas trop clair.
9600 bds : car j’avais commencé en QuickBasic qui semble limité à cette vitesse, d’après ce que j’avais lu.
J’ai coupé un câble USB à l’une de ses extrémités et l’ai dénudée. Je vais regarder au scope ce qui sort du PC.
Par contre, je pense que laisser la sortie USB du PC « en l’air » n’a pas de sens.
Donc il faut que je dénude l’autre extrémité et que je soude le tout, fil à fil.
En 1 mot, il faut brancher l’oscillo en // sur la ligne, sur chacun des 4 fils, à tour de rôle.
L’un des 4 fils doit être le « Transmit » TX…
Il y a un fil rouge et un fil noir puis 2 plus fins : un vert et un blanc (plus le blindage : tresse et feuillard).
Tiens, ça me rappelle tout d’un coup la fameuse « jonction éclatée » du RS-232C !
RANDOM : oui, j’avais essayé mais rien de nouveau.
Je vais essayer « Hello ».
Turbo Basic Borland : gère-t-il les ports COM ?
qb64 : je pense que l’on peut compiler, à voir.
Bytes : je vais revoir ça et essayer. Et lire la doc’ de plus près… Unix : ah oui, humour…