微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决SerialPort.Write信号灯超时时间已过

我正在一个项目中,我使用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 count)

乍一看,我似乎能够在几个Teensy上引发这些信号量异常之后成功发送几帧。

关于如何防止这种情况的任何建议。

似乎减小发送到Teensy的字节数组的大小可以提高可靠性,但不是很多。因此,这仅仅是一个巧合。

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

预先感谢您的帮助。

亲切的问候

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。