Port Série

Résolu
SanDum Messages postés 39 Date d'inscription vendredi 23 avril 2010 Statut Membre Dernière intervention 24 avril 2014 - 14 nov. 2011 à 22:23
SanDum Messages postés 39 Date d'inscription vendredi 23 avril 2010 Statut Membre Dernière intervention 24 avril 2014 - 16 nov. 2011 à 00:58
Bonjour a tous

J'arrive a communiqué en série avec une carte arduino sans problème avec mon programme c# en me servant de :
"serialPort1.Write(TxString)" et "RxString = serialPort1.ReadExisting();".

Par contre, j'ai un module de lecteur mp3 qui fonctionne de la même manière avec le port série, mais mon code ne fonctionne pas. J'arrive a faire fonctionner ce module avec putty uniquement.

J'ai bien mis le bon bit rate, parité....

Est-ce que c# et putty fonctionne différemment pour le port série et comment réglé mon problème?

Merci

7 réponses

NHenry Messages postés 15067 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 mai 2023 158
15 nov. 2011 à 21:57
Bonjour,

J'ai rapidement regardé la doc du protocole.
Déjà, il ne te demande qu'un CR, et pas un CRLF, donc il faudra voir ce que tu envoi.
Ce genre de caractère sortant tant du protocole peut avoir comme cause une mauvaise configuration du pour COM (Vitesse incorrecte par exemple).

Visiblement la commande PC est de la forme :
PC F /MonDiossier/Monfichier.mp3
Hors dans ton exemple, il manque le premier / pour dire de s'intéresser à la racine.
Il attend aussi un certain format de MP3, mais si ça passe avec Putty, je suppose que c'est bon.

Hormis cela, je ne comprend pas pourquoi tu reçois cela.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
3
SanDum Messages postés 39 Date d'inscription vendredi 23 avril 2010 Statut Membre Dernière intervention 24 avril 2014
14 nov. 2011 à 23:43
Voici quelque détail qui pourrait peut-être vous aider:

• 9600, 19200, 38400, 57600, or 115200 bps (9600 bps default)
• 8 bits
• no parity
• 1 stop bit
• no ech

Ce son les spécifications pour communiquer avec mon module mp3.
En faisant des tests, j'ai remarqué que 1 fois sur 15 environs, le module me répondait comme prévu.
0
NHenry Messages postés 15067 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 mai 2023 158
14 nov. 2011 à 23:54
Bonjour,

"mais mon code ne fonctionne pas"
C'est vague, tu peux préciser ?
Quel est le code concerné ? (voir le point 2 qui suit)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0
SanDum Messages postés 39 Date d'inscription vendredi 23 avril 2010 Statut Membre Dernière intervention 24 avril 2014
15 nov. 2011 à 00:44
Bonjour
C'est vrai que je suis vague, mais il ne se passe rien du tout. Je ne savais pas trop quoi mettre.

Voici mon code:
String RxString;

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Write("PC F TEST.mp3");    // envoi le code pour jouer la musique TEST.mp3
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            RxString = serialPort1.ReadExisting();    // Réception des données
            this.Invoke(new EventHandler(DisplayText));
        }
        private void DisplayText(object sender, EventArgs e)
        {
            textBox1.AppendText(RxString);    // Affiche message venant du module ( mais rien ne s'affiche avec ce module, mais fonctionne avec ma carte arduino )
        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Open();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
        }


Comme dit plus haut, ça marche 1 fois sur 15 environs. Des fois j'ai le bon code de retour venant de mon module, des fois j'ai des caractères ne voulant rien dire (?g$5f).
J'ai mis ces spécifications dans visual studio:

9600, 19200, 38400, 57600, or 115200 bps (9600 bps default) ;
8 bits ;
no parity ;
1 stop bit ;
no ech ;



Voila.
J'espère que c'est mieux
Grégory
0

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

Posez votre question
NHenry Messages postés 15067 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 mai 2023 158
15 nov. 2011 à 13:07
Bonjour,

Déjà tu as activé XOnOff, est-ce bon ?
Attends-tu de recevoir une trame complète avant de traiter ?
As-tu regardé le protocole d'échange ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0
SanDum Messages postés 39 Date d'inscription vendredi 23 avril 2010 Statut Membre Dernière intervention 24 avril 2014
15 nov. 2011 à 14:49
Bonjour NHenry

Pour répondre aux questions:
Déjà tu as activé XOnOff, est-ce bon ? J'ai mis cela car comme putty fonctionnait et que XOnOff était sélectionné dans putty, je me suis dis que cela devais être bon. Avant que je le met, j'avais sélectionné ''none'' il me semble, mais cela ne fonctionnait pas plus.
Attends-tu de recevoir une trame complète avant de traiter ? Pour cette question, je ne sais pas trop ce que tu veux dire.
Je me sert de cela pour la réception:
RxString = serialPort1.ReadExisting();    // Réception des données
            this.Invoke(new EventHandler(DisplayText));

Quand le module est prêt a fonctionner, je reçois '>' normalement. Ensuite, si je tape mal une commande ou qu'il y a une erreur je reçois l'erreur sous cette forme 'E1A' par exemple et ensuite de nouveau '>' pour me dire que c'est prêt a continuer. Je ne sais pas exactement comment fonctionne le code de réception. De toute façon, je fais juste afficher le texte que je reçois.
As-tu regardé le protocole d'échange ? Si tu me parle de comment échanger avec le module, oui je l'ai regardé. Si tu me parle de la communication série, je l'ai regardé aussi, avec les descriptions ci-haut.

Manuel du module mp3

Voila. Merci de ton aide
Grégory
0
SanDum Messages postés 39 Date d'inscription vendredi 23 avril 2010 Statut Membre Dernière intervention 24 avril 2014
16 nov. 2011 à 00:58
Bonjour NHenry
Tu avais raison pour CR et CRFL.
Tout fonctionne maintenant quand je met après mon message
serialPort1.Write(TxString+"\n\r");

Merci beaucoup de ton aide
Grégory
0