Communication rs232 [Résolu]

Signaler
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
-
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
-
Bonjour , je doit envoyer des données vers rs232 , voici les donnée
01 69 32 30 31 30 30 30 39 30 31 31 36 31 33 33 36 30 31 30 30 30           .i20100090116133601000
30 30 30 37 34 36 31 36 36 41 32 32 30 30 30 30 30 30 30 30 34 36           000746166A220000000046
30 32 44 35 44 45 34 34 41 34 43 43 31 42 34 31 44 32 34 42 46 46           02D5DE44A4CC1B41D24BFF
34 30 41 46 32 42 31 43 34 32 30 33 35 46 44 42 30 32 30 30 30 30           40AF2B1C42035FDB020000
30 30 37 34 36 30 35 42 43 45 41 30 30 30 30 30 30 30 30 34 36 31           0074605BCEA00000000461
33 38 33 31 36 34 34 39 36 33 44 30 41 30 30 30 30 30 30 30 30 34           3831644963D0A000000004
30 44 44 38 37 34 30 30 30 30 30 30 30 30 30 30 33 30 30 30 30 30           0DD8740000000000300000
30 37 34 36 30 45 46 37 31 41 30 30 30 30 30 30 30 30 34 35 33 32           07460EF71A000000004532
32 33 39 37 34 34 44 45 42 43 43 36 34 31 43 39 41 43 39 41 34 30           239744DEBCC641C9AC9A40
45 31 43 31 39 43 34 31 41 34 38 36 37 37 30 34 30 30 30 30 30 30           E1C19C41A4867704000000
37 34 35 43 30 43 41 30 31 30 30 30 30 30 30 30 30 34 35 42 36 33           745C0CA010000000045B63
35 46 46 34 34 39 46 42 36 34 34 30 30 30 30 30 30 30 30 34 30 45           5FF449FB6440000000040E
43 30 45 34 33 30 30 30 30 30 30 30 30 26 26 43 35 43 44 03                     C0E4300000000&&C5CD.
je ne sait pas si c'est le tableau de gauche ou de droite que je doit envoyer
on ma dit en hexa decimale, donc c'est le gauche , mais sa ne marche pas
dois-je faire un MSComm1.Output = Chr(13) & Chr(10) apres chaque envoi ??
ou apres l'envoi de tout le paquet
MErci

12 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Concernant l'envoi de données, ta technique est bonne.
Tu y gagnerait en efficacité en entrant tes codes héxa (ou décimaux puisque ce sont les mêmes) dans un tableau de Byte, et je pense que tu peux envoyer le tableau d'un seul coup :
   MSComm1.Output = monTableauDeByte
ou
   MSComm1.Output = monTableauDeByte()

A tester

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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
De plus, comme dit dans l'aide (que tu dois connaitre par coeur depuis le temps que je t'en parle), il semble qu'il faille envoyer une variable de type Variant dans un Output et pas directement les données.
Exemple http://forums.devx.com/archive/index.php/t-62183.html

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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
"je ne sait pas si c'est le tableau de gauche ou de droite que je doit envoyer"
bah c'est pas nous qui allons pouvoir te le dire !
et une fois affiché, on ne distingue pas de tableau gauche ou droite.
Et tu peux nous dire comment tu pratiques l'envoi ?
Dois-tu envoyer les chiffres ou les codes ?
Si tu dois envoyer un caractère, tu as trois possibilités :
- Envoyer le chiffre sous forme d'un texte
   .Output "1"
- Envoyer le chiffre sous forme décimale (*)
   .Output Chr(1)
- Envoyer le chiffre sous forme héxadécimale (*)
   .Output Chr(Val("&h1"))
(*) valeurs entre 0 et 255 (0 à FF) maxi
Ces deux dernières méthodes sont identiques
Par contre, la première envoie le code ascii du caractère "1", pas le code ascii n° 1.
Alors à toi de savoir quoi envoyer.
Dans les deux dernières solutions, il te faudra rentrer ces valeurs dans un tableau de Byte puis les envoyer sur le port COM un a un, avec une boucle For-Next par exemple.

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)
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Désolé, voici les deux tableau
le premier
01 69 32 30 31 30 30 30 39 30 31 31 36 31 33 33 36 30 31 30 30 30
30 30 30 37 34 36 31 36 36 41 32 32 30 30 30 30 30 30 30 30 34 36
30 32 44 35 44 45 34 34 41 34 43 43 31 42 34 31 44 32 34 42 46 46
34 30 41 46 32 42 31 43 34 32 30 33 35 46 44 42 30 32 30 30 30 30
30 30 37 34 36 30 35 42 43 45 41 30 30 30 30 30 30 30 30 34 36 31
33 38 33 31 36 34 34 39 36 33 44 30 41 30 30 30 30 30 30 30 30 34
30 44 44 38 37 34 30 30 30 30 30 30 30 30 30 30 33 30 30 30 30 30
30 37 34 36 30 45 46 37 31 41 30 30 30 30 30 30 30 30 34 35 33 32
32 33 39 37 34 34 44 45 42 43 43 36 34 31 43 39 41 43 39 41 34 30
45 31 43 31 39 43 34 31 41 34 38 36 37 37 30 34 30 30 30 30 30 30
37 34 35 43 30 43 41 30 31 30 30 30 30 30 30 30 30 34 35 42 36 33
35 46 46 34 34 39 46 42 36 34 34 30 30 30 30 30 30 30 30 34 30 45
43 30 45 34 33 30 30 30 30 30 30 30 30 26 26 43 35 43 44 03
le deuxieme
.i20100090116133601000
000746166A220000000046
02D5DE44A4CC1B41D24BFF
40AF2B1C42035FDB020000
0074605BCEA00000000461
3831644963D0A000000004
0DD8740000000000300000
07460EF71A000000004532
239744DEBCC641C9AC9A40
 E1C19C41A4867704000000
