Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > Visual C++ > C++/CLI
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/09/2012, 18h50   #1
tiniko
Membre à l'essai
 
Inscription : mars 2002
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 2
Points : 23
Points : 23
Envoyer un message via MSN à tiniko
Par défaut Evénement DataReceived jamais déclenché

Bonjour,

J'ai cherché sur le forum et n'ait pas trouvé de réponses.
J'ai une aplli C++/CLI avec un composant SerialPort.

Je n'arrive aps à recevoir les données sur le port COM.
L'évènement DataReceived du composant n'est jamais déclenché.
L'appareil relié au port COM émet en continue.

J'ai testé avec l'hyperterminal et avec un programme en DELPHI. Les données arrivent bien sur le port COM.

Avez vous des idées, svp ?

Merci
tiniko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2012, 20h21   #2
moldavi
Membre Expert
 
Homme david
Responsable développement
Inscription : décembre 2003
Messages : 1 289
Détails du profil
Informations personnelles :
Nom : Homme david
Âge : 38
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable développement
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2003
Messages : 1 289
Points : 2 129
Points : 2 129
Bonjour.

Si tu nous montres le code d'initialisation du port série, on pourra peut-être voir si quelque chose ne va pas.

Mais comme ça, il n'y a aucune raison que cela ne fonctionne pas.
__________________
Media Foundation video decoder mpeg1/mpeg2, MediaSource Kinect
http://sourceforge.net/projects/mfnode/

http://jeux.developpez.com/faq/directx/?page=dshow
moldavi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2012, 16h28   #3
tiniko
Membre à l'essai
 
Inscription : mars 2002
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 2
Points : 23
Points : 23
Envoyer un message via MSN à tiniko
Bonjour,

Finalement j'ai résolu mon problème.
Je vous le décris plus en détails avant de vous donner la solution.

C'est une simple forme avec un bouton Init pour initialiser le port série et un autre bouton pour envoyer une commande.
J'ai mis un message sur l'évènement DataReceived.
Voici le code très simple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
private: System::Void buttonInit_Click(System::Object^  sender, System::EventArgs^  e) {
   serialPort1->PortName = "COM3";
   serialPort1->BaudRate = 38400;
   serialPort1->Parity = Parity::None;
   serialPort1->StopBits = StopBits::One;
   serialPort1->DataBits = 8;
   serialPort1->Handshake = Handshake::None;
   serialPort1->Open();
}
 
private: System::Void buttonSend_Click(System::Object^  sender, System::EventArgs^  e) {
  serialPort1->Write(textBox1->Text+"\r");
}
 
private: System::Void serialPort1_DataReceived_1(System::Object^  sender, System::IO::Ports::SerialDataReceivedEventArgs^  e) {
  SerialPort^ sp = (SerialPort^)sender;
  String^ indata = sp->ReadExisting();
  MessageBox::Show("Data received :"+indata);
}
Quand j'ouvre le port, je ne reçois jamais de donnée.
Je peux programmer l'appareil pour qu'il envoie en continue des données sur le port série. Même dans ce cas là, je ne reçois rien.

La solution a été de rajouter ces deux lignes dans mon initialisation de port COM :
Code :
1
2
3
 
  serialPort1->DtrEnable = false; // valeur par défaut
  serialPort1->RtsEnable = true; // ce qui permet le déclenchement de l'évènement Datareceived dans mon cas pour mon appareil.
J'espère que ça pourra être utile à quelqu'un.
tiniko est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h58.


 
 
 
 
Partenaires

Hébergement Web