c# - SerialPort.Write 信号量超时期限已过
问题描述
我正在做一个项目,我用 Teensy Arduino 板控制大量 RGB LED 灯条。我已经用一部分板子对其进行了测试,一切似乎都很好,直到我将它们全部连接起来并开始将我的字节数组发送到串行端口。作为基础,我使用 teensy 固件中的 OctoWS2811 库来处理 LED(https://www.pjrc.com/teensy/td_libs_OctoWS2811.html)。并使用 C# 应用程序发送我的字节数组数据。
我一直在测试 2 个 USB 集线器,每个集线器都有 6 个 Teensy 板。另外,一切似乎都正常。但是一旦我连接了两个 USB 集线器。我不断收到信号量超时异常
System.IO.IOException: The semaphore timeout period has expired.
at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
at System.IO.Ports.SerialStream.EndWrite(IAsyncResult asyncResult)
at System.IO.Ports.SerialStream.Write(Byte[] array, Int32 offset, Int32 count, Int32 timeout)
at System.IO.Ports.SerialPort.Write(Byte[] buffer, Int32 offset, Int32 count)
乍一看,在它开始向几个 Teensy 抛出这些信号量异常之后,我似乎能够成功发送几个帧。
关于我可以尝试防止这种情况的任何建议。
似乎减少发送到 Teensy 的字节数组的大小可以提高可靠性,但是,但不是很多。所以这只能是巧合。
看起来确实有几帧确实设法发送了,但不久之后一切都开始分崩离析。
预先感谢您的帮助。
亲切的问候