2016-05-14 49 views
-1

我有一个Arduino的RFID读写器enter code here的形式接收数据,这给我的数据通过逃端口,但我C#串行端口的符号

不正确的形式接收数据,如0001685839 025,47439

请帮助我的代码是这样

using System; 
using System.IO.Ports; 

class PortDataReceived 
{ 
    public static void Main() 
    { 
     SerialPort mySerialPort = new SerialPort("COM3"); 

     mySerialPort.BaudRate = 9600; 
     mySerialPort.Parity = Parity.None; 
     mySerialPort.StopBits = StopBits.One; 
     mySerialPort.DataBits = 8; 
     mySerialPort.Handshake = Handshake.None; 
     mySerialPort.RtsEnable = true; 

     mySerialPort.DataReceived += new  SerialDataReceivedEventHandler(DataReceivedHandler); 

     mySerialPort.Open(); 
     Console.WriteLine(); 
     Console.ReadKey(); 
     mySerialPort.Close(); 
    } 

    private static void DataReceivedHandler(object sender,SerialDataReceivedEventArgs e) 
    { 
     SerialPort sp = (SerialPort)sender; 
     string indata = sp.ReadExisting(); 
     Console.Write(indata); 
    } 
} 
+0

你得到了什么呢?你尝试过RtsEnable = false吗? –

+0

已尝试,但仍在接收符号和英文字符 –

回答

0

你收到什么数据? com端口有一个缓冲区的概念。在数据不适合端口缓冲区的情况下,最终可能会有两个读取事件。

你可以尝试这样的事情:

int bytesToRead = sp.BytesToRead; 
var bytes = new byte[bytesToRead]; 

sp.Read(bytes, 0, bytesToRead); 
var indata = Encoding.ASCII.GetString(bytes) 

sp.DiscardInBuffer(); 
sp.DiscardOutBuffer(); 
+0

我正在接收符号和英文单词中的数据而不是数字 –

+0

Sergii Kimlik不工作 –