Port Série [Résolu]

SanDum 39 Messages postés vendredi 23 avril 2010Date d'inscription 24 avril 2014 Dernière intervention - 14 nov. 2011 à 22:23 - Dernière réponse : SanDum 39 Messages postés vendredi 23 avril 2010Date d'inscription 24 avril 2014 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
NHenry 14261 Messages postés vendredi 14 mars 2003Date d'inscription 21 septembre 2018 Dernière intervention - 15 nov. 2011 à 21:57
3
Merci
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
---

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de NHenry
SanDum 39 Messages postés vendredi 23 avril 2010Date d'inscription 24 avril 2014 Dernière intervention - 14 nov. 2011 à 23:43
0
Merci
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.
Commenter la réponse de SanDum
NHenry 14261 Messages postés vendredi 14 mars 2003Date d'inscription 21 septembre 2018 Dernière intervention - 14 nov. 2011 à 23:54
0
Merci
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
---
Commenter la réponse de NHenry
SanDum 39 Messages postés vendredi 23 avril 2010Date d'inscription 24 avril 2014 Dernière intervention - 15 nov. 2011 à 00:44
0
Merci
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
Commenter la réponse de SanDum
NHenry 14261 Messages postés vendredi 14 mars 2003Date d'inscription 21 septembre 2018 Dernière intervention - 15 nov. 2011 à 13:07
0
Merci
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
---
Commenter la réponse de NHenry
SanDum 39 Messages postés vendredi 23 avril 2010Date d'inscription 24 avril 2014 Dernière intervention - 15 nov. 2011 à 14:49
0
Merci
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
Commenter la réponse de SanDum
SanDum 39 Messages postés vendredi 23 avril 2010Date d'inscription 24 avril 2014 Dernière intervention - 16 nov. 2011 à 00:58
0
Merci
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
Commenter la réponse de SanDum

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.