Lire port COM en VBA Excel via port.dll ou rscom.dll

Signaler
Messages postés
2
Date d'inscription
mercredi 12 mai 2010
Statut
Membre
Dernière intervention
15 février 2011
-
Messages postés
2
Date d'inscription
mercredi 12 mai 2010
Statut
Membre
Dernière intervention
15 février 2011
-
Bonjour,

J'essais de faire communiquer un fichier Excel avec un appareil de labo via un port COM.
Via mes recherches ici et sur d'autres sites, je suis tombé sur port.dll et RScom.dll qui me semble pouvoir répondre à mon besoin.
Avec l'une comme l'autre, j'arrive a envoyer des infos d'Excel vers le port COM et les lires sur l'hyperterminal.
Je bloque dans l'autre sens : recevoir des données sur le COM et les récupérer avec Excel. (j'ai du mal à comprendre les histoires de buffer, timesout et readbyte). Je comprends que je dois boucler tant que l'info n'est pas là, mais je ne sais pas trop comment construire le test de la boucle, où mettre la lecture, et comment sortir de la boucle et reformer le mot (ou utiliser readstring ?). Faut il recourir au timeout, delay ???
Pouvez vous me donner un coup de pouce sur ma boucle de lecture ?
J'envois 2 à 4 caractères, et mon appareil me répond 4 à 8 caractères en fonction de ma question.

Merci beaucoup

1 réponse

Messages postés
2
Date d'inscription
mercredi 12 mai 2010
Statut
Membre
Dernière intervention
15 février 2011

Bon, je progresse un peu.
En fait pour faire mes tests j'utilisais Excel d'un coté, et l'hyperterminal windows de l'autre. Mon Pc portable n'ayant pas un seul port COM, j'utilise un émulateur de port relié par un calble croisé : com0com
http://com0com.sourceforge.net/

Il semble que mon hyperterminal ou que com0com soit mal configuré: quand je frappe un caractère dans l'hyperterminal, ça rame un peu avant de pouvoir en taper un autre, et rien n'apparait coté Excel.

Me doutant d'un truc, j'ai essayé de connecter un périphérique sur un COM (via adaptateur usb rs232) qui envoi des données sans prendre en compte la gestion de flux, il pousse les données. Et bien là, READBYTE arrive bien à lire les données. Il reste à mettre tout ça en forme.

là où je bloque encore, c'est que j'arrive à lire les données entrant que lorsque le flux à déjà commencé, et le programme plante quand le flux est terminé (READBYTE renvoit -1) j'ai essayé un do while qui sort quand j'ai -1, mais il semble que, en même qu'il renvoit -1 READBYTE provoque une Error5...
Comment gérer l'attente avant le démarrage du flux ?
Comment gérer la fin du flux sans erreur arretant le code ?

Enfin, plutot que de réassembler les bytes en "phrases" peut on utiliser readstring ? (j'imagine qu'il faut alors utiliser le buffer, mais là je connais pas du tout)

Merci