我需要帮助,我很绝望

在我的项目中工作了两周,这使用了串口通信(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/

10-09 04:27