Programme pour piloter un géné via port USB?

Bonjour,

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 ?

Bonjour,

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.

Bonjour JeffM,

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’ai essayé qbasic mais ça monopolise 100% du processeur à cause de ntvbm.exe.

Je vais essayer qb64 : ça télécharge…

Attention, ntvbm.exe semble un fichier installé par un virus (le ver W32/Rbot-CKP ).

oups, autant pour moi, c’était ntvdm.exe…
désolé…

bonjour
pour tester la connexion rs232, il y a aussi hyperterminal (au moins sous XP)

vous avez com4 car les com1 et 2 sont peut-être natifs sur votre carte mère
(les avez-vous activés dans le bios ?)

cordialement

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 :laughing:
Je compatis :wink:
Quand c’est pas dans le câblage, c’est dans le paramétrage :unamused:

Patrick

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.

Pour rire un peu, voir la page 215 « the evolution of a programmer » du « Unix Hater Handbook »
csf.ac.at/fileadmin/user_upl … ndbook.pdf

D’après le help en ligne, le open « ascii » devrait fonctionner sur un port COM.
En BIN, il faut transformer la chaîne ASCII en binaire, je suppose.

Bon je vais essayer avec le hyperterminal !


Pour Bricolou, oui c’était plus sympa avec le bus IEEE-488 !

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 :wink:

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.

Pfuuu… galère !

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.

Patrick

PC bureau sous XP.

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 :wink:

Sur ce, à suivre et bonne fin de WE,
Patrick

Bonjour,

Peut être en essayant RANDOM qui autorise l’utilisation du port COM dans les 2 sens.

Essayer d’envoyer ‹ Hello › et faire une tempo pour attendre une réponse.

Je dois avoir un Turbo Basic Borland qui est la crème des Basics parce qu’il est compilé.

Tx

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.

Bonjour,

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…

Merci à tous.
Bon dimanche.