Rs232

Xman_fr Messages postés 39 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 14 septembre 2007 - 5 juil. 2006 à 12:25
Xman_fr Messages postés 39 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 14 septembre 2007 - 11 juil. 2006 à 11:25
je suis entrain de developer un programme pour capturer un signale a partir d'un port série .
j'ai utiliser MSCOMM mano je suis entrain de savoir la trame d'envoie
qui peux m'expliquer cette partie svp :
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
les caractères de communication indique (entre<>) représentent les codes ASCII correspodants. dans certains cas , le code est écrit en format hexadécimal (format 0x...). les messages courts de demande et de réponse sont representés sous format ASCII et hexadécimale.

pour les caractères spéciaux, la liste est la suivante :
représentation valeur héxadicimale
<NULL>0x00
<SOH>0x01
<CR>0x0D
<LF>0x0A
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
qui peux m'éxplique cette partie svp

6 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
5 juil. 2006 à 20:20
Salut
Le format des données n'est qu'une histoire de représentation.Que tu envoies/reçoives un <NULL> Chr$(0) Code ascii 0 = &h0  ou  un "A" = Chr$(65) = Code ascii 65 = &h41, de toute façon, c'est un caratcère.
Hexa = Hex(Byte)
Byte = Val("&h" & Hexa)
Caractère = Chr(Byte)
Byte = Asc(Caractère)
Tout ceci représente la même chose.

Quelquefois, ce Byte (0 à 255) représente une série de 16 Bit (0 ou 1) et chaque Bit a une signification dans le dialogue.
Utilise les masques numériques (And Or) pour retrouver l'état d'un Bit ou les fonctions mathématiques (2^n où n est le n° du Bit de 0 à 15) pour fabriquer un Byte.
Regarde parmi les sources de conversion de "base" (genre calculette) pour appronfondir.

Ce qu'il faut que tu trouves, c'est la structure de la trame que tu lis. Elle dépend du protocole utilisé.
Il n'y a que toi qui puisse le savoir. Voir documentation de l'appareil avec lequel tu dialogues.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
Xman_fr Messages postés 39 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 14 septembre 2007
6 juil. 2006 à 13:42
 Merci
j'ai ça dans la documentation :
Message envoyé par l'ordinateur:
<SOH><00h><00h><CR><LF>
Message envouyé par léquipement
<SOH>
<TARE><NET><STAT><CKSM><CR><LF>

mais l'orseque je j'ai tapper dans le programme :
mscomm1.Output =<SOH><00h><00h><CR><LF>
j'ai obtenu aucun evénement dans MScomm1
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
7 juil. 2006 à 13:27
Re
mscomm1.Output =<SOH><00h><00h><CR><LF>
n'est pas correct, VB6 n'a pas pu l'accepter en temps quye syntaxe.
Soit il manque des guillemets, soit tu as envoyé des Bytes
Ca devrait ressembler à ça :
mscomm1.Output = Chr$(1) & Chr$(0) & Chr$(0) & Chr$(13) & Chr$(10)

En ce qui concerne la réponse, tu recevras une chaine dont chaque caractère correspond aux items que tu listes :
<SOH>       1

   Byte représentant la masse brute, de 0 à 255
<TARE>     Byte représentant la Tare, de 0 à 255
<NET>       Byte représentant la masse Net, de 0 à 255
<STAT>     Aucune idée, peut-être "Status" | l'état de ta balance
<CKSM>   Byte représentant le CheckSum des données qui viennent d'être envoyée
<CR>         13
<LF>          10

Pour dissossier chaque Byte, il suffit de faire une boucle For-Next et lire chaque Byte|Caratère

En général, un Checksum est un XOR de tous les bytes précédents
C'est une info qu'envoie la balance.
Il faudrait que tu fasses aussi un calcul de Checksum à la réception.
Si celui que tu as calculé et celui que tu as reçu sont identiques, c'est que la qualité des signaux est correcte
Sinon, il a pu y avoir un parasite qui a faussé les valeurs transmises.
Tu peux donc ne pas en tenir compte, mais dans ce cas, tu risques de récupérer des valeurs farfelues

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
7 juil. 2006 à 13:29
Par exemple, pour la donnée
, si tu reçois la lettre A majuscule, la valeur est l'ASCII de "A" = 65
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Xman_fr Messages postés 39 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 14 septembre 2007
7 juil. 2006 à 17:06
mais comment je peux savoir que
 <SOH> = chr$(1)
 <00h> = chr$(0)
 <CR> = chr$(0)
 <LF> = chr$(0)
si il y a un cours pour ça  d'une par et d'autre par je veux savoir la valeur de <01h> svp et Merci beaucoup
0
Xman_fr Messages postés 39 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 14 septembre 2007
11 juil. 2006 à 11:25
et j'ai trouver que dans le Cyber (apparaeil  avec laquelle faire laconnecion) il y a plusieur protocole de communication .
il y a un protocole simple et prot.P1 et prot.t1 et Eplo3 et Eplo etendu .
quell'est le protocole que je vais l'utiliser ?
car pour chaque protocole il y a un trame speciale pour la communicationavec l'ordinteur.
0