如何从SerialPort连续读取

时间:2016-04-26 08:36:33

标签: c# win-universal-app

我需要连续读取Arduino板上的字节流。 为此,我创建了一个方法,它在循环中读取Serialport并将ByteStream暴露给其他类:

public async void ReadSerialPort 
   {
     dataReader = new DataReader(SerialPort.InputStream)
     while (true) {
      uint ReadBufferLength = 16;

      Task < UInt32 > loadAsyncTask;


      loadAsyncTask = dataReader.LoadAsync(ReadBufferLength).AsTask();

      UInt32 rxbytes = await loadAsyncTask;

      RxBytes = new byte[rxbytes];
      if (rxbytes > 0) {
       datareader.ReadBytes(ByteStream);

      }
     }
    }

但我认为这不是连续读取串口的最有效方法,因为这种方法需要几毫秒才能获得字节流。 是否有替代方法来读取字节流?

1 个答案:

答案 0 :(得分:0)

使用事件从SerialPort读取数据:

static void Main(string[] args)
{
    SerialPort sp=  new SerialPort();
    sp.DataReceived += Sp_DataReceived;
}

private static void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    throw new NotImplementedException();
}