Kann ich mit SerialPort.Schreiben senden byte-array
Dokumentation von SerialPort
Write
sagt, dass
Standardmäßig SerialPort verwendet ASCIIEncoding Kodierung der Zeichen.
ASCIIEncoding kodiert alle Zeichen größer als 127 als (char)63 oder
'?'. Um die Unterstützung zusätzlicher Zeichen in diesem Bereich, setzen Sie Encoding auf
Bei UTF8Encoding, UTF32Encoding, oder UnicodeEncoding.
Siehe auch hier. Bedeutet das ich kann nicht senden byte-array mit write
?
Ja, Sie können msdn.microsoft.com/en-us/library/ms143551(v=vs. 110).aspx
Ja, aber das ist der doc, der sagt: "ASCIIEncoding kodiert alle Zeichen größer als 127 als (char)63 oder '?'. "- so ist dies leicht verwirrend, was ist der Grund, warum ich, fragte
Wenn Sie halten Sie zu Lesen, Sie werden sehen, dass Sie können die Codierung ändern. Es ist die treffend benannte Encoding-Eigenschaft der seriellen Schnittstelle.
Also wenn ich die Codierung auf UTF8, ich sollte in der Lage sein zu senden byte-array?
Btw. Denken Sie, dass diese Umsetzung sinnvoll ist: forums.codeguru.com/showthread.php?182234-serial-ports-C?
Ja, aber das ist der doc, der sagt: "ASCIIEncoding kodiert alle Zeichen größer als 127 als (char)63 oder '?'. "- so ist dies leicht verwirrend, was ist der Grund, warum ich, fragte
Wenn Sie halten Sie zu Lesen, Sie werden sehen, dass Sie können die Codierung ändern. Es ist die treffend benannte Encoding-Eigenschaft der seriellen Schnittstelle.
Also wenn ich die Codierung auf UTF8, ich sollte in der Lage sein zu senden byte-array?
Btw. Denken Sie, dass diese Umsetzung sinnvoll ist: forums.codeguru.com/showthread.php?182234-serial-ports-C?
InformationsquelleAutor | 2015-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist verwirrend Methoden, die Lesen/schreiben
string
s oderchar
s, mit Methoden, die Lesen/schreibenbytes
.E. g., wenn Sie rufen:
port.Write("абв")
erhalten Sie "???" (
0x3F
0x3F
0x3F
) in der port-Puffer standardmäßig. Auf der anderen Seite, dieser Aufruf:schreiben Sequenz
0xE0
0xE1
0xE2
direkt, ohne Austausch von bytes zu0x3F
Wert.UPD.
Schauen wir in den Quellcode:
Sehen Sie den Unterschied?
Methode, das akzeptiert
string
, konvertiert Zeichenfolgen in einerbyte
array, dass mit der derzeitigen Codierung für port. Methode, das akzeptiertbyte
array, schreibt es direkt zu einem stream, der wrapper um die native API.Und ja, Dokumentation Narren Sie.
Nein, es wäre ein sehr komisches Verhalten. Ich werde zu aktualisieren, zu beantworten.
Ok, danke. Vielleicht können Sie mir einige Ratschläge hier: stackoverflow.com/questions/32859276/..., ich kann nicht scheinen, um die richtige Antwort auf das. Sollte ich versuchen, SerialPort oder gehen Sie mit PInvoke?
kommentierte verknüpfte Frage, aber ich denke, es wird nützlicher sein, wenn Sie in der post ein bestimmtes problem.
Ich antwortete auf Ihren Kommentar zu, bitte sehen. Ja, aber ich wollte nicht zu bewegen, um die Tests noch. Da gibt es einige read/write-Methoden, die ich brauche, um zu schreiben. Zuerst wählen Ansatz
InformationsquelleAutor Dennis
Diese
und diese
Ergebnis ist die bytes übertragen werden. In dem letztgenannten die Kodierung der serielle port kann alles sein.
Den seriellen port-Codierung nur Fragen für Methoden, die das Lesen oder schreiben von strings.
Ja, es funktioniert und der Standardwert für den port ist ASCII. Sie können die Codierung ändern.
InformationsquelleAutor dbasnett