guisop
Messages postés9Date d'inscriptionsamedi 1 février 2003StatutMembreDernière intervention15 octobre 2008
-
13 oct. 2008 à 00:43
guisop
Messages postés9Date d'inscriptionsamedi 1 février 2003StatutMembreDernière intervention15 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!
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 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
guisop
Messages postés9Date d'inscriptionsamedi 1 février 2003StatutMembreDernière intervention15 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:
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 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 -- <