2016-07-30 17 views
0

Ich verwende die folgendeWie kann ich eine Hex-Daten von der seriellen Schnittstelle erhalten und in einem Textfeld in C# anzeigen?

byte[] hex=new byte[1000]; 
string RecievedData = myport.ReadExisting(); 
if (!(RecievedData == "")) 
{ 
    hex = Encoding.GetEncoding(28591).GetBytes(RecievedData); 
    string hexString = BitConverter.ToString(hex); 
    txtbox.text+=hexString; 
} 

aber Problem ist, dass dieser Code alle Bytes umwandelt, die keinen Charakter Wert 0x3F haben.

+0

Ist es WPF, Winforms oder Asp.net? –

+0

Es ist Winforms. –

+0

0x3F == '?'. Wenn Sie ReadExisting() für Binärdaten verwenden, haben Bytewerte> = 0x80 kein entsprechendes ASCII-Zeichen und erzeugen ein Fragezeichen. Sie müssen Binärdaten mit der Read() -Methode lesen. –

Antwort

0

Sie müssen nur den seriellen Anschluss erhalten, indem Sie seine ID zuweisen und dann das Byte mit der Read-Byte-Methode lesen müssen.

SerialPort p = new SerialPort("com1", 115200); 
textbox.Text = p.ReadByte().ToString("X2"); 
+0

Okay, aber wie kann ich den ganzen Puffer lesen. Dieser Code liest nur wenige Bytes, nicht alle Puffer. –

+0

Bitte beziehen Sie sich dazu auf diese Anfrage: http://stackoverflow.com/questions/21548828/c-sharp-serial-port-reading-hex-data – Lakhtey

+0

Während dieses Code-Snippet die Frage lösen kann, [einschließlich einer Erklärung] (//meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) hilft wirklich, die Qualität Ihrer Post zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – FrankerZ

0

Schauen Sie sich die Dokumentation mit Beispielen auf IO Ports verwenden, ist das Beispiel einer Anwendung Konsole kann aber leicht implementiert werden, wie Win App bildet.