[Delphi] port com - transmition en binaire plutôt que par caractères

port com - transmition en binaire plutôt que par caractères [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 21-08-2007 à 01:02:15    

Salut à tous
 
j'ai un problème pour envoyer un checksum avec le Tcomport
 
Quand on envoi ou reçoit avec le composant comport de delphi on envoie et reçoit toujours uniquement des caractères d'après ce que j'ai pu trouver???
 
j'ai des paquets de donées à envoyer par le port série (en caractères normaux ça ne gène pas) malheureusement le dernier octet de ce paquet est le checksum de chaque octets (en integer ou byte bref) et forcément si je le convertit en char ça donne portnawak donc à chaque fois le paquet est bien envoyé mais pas le checksum...
 
n'y a-t-il pas une autre façon?
 

Reply

Marsh Posté le 21-08-2007 à 01:02:15   

Reply

Marsh Posté le 21-08-2007 à 13:04:08    

Il est possible que le Tcomport utilise le protocole xon/xoff qui était assez populaire, et qui utilise des caractères spéciaux dont le code est en dessous du code de l'espace. En conséquence, l'envoi de caractères binaires pourrait perturber la gestion du transfert. Dans ce cas, il n'y aurait pas d'autre solution que de convertir le checksum en une petite chaine de caractères normaux.

Reply

Marsh Posté le 21-08-2007 à 19:58:00    

salut merci pour cette info, si c'est le cas, les boules parceque je n'ai pas le choix, suis obligé de le faire sur un seul caractère (ou octet quoi) la taille du paquet est toujours fixe et j'peut rien faire du coté du recepteur
 
après je sais pas trop pour le xon/xoff surement oui
 
si le checksum correspond correspond à: a,A, B ou autres ça roule mais si il correspond à un "." (un point) il peut avoir beaucoup de valeures  :sweat: et effectivement en dessous des caractères normaux
 
j'essaye d'immiter des programmes qui existent c'est donc fasable mais sont ils fait en delphi ??? et avec le Tcomport???
 
d'un autre coté j'ai déja reussit à envoyer avec des checksums bidons le recepteur reçoit donc bien le probème ne vient peut être pas de là  :??:
 
j'ai déja comparé mes checksum avec ceux envoyés avec les autres programmes et ils sont tous ok
 
pas d'autre idées ?


Message édité par Flagad'aware le 21-08-2007 à 20:04:19
Reply

Marsh Posté le 21-08-2007 à 20:59:39    

Rahlala j'ai réussi en utilisant:
 
comport.write(const buffer: non typé ; count:integer)  [:athlonxp2100+]  
 
au lieu de :
 
comport.writestr(const str:string)...
 
ce qui évite au passage pas mal de code inutile :)
 
ouélé au cas où qu'ça peut servir à d'autres

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed