Serial port timeout sur un write
Bonjour
J'utilise pour la première fois .NET pour faire une communication avec une carte électronique via un port com virtuel sur USB et ça ne veut pas fonctionner alors que ce même port fonctionne à merveille avec un quelconque terminal. et que mon code c# semble fonctionner sur un port série non virtuel.
voici mon code, qui n'a rien de bien particulier puisque tiré des exemples les plus basiques sur le sujet.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
try
{
SerialPort sp = new SerialPort("COM29", 115200, Parity.None, 8, StopBits.One);
sp.Handshake = Handshake.None;
sp.ReadBufferSize = 2048;
sp.WriteBufferSize = 2048;
// Set the read/write timeouts
sp.ReadTimeout = 500;
sp.WriteTimeout = 500;
sp.Open();
richTextBox1.AppendText("Port com ouvert");
sp.Write("Toto va bien"); // ici j'ai timeout
String rep = sp.ReadExisting();
richTextBox1.AppendText(rep);
sp.Close();
}
catch (ManagementException ex)
{
MessageBox.Show(ex.Message);
} |
Ça saute en timeout systématiquement quelque soit les tailles de buffer et de WriteTimeout
Je trouve des tonnes et des tonnes de posts sur différents forums anglais qui parlent de ce problème présent sur les port com virtuels mais soit il n'y a pas de réponses, soit les réponses m'apparaissent tellement vides que je n'y vois pas de solution .)
Vu le nombre de personnes qui ont eu le problème et comme aujourd'hui 99% des ports séries sont virtuels je suis très étonné d'avoir un soucis avec une telle classe !
Pourquoi ai-je ce timeout sur write sur un port com virtuel ?
Comment contourner le problème ?
Existe t-il une classe plus efficace/fiable pour exploiter un port COM ?
Merci par avance.