Piloter un automate via RS 232

Signaler
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011
-
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011
-
Bonjour à tous,



Je connais un peu la programmation en VB mais la je dois développer
quelque chose que je ne connais pas. En effet je cherche à récupérer
des infos contenues dans un appareil de test. J'ai tout le protocol de
communication qui est fourni (ca devrait faciliter la tache ) mais je ne sais pas par ou commencer.



J'ai intégrer un le MScomm dans mon appli mais je ne sais pas du tout comment envoyer le commande a mon appareil

Je sais que la structure de la commande se compose de

--> Start Of Frame Marker ( 1 point d'exclamation '!')

--> Application Layer Data (1 to 121 characters from Application Layer ANSI subset)

--> Frame delimiter (1 pipe ('|') character

--> Frame check Sequence (4 hexadecimal characteres) je vois pas trop a quoi ca correspond

--> Et enfin le Carriage Return character (0x0D)



Les commandes ressemblent à ALARM, AUDIO_QUIET, LOG_USER_ACCESS etc...



Voila voila, c'etait un extrait de la doc concernant le protocol de communication mais je n'arrive pas a le mettre en pratique



Si quelqu'un peut m'aider, m'éclairer au autre, je l'en remercie par avance .........

9 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
Salut
Bah ça veut dire que tu recevras un e trame dont chaque élément est défini.
Tu devrais donc recevoir quelque chose du genre
!lesDonnéesMaxi121Caractères|1AD8^

avec :
lesDonnéesMaxi121Caractères
Maximum 121 caractères encadrés par ! au début et | à la fin
Ces données arriveront par une suite de code ascii, peut-être en hexa

1AD8
Représente ce qu'on appelle un CheckSum = CRC (XOR de chaque byte)
A la réception, tu devrais refaire le calcul du CRC pour vérifier que celui qu'on t'envoie est bien le même 1AD8. Si ce n'est pas le cas, les données fournies ne sont pas certifiées
^ représente le 0x0D en héxa qui terminera la trame cvCr Chr(13)

Donc, cherche :
- comment convertir un ascii en caractère, un caractère en ascii (Chr et Asc)
- comment faire une convertion décimal/héxa (Hex et Val)
- comment faire un CRC : cherche ce mot dans "Rechercher" sur vbfrance : il doit bien y avoir une source qui sait calculer ça
Avec le MSCOMM, c'est très faisable

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

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011

Bonjour jack,



Merci de toutes ces explications, je testerai ca aujourd'hui et tiendrai tout le monde au courant de l'évolution de ce projet ..
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011

J'ai donc essayer plusieurs choses aujourd'hui ce qui m'a permis de
comprendre pas mal de chose mais bon j'avance doucement .....



Mais je vois pas très clairement les étapes à réaliser



Imaginons que je veuille "lancer" une commande sur ma machine qui
s'appelle ALARM et qui est censée de me renvoyer la description de la
derniere alarme.



Si j'ai bien compris pour envoyer cette commande il faut :

--> Convertir les caractères ALARM en code ascii et hexa

--> calculer le CRC à partir de ALARM "version hexa"

--> envoyer la commande à mon appareil comme suit :



!'version ascii de ALARM'|'monCRC^



Suis je dans la bonne direction ?
Messages postés
5
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
15 juin 2005

Je voudrai moi aussi suivre ce projet de près car c'est mon domaine. Si
je peux avoir la doc du protocole je pourrai peut être t'aider. Je
connais les API et les SNCC, ça pourrait être semblable.
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011

Salut et merci de montrer ton interet pour le sujet



Je vais pas pouvoir te donner la doc concernant le protocole de
communication car je ne l'ai qu'en format papier mais je pense avoir
fourni tout les éléments dont j'avais besoin .... du moins je pense.

Ce que je sais c'est:

- All communication shall be in the form of asynchronous serial non return to zero data frames encoded as

1 start bit

8 data bits

1 stop bit

No parity bits

- Frame structure (comme indiqué au dessus)

- Application Layer Interface : The data link layer shall support
Application Layer data comprising a sequence of characters from the
table below, combined in any manner

Character codes


Description

20h, 22h, ... to 7Eh


Ponctuation characters

41h .... to 7Ah


Alphabetic characters

etc ......

etc ......

- Frame check sequence CRC calculé selon le modele Rocksoft CRC algorithm

- Application Layer : Command and response will be encoded into strings
of characters from the ANSI subset supported by the data link layer. At
the interface betwwen the application and data link layers, the string
will be NULL-terminated.

- Exemples de commandes

Message
Description
Message to server
Response from server

ALARM
Return the last alarmCode
ALARM
ALARM^AlarmCode





Voili voilou ce que je peux donner comme info



Encore une fois merci de m'accorder du temps
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011

Personne pour m'aider à continuer ?? parceque la je patauge
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011

J'ai un peu de nouveau.



Il existe deja des logiciels pour communiquer avec ce type d'appareil,
ils servent en général a faire une mise à jour du firmware. Il faut
mettre l'appareil en "learn mode" et des qu'il est pret, lancer la
procédure a partir d'un pc via le logiciel. Est -il possible de
brancher 2 pc en direct avec un hyper terminal d'un coté pour voir ce
que le logiciel envoie comme données l'histoire que ca me fasse un
exemple parceque la je ne sais meme pas concretement a quoi va
ressembler une commande ??



Merci de votre soutien
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011

Je me sens abandonné .....
Messages postés
43
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
9 décembre 2011

Bon alors, aujourd'hui le logiciel fonctionne mais j'ai toujours un problème avec le calcul du CRC

Les commande "constantes" vers l'automates comme ALARM par exemple
fonctionnent puisque je les ai calculées sur des sites que j'ai touvé
(exemple), mais pour les commande variables (EVENT^X - sachant que X
représente le numéro d'événement qui change) et bien la je galère.



Voila ou j'en suis aujourd'hui