SerialPort.Write信号灯超时时间已过

时间:2020-10-07 16:56:56

标签: c# arduino serial-port semaphore teensy

我正在一个项目中,我使用Teensy Arduino板控制大量RGB LED灯条。 我已经用一块板子对它进行了测试,直到一切都连接好并开始将Byte数组发送到SerialPort之前,一切似乎都还不错。 作为基础,我使用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的字节数组的大小可以提高可靠性,但不是很多。因此,这仅仅是一个巧合。

似乎确实可以发送几个帧,但是不久之后一切都开始崩溃。

预先感谢您的帮助。

亲切的问候

0 个答案:

没有答案