通过串行 C# 从 Arduino 异步读取数据

时间:2021-06-10 23:27:21

标签: c# arduino serial-port

我对 C# 非常陌生,正在开发一个个人项目,当按下按钮到我的 C# 代码上时,它会从 Arduino 发送一条消息,监听串行端口并在控制台中写入消息。

到目前为止,我已经得到了:

using System;
using System.IO.Ports;
using System.Threading;
namespace ConsoleApp1
{
    class Program
    {
        static SerialPort _serialPort;
        public static void Main()
        {
            _serialPort = new SerialPort();
            _serialPort.PortName = "COM4";//Set your board COM
            _serialPort.BaudRate = 9600;
            _serialPort.Open();
            while (true)
            {
                string a = _serialPort.ReadExisting();
                Console.WriteLine(a);
                Thread.Sleep(200);
            }
        }
    }
}

在我的控制台应用程序中,我还想做其他事情,而不仅仅是等待传入的数据,所以我想我的选择是使用异步?

我试过了:C# Async Serial Port Read 但无法让它工作。

有没有人有任何关于从哪里开始的建议,很抱歉这个菜鸟问题我有大约 10 小时的 c# 经验:)

1 个答案:

答案 0 :(得分:0)

以下是您可以使用的一些选项:

  1. 创建一个循环调用 Read() 的线程,并在接收到数据时调用该事件。
  2. 使用事件 DataReceived(但不推荐使用,原因如下:long article about SerialPort in C#
  3. 只要检查流是否有任何带有 BytesToRead 的数据。如果 BytesToRead > 0,则调用 Read。
  4. 将 BaseStream 属性与 BeginRead 和异步回调结合使用

根据上面提到的文章,唯一可靠的方法是使用 Read 或使用 BaseStream with BeginRead(异步选项)

相关问题