繁体   English   中英

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

[英]Async read data from Arduino over serial C#

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

这是到目前为止我得到的:

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# 异步串行端口读取但无法让它工作。

有没有人对从哪里开始有任何建议,对于这个愚蠢的问题,我感到抱歉,我有大约 10 小时的 c# 经验:)。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM