stolken
Messages postés73Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention 1 août 2006
-
20 oct. 2005 à 18:05
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
21 oct. 2005 à 19:45
Salut tt le monde,
J'aimerai envoyer une commande hexa vers un pic via le port serie, j'utilise l'ocx mscomm.
La commande à envoyer est une commande hexadécimale.
Il semble que c'est mscomm qui me transforme la commande hexa en chaine ascii.
Je pense cela car c'est ce qu'il fait avec l'ATR (Answer To reset), en effet je ne recois pas de l'hexa mais de l'ascii qui correspond à l'ATR une fois convertit en hexa.
Il y a une option "inputmod" pour choisir le mode binaire/text mais c'est seulement pour la réception. Comment faire pour eviter que mscomm modifie la commande ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 20 oct. 2005 à 18:54
Salut
De toute façon, ce sont des Bytes (entre 0 et 255) qui transitent sur la ligne.
Donc, tu reçois des Bytes. Selon la méthode que tu utilises pour les lire, il faudra peut-être, en effet, convertir les Hexa en Décimal.
Déc -> Hexa = commande Hex
Hexa --> Déc = Val("&h" & "AB")
Il faudrait nous en dire plus sur la manière dont tu émets et tu reçois pour t'aider ...
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
stolken
Messages postés73Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention 1 août 2006 20 oct. 2005 à 19:34
Voici mon code de reception :
Private Sub MSComm1_OnComm()
donnée = MSComm1.Input 'mets les donnée reçu dans la variable "donnée"
For i = 1 To Len(donnée)
Text4.Text = Text4.Text & " " & Hex(AscB(Mid(donnée, i, 1))) 'convertit 'caractère par caractère en code ascii puis en hexa
Next i
End Sub
Le code pour envoeyé une commande :
Private Sub envoyer_Click()
MSComm1.Output = Text1.Text 'text1.text contient les données à envoyé (ex : BC B0 09 E0)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 21 oct. 2005 à 19:44
Salut
Ok, je comprends mieux ta question.
En fait, quand tu émets, tu envoies "BC B0 09 E0"
En réalité, tu envoies les codes ascii de B de C de B de 0 ... et pas la valeur hexa B C ou 0 ...
Il faut donc aussi que tu convertisses ta chaine en VALEURS hexadécimales :
Chaine = ""
For r = 1 To Len(Text1.Text )
Chaine = Chaine & Chr (Val("&h" & Mid(Text1.Text , r, 1)))
Next r
MSComm1.Output = Chaine
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)