2016-07-28 18 views
0

Ich habe Serialport-Klasse in meiner früheren Desktop-Anwendung verwendet, wo ich folgendes Verfahren wurde unter Verwendung von Antwort von SerialportWas entspricht in der Windows 10 App serialPort.ReadExisting()?

var response = serialPort.ReadExisting(); 

Jetzt in derselben Sache zu lesen Windows-10 App folgende Methode

public static async Task<string> ReadAsync(CancellationToken cancellationToken,DataReader dataReaderObject) 
     { 
      string response = string.Empty; 
      try 
      { 
       var flag = false; 
       Task<UInt32> loadAsyncTask; 
       uint readBufferLength = 1024; 
       cancellationToken.ThrowIfCancellationRequested(); 
       dataReaderObject.InputStreamOptions = InputStreamOptions.Partial; 
       loadAsyncTask = dataReaderObject.LoadAsync(readBufferLength).AsTask(); 

       UInt32 bytesRead = await loadAsyncTask; 
       if (bytesRead > 0) 
       { 
        byte[] bytes = new byte[bytesRead]; 
        dataReaderObject.ReadBytes(bytes); 
        //response = Encoding.ASCII.GetString(bytes); 
        // response = Convert.ToString(bytes); 
        response= ASCIIEncoding.ASCII.GetString(bytes); 
       } 
      } 
      catch (Exception ex) 
      { 
       response = string.Empty; 
      } 
      return response; 
     } 
Ich bin die Umsetzung

Aber, sieht aus, als ob ich Antwort in unterschiedlichem Kodierungsformat bekomme. Als ich beide Antworten in Notepad ++ kopiert habe, habe ich folgenden Unterschied gefunden:

enter image description here Was läuft hier falsch? Was entspricht in der Windows 10 App serialPort.ReadExisting()?

+0

Es wäre hilfreich, wenn Sie Legacy-SerialPort-Code einfügen können. Welche Bytes senden Sie? – Jackie

Antwort

0

Die SerialPort.ReadExisting Method() gibt den Inhalt des Stroms und interne Puffer des SerialPort Objekts als String, so dass die äquivalent zu ReadExisting() in 10 Windows-Anwendung sollte DataReader.ReadString | readString method sein.

Aber es ist in Ordnung, DataReader.ReadBytes | readBytes method zu verwenden, Problem ist, wie das Bytearray in Zeichenfolge konvertiert wird. Das Byte hier verwendet uint8 Codierung ist es möglich, Sie Zeichenfolge wie folgt zu erreichen:

Encoding.UTF8.GetString(bytes); 

Sie auf ein Japaneses blog beziehen, schreibt er Daten ASCII-Kodierung, aber immer noch als UTF8 lesen müssen.