Bonjour,
Je suis débutant en C# et je travaille sur une application visant à piloter un appareil de mesure via un PC et une liaison RS232.
J'arrive à envoyer une commande et recevoir la mesure envoyée par l'appareil, mon probleme survient lorsque je souhaite envoyer une seconde commande par la suite, au lieu de renvoyer la commande proprement, d'autres caractéres sont ajoutés à la fin de la trame et je ne comprends pas pourquoi.
Lorsque je redémarre l'application la premiere commande est bonne mais pas les autres, je penses que le problème viens du buffer mais je ne sais pas comment le gerer.
J'ai essayé d'utiliser le DiscardInbuffer/DiscardOutBuffer mais sans succés.
Voici mon code pour recevoir les données :
Et mon code pour envoyer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private void port_DataReceived(Object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; _fluxRecupere = sp.ReadExisting(); _donnees += _fluxRecupere; _fluxRecupere = ""; _port.Close(); String[] _dataTab = _donnees.Split(','); //Range les données séparées par une virgule dans un tableau for (int i = 0; i < (_dataTab.Count()); i++) { Console.WriteLine(_dataTab[i]); } }
Si quelqu'un sait d'où le probléme provient et peut m'aider j'en serais trés heureux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private void btnLancerMesure_Click(object sender, RoutedEventArgs e) { string[] SampleCommande = new string[2]; SampleCommande[0] = "C 7 1 \x0d"; SampleCommande[1] = "SS \x0d"; _port.Open(); for (int i = 0; i <= 1; i++) { _port.WriteLine(SampleCommande[i]); } }![]()
Merci d'avance !
Partager