Wie wendet man die Codierung beim Auslesen von einer seriellen Schnittstelle
Bin ich beim Lesen von Daten von einem seriellen port. Ich lese dieses posting: http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/a709d698-5099-4e37-9e10-f66ff22cdd1e
Schreibt er über viele der Themen, die ich begegnen, aber in seinem schreiben bezieht er sich auf mit: System.Text.- Codierung.GetEncoding("Windows-1252"). Das problem das ich habe ist, Wann und wie Sie diese anwenden. Es gibt drei potitional spots meiner Meinung nach. Wenn der serielle port-Objekt definieren:
private SerialPort comport = new SerialPort();
Den Event-handler:
comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
Oder beim Lesen der Daten:
string data = comport.ReadExisting();
Egal wo ich es hinzufügen. Ich glaube, ich bekomme Fehler. Wie würde man Codierungen?
InformationsquelleAutor rross | 2010-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt
ReadExisting
verwenden Sie die SchnittstelleRead
Methode, um die bytes und dann konvertieren Sie Sie in einen string mit der entsprechenden Codierung, wie diese:Update: Hier ist eine einfachere, noch-C#-2.0-freundliche version, basierend auf João Antwort. Nachdem Sie instanziieren Sie Ihr
SerialPort
- Objekt, setzen dessenEncoding
- Eigenschaft, etwa so:Dann ist dein DataReceived-Methode wird nur dieses:
ja, diese Methode würde, ersetzen Sie einfach Ihre vorhandenen port_DataReceived Methode. Dies ist praktisch die gleiche Lösung wie die andere Antwort, außer, dass dieser Ansatz ausdrücklich verwendet, das gewünschte encoding jedes mal, anstatt sich auf die Standard-Kodierung ist, wurde zuvor eingestellt. Die Hälfte von eins, sechs Dutzend von der anderen. 🙂
Plus, die andere Antwort kann nicht kompiliert werden, wenn die Art der Sache, die Ihnen wichtig. 🙂
Ich bin gespannt auf die build-Fehler, die Sie bekommen, für die andere Antwort. Der OP nicht ein .NET-version, vorausgesetzt, die jüngste ist ein faires Spiel.
InformationsquelleAutor MusiGenesis
Sollten Sie die entsprechende Codierung vor dem senden oder empfangen von Daten, so dass der Konstruktor ist eine gute Wahl.
Wenn Sie immer noch Probleme mit dem Empfang der Daten, nachdem diese Sie benötigen, um sicherzustellen, dass die gesendeten Daten an der seriellen Schnittstelle ist in der Codierung, die Sie angegeben haben ("Windows-1252").
new SerialPort
, aber ich bin mir nicht sicher). Schreiben Sie die neueste version von C# ist wirklich fair Spiel, aber wenn der Fragesteller nicht passiert, es zu haben, naja. Meine Antwort war nur (und bei dir nicht kompilieren), da ich noch C# 2.0 auf meinem home box.+1 sowieso, da es eine bessere und einfachere Ansatz.
InformationsquelleAutor João Angelo