簡體   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