Kurpeus1
Messages postés42Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention21 mars 2007
-
27 oct. 2006 à 20:35
Kurpeus1
Messages postés42Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention21 mars 2007
-
29 oct. 2006 à 17:34
Bonjour a tous.
Voici mon problème. Je dispose d'un terminal de lecture de codebar communiquant par le port série. J'essaye tant bien que mal de communiquer par le port série avec ce terminal. N'étant pas un grand expert en programmation C, j'utilise un code source trouvé sur ce site : www.cppfrance.com/codes/FONCTION-GESTION-PORT-SERIE-OUVERTURE-EMISSION-RECEPTION_11115.aspx
A priori, la fonction marche plutôt bien, j'arrive a envoyer des données sur le port com. Je ne connais pas le code souce du terminal. Pour comprendre son fonctionnement, j'utilise un sniffer de port comm pour comprendre son protocole de communication.
Le principe est plutot simple, on envoie des caractères au terminal qui réponds et lance une procédure d'upload si on lui parle gentillement. Plutot que de faire de grands discours, je vais mettre le début des captures d'échange pour le programme original et le mien.
voici le début de l'échange entre le terminal et le prog constructeur : Port opened by process "AG8000N.exe" (PID: 260)
Request: 27/10/2006 19:54:40.32564 (+215.7302 seconds)
0F 0F .. nswer: 27/10/2006 19:54:40.95564 (+0.1001 seconds)
et voici l'échange entre le terminal et mon programme :
Port opened by process "test.exe" (PID: 1688)
Request: 27/10/2006 20:24:46.25464 (+45.4153 seconds)
0F 0F 07 36 51 52 45 41 44 ...6QREAD
Port closed
Les donnes semblent groupées, pourtant je les envoies identiquements a ci dessus.
En rédigeant ce message je me suis rendu compte qu'entre chaque groupe de données il y avait une renégociation des
paramètres de connexions (qui n'apparaissent pas ici puisque que ces échanges se font sur les broches de controles.
Seul problème je ne sais pas comment renégocier ces paramètres sans fermer le port de communication
( si la est la réponse )
juste pour information voici la renégociation entre chaque groupe de données : attention c'est assez indigeste :
Kurpeus1
Messages postés42Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention21 mars 2007 27 oct. 2006 à 20:40
Ah oui au fait j'ai juste oublié de dire que j'utilise les mêmes paramètres que ceux du terminal c'est a dire 115200 bauds, pas de parité, pas de controle de flux, et 1 bit de stop.
Kurpeus1
Messages postés42Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention21 mars 2007 28 oct. 2006 à 13:50
Le problème n'est pas sur les caractères que j'envoie puisque qu'ils sont identiques a ceux émis par le programme constructeur. Soit dit en passant, les lignes rouges représentent les data que j'ai émis sur le canal série, et en bleue celles reçues.
Le truc c'est qu'entre chaque paquet de données émit, il a y une sorte de renégociation des paramètres de transmission que je n'ai pas chez moi
Sinon, j'ai bien essayé de rajouté des caractères de début et fin mais cela n'a aucun effet.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 28 oct. 2006 à 14:26
Au lieu de passer par une cource de cppfrance dont tu ne sais pas si elle est 100% compatible essaye deja avec le HyperTerminal de windows.
Tu bosses sur quel marque de douchette au fait ?
Shell
Vous n’avez pas trouvé la réponse que vous recherchez ?
Kurpeus1
Messages postés42Date d'inscriptionlundi 16 octobre 2006StatutMembreDernière intervention21 mars 2007 29 oct. 2006 à 17:34
Alors en faite, je ne suis pas non plus un pro des codebars. le terminal est compatible avec un paquet de normes différentes. Maintenant pour l'hyperterminal, le programme de capture des datas sur le port com me permet d'envoyer des données dessus directement depuis le clavier. J'arrive à faire réagir le terminal si je rentre des charactères.