cs_bentic
Messages postés63Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention11 janvier 2013
-
12 juil. 2005 à 23:32
cs_bentic
Messages postés63Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention11 janvier 2013
-
19 juil. 2005 à 21:08
Bonsoir
Je me tourne vers vous car je suis incapable de faire ce genre
de chose. Exist-il une routine pour capturer un trame arrivant sur le
port RS232 sans avoir tout un pacquet de symbole qui ne sont pas utile
(l'emision est le protocole VT100 au cas) Si oui merci pour le coup de
main.
steb359842
Messages postés69Date d'inscriptionsamedi 5 juin 2004StatutMembreDernière intervention24 janvier 2008 13 juil. 2005 à 01:06
J'ai pas vraiment compris la question mais je peut te conseiller d'utiliser le composant MScomm32 qui permet de faire la liaison avec le port serie...
Celui ci à un événement du nom de "onComm" qui s'exécute lors de l'arrivée de donnée. Il à comme paramètre les donnée envoyée par l'emetteur... au format string
cs_bentic
Messages postés63Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention11 janvier 2013 13 juil. 2005 à 06:53
C 'est ce que j'ai fais mais lors de la reception qlq fois je reçois
des caracteres qui non rien a voir, genre des ???!!! ou des ronds des
carres. En discutant avec des programmeurs sur le probleme ils m'ont
parler d'une reception de trame.
philippe laschweng 1
Messages postés278Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention13 avril 20132 13 juil. 2005 à 08:14
Les caractères que tu recois sont certainement codés en Ascii, c'est pour cela que tu observes tous genre de caractéres. Il te suffit alors d'utiliser lafonction Asc
Tu parles de trame, tu dois donc avoir sur tes trames (envoyées en série) un indicateur de paquet séparant chaque trame l'une de l'autre. Cet indicateur est un caractère spécial ou un groupe de caractères (exemple Y*).
Il te suffit alors de stocker dans un string brut de blanc ce que tu récupéres de ta liaison série, et chercher avec la fonction InStr le premier indicateur trouvé dans la chaine et le second indicateur de ta chaine. Puis, avec la fonction Mid tu récupére le string entre tes deux indicateurs et tu as récupéré une trame. Aprés tu peux faire un rafraichissement si tes paramètre évoluent
Pour rapelle un caractère ascii est codé sur 8 bits. Aprés faut bien savoir ce que tu dois récupérer sur la liason série (paramètres héxa ou décimal) et surtout l'indicateur ou en-tête paquet!
En espérant que ca puisse t'aider et que j'ai compris ce que tu veux faire
cs_bentic
Messages postés63Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention11 janvier 2013 17 juil. 2005 à 21:51
Merci de ton aide Philppe, tu as bien compris ma question reste que la prog n'est pas evident quand on est autodidacte
En fait apres avoir discuter c'est bien ça qu'il me faut, un rafraichisement en permanence car les parametres peuvent evoluer a ma demande et en fonction de la carte. As-tu un exemple de routine sous la main ou un lien qui puisse m'aider STP.
Merci pour l'aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
philippe laschweng 1
Messages postés278Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention13 avril 20132 17 juil. 2005 à 23:09
Salut ,
Tu places un objet MsComm sur ta feuille (MsComm32.OCX) si t'as des probs là dessus fais moi signe. (Dans l'exemple je nomme cet objet donnees !)
Dim Tamp_Rec as String
Private Sub Form_Load()
'Vide le buffer
donnees.InputLen = 0
' Utilise COM(X)
donnees.CommPort = <numéro du port COM utilisé>
'Protocole de Communication (SANS)
donnees.Handshaking = comNone
' 19200 bauds, pas de parité (No), 8 bits de données et 1 bit d'arrêt.
donnees.Settings = "19200,N,8,1"
donnees.InputMode = comInputModeText 'Mode Texte
' Ouvre le port.
donnees.PortOpen = True
End Sub
Private Sub Timer1_Timer()
If donnees.InBufferCount > 0 Then
donnees.InputLen = donnees.InBufferCount
Tamp_Rec = Tamp_Rec & donnees.Input
Text1.Text=Len(Tamp_Rec)
End If
End Sub
Private Sub Timer2_Timer()
Tamp_Rec = ""
End Sub
En gros, on récupére dans le String Tamp_Rec les caractères lus par la liaison série. On ne peut pas afficher directement ces caractères dans un textbox pour les voir "visuellement" car il y'a des grosses surprises et des gros bugs (j'en ai fais l'expérience). Dans Text1.Text tu lis le nombre de caractères que tu recois, normalement ca doit défiler assez rapidement et se remettre à 0 toutes les 800ms (Timer2) afin de rafraichir tes données. Voilà dans Tamp_Rec tu vient de récupérer tes caractères en Ascii !!
Maintenant faut savoir sur quelle vitesse paramètrer l'objet MsComm (9600bds, 19200bds....) ca ca dépend de ta machine sur laquelle tu vas récupérer tes données et là peut pas t'aider renseignes toi.
Ensuite faut que tu saches comme je te l'ai expliqué dans le 1er message quel est ton identificateur de paquet (ou séparateur) et surtout quel caractère le représente pour pouvoir le chercher dans Tamp_Rec
Enfin essayes déjà de comprendre ca, en espérant que je n'ai rien oublié ou fais de faux!
Contacte moi si t'as des questions !
cs_bentic
Messages postés63Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention11 janvier 2013 18 juil. 2005 à 23:44
J'ai lu et re-lu pas facile. En fait j'otiens un compteur, du coup je lais accouplé avec ma bidouille pour obtenir la meme chose pas de chance. Je continu a chercher.
Au cas, je peux te faire parvenir ma bidouille si tu as du temps de dispo