C#: SerialPort Kommunikation
Wünsche ich zu schreiben in der serialport-com1
01 00 00 02 37 30 04
Das ist der Befehl für die Initialisierung..
Wenn ich Schreibe einen char-Arrays oder byte-array
c[0] = (char)01;//
c[1] = (char)00;
c[2] = (char)00;
c[3] = (char)02;
c[4] = (char)37;
c[5] = (char)30;
c[6] = (char)04;
serialPort 1.Write(c, 0, c.Length);
byte[] bb1 = System.Text.Encoding.Default.GetBytes(c);
Kann ich sehen, in der serial port monitor:
01 00 00 02 25 1E 04
offensichtlich 37 umgewandelt, 25 und 30-1E...
Wie gebe ich 37 und 30 und nicht hex-Werte... ich habe versucht, verschiedene Möglichkeiten...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den serial port monitor zeigt die Werte im hexadezimalen, so dass Sie die Werte übereinstimmen, die Sie senden genau an. Es ist keine Konvertierung geht, die decimal-Wert 37 25 in hexadezimal und dezimal Wert 30 1E in hexadezimal.
Verwendung hexadezimaler Schreibweise (0x), für die Literale Werte, wenn Sie das array erstellen, dann sehen Sie, dass die Werte kommen wie erwartet in der serial port monitor:
Das problem hier ist, dass Sie festgelegt haben, die Werte zu senden, die im dezimal -, und die Anzeige im hexadezimalen Format. Natürlich wird es Unterschiede geben.
Dieses Problem zu beheben, ändern Sie Ihren code, um die Werte anzugeben, die in hexadezimal statt, indem jeder Wert mit 0x, wie diese:
Dann werden Sie sehen die gleichen Werte in der Ausgabe als diejenigen, die Sie erwarten.
Siehe auch @Guffas Antwort die zeigt einen besseren Weg, um ein array zu initialisieren, zumindest wenn man mit C# 3.5.
Sie auf der Durchreise sind 37 und 30, keine hex-Werte.
Redest du anzeigen hex-Werte?
Wenn das der Fall ist, was verwenden Sie zum anzeigen des seriellen port-Ausgang? Wenn Ihr nicht etwas, das Sie schrieb, das könnte nur der Weg das Programm verhält.
Wenn Sie übergeben möchten, 37 in hex verwenden, 0x37 statt 37.