745C0CA010000000045B63
5FF449FB6440000000040E
C0E4300000000&&C5CD.
et on ma dit de les envoyer en hexadecimale , mais comme je suis super novice je sait pas c'est quoi si c'est le premier ou le deuxieme , et si on envoi
mscomm1.output ="01" ou mscomm1.output ="."
ou caractere apres caractere .
s'il vous plais soyer passient je suis completement novice
, entre deux pc pas de probleme mais en hexadecimale je sait pas
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Comment tu as eu ces données ?
C'est pour communiquer avec quel équipement ?

Apparemment, tu as un début de trame avec un 0x01 "i" et une fin avec 0x03. Un CRC 16 sur les 4 derniers caractères, avec un séparateur "&&". Les données envoyées sont déjà de l'hexa apparemment.

Je ne pourrais pas t'en dire plus sans avoir plus d'info de ta part.

http://nhen0039.chez-alice.fr/index.php
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Salut ,
Les données sont envoyé dans le cadre de mon travaille , c' est un system informatique de station service qui communique avec un tls-2 de veeder-root un system de jaugeage de citerne, qui donne ce qui reste dans la cuve , la temperature, si il y a de l'eau ect......

J'ai placé aspycom entre notre pc et ce controleur de jauge et c'est leresultat de la communication.
Je doit encore tester sur site.

Merci
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Tu as écouté uniquement la réception, l'émission ou les deux (relatif au PC) dans ta trace ?

http://nhen0039.chez-alice.fr/index.php
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Bonjour ,
Oui j' ai les deux trace
notre system pose la question suivante
01 69 32 30 31 30 30                                                        .i20100
et le controleur de jauge répond ceci en hexa
01693230313030303930313136313333363031303030
30303037343631363641323230303030303030303436
30324435444534344134434331423431443234424646
34304146324231433432303335464442303230303030
30303734363035424345413030303030303030343631
33383331363434393633443041303030303030303034
30444438373430303030303030303030333030303030
30373436304546373141303030303030303034353332
32333937343444454243433634314339414339413430
45314331394334314134383637373034303030303030
37343543304341303130303030303030303435423633
35464634343946423634343030303030303030343045
4330453433303030303030303026264335434403
et ici en ascii
.i20100090116133601000
000746166A220000000046
02D5DE44A4CC1B41D24BFF
40AF2B1C42035FDB020000
0074605BCEA00000000461
3831644963D0A000000004
0DD8740000000000300000
07460EF71A000000004532
239744DEBCC641C9AC9A40
E1C19C41A4867704000000
745C0CA010000000045B63
5FF449FB6440000000040E
C0E4300000000&&C5CD.
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Comprend-tu à quoi servent les 2 parties de ta capture ?
Ensuite, pour les ".", ça sert à signaler des caractère non imprimables, il faut faire, par exemple, Chr$(1) pour le caractère 0x01.

http://nhen0039.chez-alice.fr/index.php
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Re,
Voici ce que je fait
 MSComm1.Output = Chr(Val("&H" & Tablo(i)))
 Et tablo(i)  est les caractere hexa qie je doit envoyer
Mais je doit tester demain dans une station
On verra demain
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Re
Mais pourquoi veux-tu renvoyer à la jauge une trame qu'elle ta envoyée ?
C'est ça que je n'arrive pas à comprendre.
Si tu dois mettre ton PC à la place du système, il faut envoyer la question, pas la réponse, puis écouter la réponse et la décrypter.

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)
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
RE,
Non je n'envoie pas la question au pc de la station,
ici a la maison je n'ai pas de controleur de jauge, seulement un simulateur de la société qui les vend et qui mes sert a les tester sur place.
Donc mon programme attend l'envoie de la question du simulateur , quand il a reçus la question le prog envoi vers le simu les données comme si c'était le controleur de jauge.
pc de la station = question --> controleur de jauge
controleur de jauge = réponse --> vers pc station

a la maisonsimulateur sur laptop pc station question vers mon pc(controleur de jauge)mon pc controleur de jauge envoi de la reponse --> laptop(simulateur pc)