simgoku
Messages postés38Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention28 mai 2008
-
13 mai 2008 à 10:43
simgoku
Messages postés38Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention28 mai 2008
-
13 mai 2008 à 15:48
Bonjour a tous,
Je me suis mis récemment au VB6...
Je programme actuellement une interface reliant mon pc a un automate, cependant je rencontre un probléme.
Je souhaite envoyer une trame a l'automate, cette trame doit etre
envoyée en hexa, j'ai donc déclaré un tableau comme ceci :
dim trame(10) as byte
Je veux lui faire prendre des valeurs en hexa, cependant il refuse et
me les passe toutes en décimal, même avec la fonction hex()... D'ou mon
probléme... J'ai déja pensé a déclaré mon tableau en string, mais cela
pose des problémes au niveau de mes paramétres dans les procédures que
j'utilise
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202172 13 mai 2008 à 15:33
ta trame de départ, dans un tableau d'octet
Trame(0) = &H4
Trame(1) = &H3
Trame(2) = &H0
Trame(3) = &H0
Trame(4) = &HFF
Trame(5) = &H10
Trame(6) = &HA
Trame(7) = &HE0
la suite, c'est juste le passage en ASCII/HEXA :
3A => hexa du code ascii du caractère ":"
ensuite, on prend le code ascii du caractère "0" et du caractère "4"
ensuite, on prend le code ascii du caractère "0" et du caractère "3"
ensuite, on prend le code ascii du caractère "0" et du caractère "0"
ensuite, on prend le code ascii du caractère "0" et du caractère "0"
ensuite, on prend le code ascii du caractère "F" et du caractère "F"
ensuite, on prend le code ascii du caractère "1" et du caractère "0"
ensuite, on prend le code ascii du caractère "0" et du caractère "A"
ensuite, on prend le code ascii du caractère "E" et du caractère "0"
ensuite, on ajoutes "0D0A", marqueur de fin de ta trame
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202172 13 mai 2008 à 11:20
bien sur que oui...
l'hexadecimal n'est qu'une representation graphique, dans une base donnée...
elle est même stockée en binaire, en fait... mais l'IDE donne la version décimale, plus claire pour nous, faibles humains.
le tout est que tu lui donne la bonne valeur, le reste...
Vous n’avez pas trouvé la réponse que vous recherchez ?
simgoku
Messages postés38Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention28 mai 2008 13 mai 2008 à 12:03
Oui mais j'avais déja fait le test d'envoyer la trame en hexa et
l'automate me répondait tres bien...Mais quand je l'envoie en décimal
ca ne marche pas... Je vais revoir mon programme, j'ai oublié de
préciser j'envoie toute la trame d'un coup
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202172 13 mai 2008 à 13:26
VB stockes toutes les Strings en Unicode (deux octets par caractères).
en gros, on a :
b o n j o u r
62 00 6F 00 6E 00 6A 00 6F 00 75 00 72 00
Windows le gère, c'est transparent.
reste que pour communiquer avec certaines APIs, ou via Winsock ou MsComm, il te faudra surement passer cela en Unicode (Strconv vbFromUnicode)
en fait, quand j'utilise un dim trame as string, ca marche, mais quand
j'utilise un dim trame as byte, c'est la que ca ne marche plus, il
stocke tout en decimal, alors que quand je l'utilise en string, il les
prend bien en hexa et la trame est bien reconstituée...Je suis obligé
de le déclarer en byte car je m'en sers pour un calcul de checksum..
simgoku
Messages postés38Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention28 mai 2008 13 mai 2008 à 13:57
c'est ce que je compte faire, une coversion juste avant l'envoi...Mais
ca me laisse tout en décimal... par exemple, au début de ma trame je
dois envoyer ":" et il m'envoie 58 (le décimal du code ascii)...
J'ai essayé ca mais ca me retourne toujours une erreur...
simgoku
Messages postés38Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention28 mai 2008 13 mai 2008 à 13:57
c'est ce que je compte faire, une coversion juste avant l'envoi...Mais
ca me laisse tout en décimal... par exemple, au début de ma trame je
dois envoyer ":" et il m'envoie 58 (le décimal du code ascii)...
J'ai essayé ca mais ca me retourne toujours une erreur...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202172 13 mai 2008 à 14:22
tu as le choix des armes...
Dim Trame As String
Dim TrameEnvoi As String
Trame = ":04030000FF100AE0" & vbCrLf
TrameEnvoi = StrConv(Trame, vbFromUnicode)
----------------------
Dim Trame As String
Dim TrameEnvoi() As Byte
Trame = ":04030000FF100AE0" & vbCrLf
TrameEnvoi = StrConv(Trame, vbFromUnicode)
-----------------------------------
Dim Trame As String
Dim i As Long
Dim TrameEnvoi() As Byte
Trame = ":04030000FF100AE0"
ReDim TrameEnvoi(Len(Trame) + 1)
For i = 0 To Len(Trame) - 1
TrameEnvoi(i) = Asc(Mid$(Trame, i + 1, 1))
Next i
TrameEnvoi(i) = &HD
TrameEnvoi(i + 1) = &HDA
simgoku
Messages postés38Date d'inscriptiondimanche 4 juin 2006StatutMembreDernière intervention28 mai 2008 13 mai 2008 à 14:36
Tres bien je pense que ca va m'aider , cependant, les valeurs stockées
dans trame sont en décimal, et je n'arrive pas a les passer en
hexa....Tout reste en décimal , du coup l'automate ne répond pas a ma
trame...J'ai essayé tes deux premiere techniques, mais le résultat est
le même...