Xman_fr
Messages postés39Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention14 septembre 2007
-
27 janv. 2006 à 18:40
Xman_fr
Messages postés39Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention14 septembre 2007
-
30 janv. 2006 à 09:33
je veux lire des information appartir d'un balance a l'aide Visual basic 6 en utilisant l'OCX mscomm via le port rs232 .
j'ai déjà réaliser une aplication comme ça. mantenant j'essayer d'utiliser le meme programe en changer seulement la commande d'envoyée mais j'arriver pas car j'ai pas a compris ça :
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 28 janv. 2006 à 11:16
OK, je vais essayer de t'expliquer ce que j'en ai compris.
On va prendre la trame "Demande" c'est plus court.
Le checksum est la somme de la valeur ascii de chacun des caractères de ta trame hormis le !, le CR et le LF .... et aussi le chk je presume ça semble plus logique.
!01IchkCRLF --> &h30 + &h31 + &h49 ou si tu préfère en décimal 48+49+73 = &hAA (170)
cette somme, tu la ramène sur 8 bits, c'est à dire que tu ne conserve que les 8 bits de poids faible en faisant un masque :
somme=somme & &h00FF, dans le cas présent ça donne toujours 170
ensuite tu prend les bits de poids fort (masque) que tu décale (division) auquel tu ajoute &h30 (valeur ascii de "0") et que tu converti en caractère :chk1 chr$( ( (somme & &hF0) / 16) + &h30) --> chk1 &h3A soit ":"
puis tu prend les bits de poid faible auquels t'ajoute &h30 puis etc...chk2 chr$( (somme) & &h0F) + &h30) --> chk2 &h3A soit ":"
donc ta trame devient !01I::CRLF
pour la réponse tu devrai avoir chk=">7" si tu ne compte pas le caractère "/" ou ":3" s'il faut en tenir compte.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 28 janv. 2006 à 13:22
ou plutot : mscomm1.output "!01I::" & vbCRLF ou mscomm1.output "!01I::" & chr$(&h0D) & chr$(&h0A)
attention quand on dit CR ou LF il ne s'agit pas des caractères C et R (ou L et F) mais d'un code désignant respectivement le caractère "retour charriot" (&h0D) et le caractère "Saut de ligne" (&H0A).
Donc dans tes trames, il ne faut pas écrire "CR" et "LF" mais les remplacer par leur code respectif, ou mieux les constantes VB prédéclarées vbCR, vbLF ou vbCRLF pour l'association des 2.
Bon code
PS : avant de coder sous vb tu peux déjà essayer d'envoyer ta trame avec un terminal bien configuré (ex: Hyperterminal) pour voir si ta balance comprend bien