我需要帮助,我很绝望
在我的项目中工作了两周,这使用了串口通信(PIC 串口板)。我必须建立连接,但无法从 COM 端口获取数据。我已经阅读了一些论坛,问题的原因似乎是 System.IO.Ports 类 的实现不完整。
当我尝试获取 COM 端口的数据时,事件 SerialDataReceivedEventHandler (表示将处理 SerialPort 对象的 DataReceived 事件的方法。)没有被调用或激活。我试图解决它,但我没有找到明确的解决方案。我想证明一个外部DLL,但 friend 告诉我问题会继续存在,实际上我做到了并得到了同样的问题: SerialDataReceivedEventHandler 不起作用。另外,有人建议我使用辅助线程,尽管我根本不明白该怎么做。
我用 Visual C# 编写了一个程序,一切正常。我很好奇。
我需要找到一个解决方案、一些想法或好的文档。如果有人对此有所了解,请帮助我。
我需要了解造成这种情况的原因才能继续。
最佳答案
Unity 是基于 Mono 的,Mono 并没有完全实现 Serial 类,特别是没有实现通知(例如 SerialDataReceivedEvent)。
这就是为什么它在 Visual Studio 中工作,而不是在 Unity 中工作。
以下是 Serial 类的 Mono 和完整的 .NET 实现之间的区别:
提取自 http://www.mono-project.com/archived/howtosystemioports/#limitations
"限制
在撰写本文时,必须注意一些限制:
1) 接收到的串口数据没有事件通知。 如果您想接收数据,必须设置超时并在您认为可能有数据时通过轮询 ReadByte() 来监视接收到的数据。
2) 只能以 byte[] 格式读取数据——不支持 char[]。您必须自己读取字节并将其转换为您的编码。
3) DiscardNull、ParityReplace、ReceivedBytesThreshold 未实现。”
关于unity3d - 为什么串口在 Unity 中不能正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30011887/