[英]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.