Trame RS232

imen_ Messages postés 10 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 2 octobre 2007 - 2 oct. 2007 à 12:27
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 2 oct. 2007 à 16:07
Bonjour tlm,

Je voudrais réaliser un programme qui communique avec un équipement en utilisant la communication série. Je ne sais pas vraiment pas où commencer?

La trame, <layer id="google-toolbar-hilite-4" style="background-color: Cyan; color: black;">c</layer>'est du chinois pour moi. Voici ce que j'ai trouvé dans la documentation:

Communication Settings
Baud Rate: 9600
Data Bits: 7
Stop Bits: 1
Parity: Even
Handshaking: RTS/CTS
Message Terminators: 13 (CR), 5 (ENQ)
Character Delete: 0 (NULL), 2 (STX), 3 (ETX)

Protocol: Standard With Intelligent Response

Startup String: (Not used)

Shutdown String: (Not Used)

Break on Startup: Yes
Break on Shutdown: Yes
Break Length Ms: 300

Intelligent Response 1
Look For: <3> (must be entered as <3> and not simply 3)
Respond With: <6> (must be entered as <6> and not simply 6)
Response Delay Ms: 300

Intelligent Response 2
Look For: <5> (must be entered as <5> and not simply 5)
Respond With: 6**A***DD<4>
Response Delay Ms: 500

Note,
Where you see the * symbols in the Response String above, these are actually spaces.

One * equals one space. The string actually looks like, 6  A   DD<4>

Intelligent Response 3
Default Settings, Not Used

Window Options+
Date/Time Tag: Date Only

Message Transfer+
Delete
all lines containing RTJ: this removes the Real Time Journal making the
alarms/events more readable. This should be used in conjunction with
the Date Tag.

+Optional

Une idée?

Merci d'avance.

8 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
2 oct. 2007 à 13:25
Salut,

Tu tombes bien, j'ai travaillé la semaine dernière avec. Et j'avoue qu'en dotnet c'est assez simple. Il te suffit d'utiliser la classe SerialPort du framework :
http://msdn2.microsoft.com/fr-fr/library/system.io.ports.serialport(VS.80).aspx

N'hésites pas à me contacter si tu as besoin d'autre chose.

Remarque: n'oublies pas de mettre de WriteTimeOut et ReadTimeOut sinon, les fonctions "write" et "receive" seront bloquantes ^^
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
2 oct. 2007 à 13:32
N'oublies pas de changer aussi le paramètre NewLine de ton objet SerialPort.
En l'occurence, d'après ta doc, un petit exemple :

//Le 7 est à vérifier je ne suis pas sûr à 100%
SerialPort s = new SerialPort("COM1", 9600, Parity.Even, 7, StopBits.One);
s.NewLine = "\r";
s.ReadTimeout = 1000;//1sec
s.WriteTimeout = 1000;//1sec
0
imen_ Messages postés 10 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 2 octobre 2007
2 oct. 2007 à 13:44
Le problème est que je bloque au niveau du décodage de la trame ou bien c'est le framework .Net qui s'en charge?
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
2 oct. 2007 à 13:53
Tu n'as pas besoin de te soucier de tout cela. Il te suffit juste de vérifier le bon fonctionnement.

Suite de mon exemple :

try
{
s.Open();
s.WriteLine("BlaBla");
}
catch(Exception ex)
{
throw ex;
}
finally
{
s.Close();
}

etc...

Je te conseille une fois implémenter de vérifier que cela fonctionne bien. Pour ce faire, tu as un logiciel gratuit qui espionne le port série : Aspycom.
http://www.logitheque.com/fiche.asp?I=18479&T=301&L=Aspycom
(A configurer ensuite)

Si tu lance ton logiciel à côté pour envoyer et recevoir des données, mets Aspycom en mode transparent. Ainsi, il n'interférera pas avec tes messages envoyés et recus.
0

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

Posez votre question
imen_ Messages postés 10 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 2 octobre 2007
2 oct. 2007 à 14:17
J'ai déjà réalisé un petit programme qui se connecte à un port COM et permet de recevoir les données. Le problème est que mon équipement n'est pas encore disponible et j'ai besoin de valider le principe de mon programme. Est ce que tu peux me conseiller des simulateurs de trames ou des générateurs de trames RS232?
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
2 oct. 2007 à 15:00
HyperTerminal est parfais pour cela ^^ . Il te permet d'envoyer des trames sur le port COM.

Tu le trouveras dans Démarrer\Programmes\Accessoires\Communication\Hyper Terminal (ou Démarrer\Exécuter => hypertrm )

Le plus difficile va être de te trouver un ordinateur (avec port RS232) pour envoyer les trames. Ca devient rare, surtout pour les portables.
0
imen_ Messages postés 10 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 2 octobre 2007
2 oct. 2007 à 15:04
Comment je peux utiliser l'hyperterminal pour envoyer des trames? Est ce qu'il suffit que j'écrive n'importe quoi dans la fenetre centrale?

Merci.
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
2 oct. 2007 à 16:07
bein oui.
Pour le reste des manipulations, il doit y avoir plein de documents bien détaillés pour hyperterminal. Je te laisse le soin de taper une recherche sur google ^^
0
Rejoignez-nous