Port Com

Résolu
guisop Messages postés 9 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 15 octobre 2008 - 13 oct. 2008 à 00:43
guisop Messages postés 9 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 15 octobre 2008 - 15 oct. 2008 à 17:56
Bonjour,

Voilà, je suis débutant dans la programmation avec les ports COM:
J'utilise le contrôle MSComm pour communiquer avec une sonde de température et de pression.
Les commandes sont archi-simple: on envoi un "A" pour activer la sonde, la sonde répond par "A", un "P" pour activer le mode pression , la sonde répond par "A" un "M" pour demander la mesure, la sonde répond la valeur! le processus est le même pour la température mais à la place de "P" on met "T" jusque là tout va bien.
C'est du RS232 brutal pas de RTS de CTS etc.
Je sais mettre en situation le contrôle en termes de réglages, d'envoi de chaines, là ou je coince c'est pour récupérer les valeurs.
Je sais que c'est dans la proprieté MSComm1.Input mais j'ai déséperement des chaines de caractères vides. J'ai essayé de recuperer les données en testant la longueur de la chaine (différente de zéro) par l'événement OnComm mais c'est déséperé, je rame.
Pourtant via un terminal ca fonctionne.
Bref, si vous aviez une aide pour m'aiguiller :-s je suis assez preneur, l'objectif est de faire une programme entièrement automatique qui affiche température et pression depuis cette sonde en permamance , donc au sein d'une boucle, quand je saurai récuperer proprement les données, tout ira bien pour la mise en oeuvre!

Bonne journée

Guisop

4 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
13 oct. 2008 à 07:54
bonjour si tu inseres apres chaque envoi un truc du genre
do until reponse = "ceque tu veux"
    DoEvents 'pour redonner la main au PC en attendant la réponse et ne pas bloquer la machine
loop
ton programme bouclera  sur ces deux lignes jusqu'à ce que la réponse arrive et ne passera à l'envoi suivant qu'ensuite

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
3
guisop Messages postés 9 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 15 octobre 2008
13 oct. 2008 à 01:27
(Re) Bonsoir,

J'ai trouvé, en fait mon programme va trop vite!! il faut que je trouve le moyen de temporiser entre chaque ligne!!
pour information voici ce que je vais dans les phase d'interrogation / écoute:

MSComm1.output = "A"  & vbCrLf  'activation sonde (réponse attendue "A" & vbCrLf )
MSComm1.output = "P" & vbCrLf  ' activation mode pression (réponse attendue "A" & vbCrLf )
MSComm1.output= "M" & vbCrLf  'mesure (réponse attendue +1002.4 mbar )
Press.caption = MSComm1.input 'affiche la mesure de pression
MSComm1.output = "T" & vbCrLf  ' activation mode Température (réponse attendue "A" & vbCrLf )

MSComm1.output= "M" & vbCrLf  'mesure (réponse attendue +0021.4 °C )

Tempe.caption = MSComm1.input 'affiche la mesure

Faut que je trouve le moyen de temporiser ça,  un test sur les chaines de caractère doit être jouable, la structure est toujours la même..

bonne nuit

Guisop
0
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
13 oct. 2008 à 07:51
Bonjour,

Ce n'est pas une question de temporisation. Il faut que tu analyse la manière dont tu vas traiter la réception.
Je pense que je plus adequat est de créer un automate.
C'est à dire tu récupéres dans un buffer la chaine de réception, ensuite, tu traite ton buffer tout en continuant à stocker les informations que tu recois.
Donc sur le On_Comm, tu stockes ton buffer, et tu lances ton automate quand tu reçois une information (un caractère particulier) par exemple le caractère retour chariot (chr$(13)).
Tu peux aussi mettre un timer pour calculer un TimeOut de réception ou si tu as une malfonction ou une interruption de réception.
Bon courage.

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
0
guisop Messages postés 9 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 15 octobre 2008
15 oct. 2008 à 17:56
Bonsoir,


Merci ca fonctionne bien maintenant, j'ai désormais des soucis pour exporter le programme mais c'est un autre sujet...

Merci à tous pour votre aide

Guisop
0
Rejoignez-nous