Commande hexa avec mscomm

stolken Messages postés 73 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 1 août 2006 - 20 oct. 2005 à 18:05
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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 ?

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
stolken Messages postés 73 Date d'inscription mardi 19 juillet 2005 Statut Membre Derniè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)

End Sub

Voila
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 oct. 2005 à 19:45
Euh ... tu feras attention aus espaces entre tes valeurs qu'il faut traité tel quel et pas avec la fonction.

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)
0
Rejoignez-nous