2016-05-06 3 views
-1

In meiner App sende ich Daten zum Mikrocontroller. Ich sende Daten, Mikrocontroller programmieren und senden Zeichen ("K"). Meine Anwendung sollte auf dieses Zeichen warten. Nach Erhalt dieses Zeichens sollte es Daten erneut senden.C#: Warten auf spezifisches Zeichen gesendet von RS485

Ich habe Probleme mit dem Empfang dieses Zeichens. Ist die Funktion BytesToRead richtig, um Zeichen zu lesen? Mein Programm immer fallen, wenn sie diese erreichen meine Funktion

static void wait() 
    { 
     SerialPort COMport = new SerialPort(); 
     int znak; 

     COMport.PortName = "COM6"; // 
     COMport.BaudRate = 1200; 
     COMport.DataBits = 8; 
     COMport.Parity = Parity.None; 
     COMport.StopBits = StopBits.One; 

     COMport.Open(); 

     do 
     { 
      znak = COMport.BytesToRead; 
     } while (znak != 75); // ASCII K = 75 

     COMport.Close(); 
     return; 
    } 
+0

'BytesToRead' gibt Ihnen die Größe aller Daten im Empfangspuffer - d. H. Es gibt Ihnen nicht die Daten selbst. – Chris

Antwort

0

Die BytesToRead Eigenschaft des COMport gibt die Anzahl der Zeichen warten, das Ihre Schleife durch den COMport so empfangen wurde, wird fortgesetzt, bis es genau 75 Zeichen lesen. Sehen Sie sich die Dokumentation für die Klasse an. Es zeigt Ihnen ein gutes Beispiel für das Lesen/Schreiben von Zeichen aus/in Ihren COMport.

0

Warum nicht einfach while(COMport.ReadChar() != 'K') { /* Do Stuff */ } verwenden?

Verwandte Themen