basamir
Messages postés335Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention 8 mars 2008
-
30 oct. 2007 à 19:12
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
30 oct. 2007 à 23:46
bonsoir,
je vous prie de m'indiquer le chemin pour envoyer en pérmanence une trame à un terminal API en VB.
je communqiue avec mon terminal via un port com (2400, 8, n, 1).
la trame que mon terminal comprend est la suivante:
50|7octets|0D
merci d'avance!
Le savoir est la lumière de nous tous, partageons le!
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 oct. 2007 à 20:23
Re
Bah si, tu as tout ce qu'il faut !
Sous quelle forme as-tu les infos dans ton programme VB ?
En hexa ou en chaine ?
Tu n'as que l'embaras du choix : Suffit de faire un .Output :
Chaine
.Output "P+00200" & vbCr
Hexa
En supposant que tes données Hexa sont dans un tableau de type String (d'index 0 à 8)
Conversion des données Hexa en chaine :
Trame = ""
For r = 0 To 8
Trame = Trame & Chr(Val("&h" & monTableau(r)))
Next r
.Output Trame & vbCr
Car :
Décimal = Val( "&H" & ValeurHexa) ' Val( "&H41") donne 65 Chaine Chr$(Décimal) ' Chr$(65) "A" Décimal Asc(Chaine) ' Asc("A") 65 Hexa Hex(Décimal) ' Hex(65) &H41
Suffit de choisir dans quel 'langage' tu veux causer
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 oct. 2007 à 19:34
Salut
Si tu es en VB6, il te suffit d'ajouter le composant (Ctrl-T) nommé "Microsoft Comm Control 6.0" à ton projet.
Ca ajoute une icone en forme de téléphone à ta barre d'outil.
Place ce composant sur ta forme.
Voilà, tu as l'objet qui te permettra de t'adresser à ton port COM.
Pour le reste :
- Regarde dans l'aide
- Cherche parmi les codes du site ceux qui parlent de RS232
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
basamir
Messages postés335Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention 8 mars 2008 30 oct. 2007 à 19:41
Merci jak tout cela est déjà fait, la preuve c'est que avec hyperterminal je reçois la chaine de caractère par exemple P+002000.
par contre pour mon API, celà ne fonctionne car ce dernier reçoit une trame en Hexa pour le meme exemple ça sera:
50 2B 30 30 32 30 30 30 30 0D
merci
Le savoir est la lumière de nous tous, partageons le!
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 oct. 2007 à 19:54
Re
(API = Automate industriel ?)
Sur un port comm, les données transitent toujours sous forme numériques.
C'est la méthode de lecture qui les affichent en décimal, en hexa ou en ascii.
HyperTerminal transforme les codes Hexa en ASCII.
Ton API lui, lit chaque caractère mais les affichent en Hexa
Suffit donc dans ton API de convertir chaque code Hexa en ASCII, car, en effet, "50 2B 30 30 32 30 30 30 30 0D" est la même chose que "P+002000" suivi d'un retour chariot (Chr(13) ou vbCr)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
basamir
Messages postés335Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention 8 mars 2008 30 oct. 2007 à 20:07
Je dirai plutot que mon API lit chaque caractère en hexa et les affiche en ASCII car enfin de compte ce que mon API affiche est 002000, le caractère P pour dire à l'API que c'est ta trame et le retour chariot en fait c'est pour la fin de trame.
donc je ne sais pas mmoi comment à partir de VB je peux envoyer la trame à mon API.
Merci
Le savoir est la lumière de nous tous, partageons le!
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 oct. 2007 à 20:26
Erratum : Je n'avais pas vu que le 9 byte était le vbCr (&H0D) dans ton exemple "50|7octets|0D"
--> Donc pas la peine de l'ajouter à la fin, dans l'exemple en Hexa