2016-05-14 7 views
-1

я имею Arduino RFID считыватель enter code here которые посылают мне данные через Sérail порт, но я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 не работает –