簡體   English   中英

如何安全地寫入 .NET 中的 SerialPort 6 on Raspberry Pi

[英]How to safely write to SerialPort in .NET 6 on Raspberry Pi

我正在嘗試為 .NET 6 中的串行通信增加一些安全性,但是當端口(在我的測試台上)沒有連接任何東西時,我無法正確處理端口,因為對SerialPort.Close()SerialPort.Dispose()的任何調用都會掛起.

我已經設法將它減少到以下 MRE,我在帶有 Raspberry Pi OS 的 Raspberry Pi 4 上運行。 我正在將我的應用程序構建為依賴於框架且可移植的。

using System.IO.Ports;

var sp = new SerialPort("/dev/ttyAMA0", 38400)
{
    DataBits = 8,
    Parity = Parity.None,
    StopBits = StopBits.One,
    WriteTimeout = TimeSpan.FromSeconds(3).Seconds,
    ReadTimeout = TimeSpan.FromMilliseconds(30).Seconds
};

try
{
    sp.Open();
    sp.WriteLine("123");
}
catch (Exception) { }
finally
{
    Console.WriteLine("Closing");
    sp.Close(); //Hangs here
    Console.WriteLine("Closed");

    Console.ReadLine();
}

我能做些什么來避免我的應用程序掛起嗎?

事實證明,Raspberry Pi 4 已經為藍牙保留了主 UART (/dev/ttyAMA0)。

我需要改用 /dev/ttyS0。

希望這可以幫助那些處於類似泡菜中的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM