missceline33
Messages postés42Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention 8 février 2007
-
15 nov. 2006 à 10:33
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 2010
-
15 nov. 2006 à 12:43
Bonjour,
je cherche à faire communiquer mon application avec un laser.
Par hyperterminal tout fonctionne correctement mais par mon progrmme un problème apparait.
Lorsque j'envoie mes commandes l'appreil comprend et execute et il me
retourne une réponse et c'est cette réponse qui ne fonctionne pas
toujours.
Pendant x tentatives cela va fonctionner correctement et la x+1ème ca
ne marchera pas, la chaine de retour contient soit des caractères
étranges ?# soit des doublement de lettres fire devient firre ou ffire.
Mais le coup suivant tout remarche correctement.
Est-ce quelequ'un aurait une idée, des suggestions...
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 15 nov. 2006 à 10:45
Salut,
Bon, a premiere vue ca ne va pas forcément etre facile a résoudre, sachant que pour nous ce comportement sera dur a reproduire ^^
Par contre, si tu pouvais nous donner :
- La marque du matériel (douchette ?) utilisé.
- Le type de connexion (bluetooth ?)
- Les bouts de code incriminés
missceline33
Messages postés42Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention 8 février 2007 15 nov. 2006 à 11:03
En fait, il s'agit d'une connexion RS232 entre un PC et un laser.
Dans la documentation du laser ils disent:
RS232 communication parameters are
9600 BAUD, 8 bits, 1 stop bit, no parity
The commands via RS232 can be sent with maximum rate of 20 Hz. The
connection is working in half duplex without Xon, Xoff and RTS CTS.
The answer from the laser consists in "CRLF" followed by 15 caracters.
Ca c'est ce qu'on m'a fourni.
Dans mon code, j'ai fait plusierus tentatives pour la méthode de lecture:(car j'utilise la classe serialPort de C# 2005)
readLine je ne peux pas car je 'ai pas de caractère de fin de ligne particulier
read, readExisting, readChar, readByte.....certaine méthode font même
planter l'application dans le sens ou la fonction appelée lors de la
reception de données n'est pas déclenchée.
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 15 nov. 2006 à 12:43
les méthodes soi disant non appelées font elles une opérations telles que :
1 - interactions avec un IHM
2 - lancer un timer system.windows.forms
3 - euh jai un trou...enfin yen a dautres
si c'est le cas, il se peut que cela soit bien lancé, mais seffectue dans le thread pool et plante de manière totalement transparente pour toi. dans ce cas il faut que tu utilise le cross threading pour etre sur de ce qui se passe.
ensuite :
The connection is working in half duplex without Xon, Xoff and RTS CTS.
je ne te voie pas régler ces paramètres dans la gestion de ton instance de serialport
ensuite, es tu sur a 200% que par hyperterminal tout va bien? cest peut etre tout simplement le périph distant qui a des problemes demission, le cable qui est endommagé, le port qui merde, ou que sais je encore....
dans ta doc est tu sure que le caractères #? (ou autres trucs bizzarres) ne sont jamais censés etre envoyés?
sinon il me semble que les caractères peuvent etre transformés a la reception par un simple mauvais paramétrage du port com (pas impossible).