为什么串口不能在Unity中正常工作?

时间:2015-05-03 08:48:49

标签: unity3d serial-port

我需要帮助,我很绝望

在我工作的两周内,我使用串口通信(PIC串行板)。我必须设置连接,但我无法从COM端口获取数据。我已经阅读了一些论坛,问题的原因似乎是 System.IO.Ports类的不完整实现。

当我尝试获取COM端口的数据时,不会调用或激活事件 SerialDataReceivedEventHandler (表示将处理SerialPort对象的DataReceived事件的方法。)。我试图解决它,但我没有找到明确的解决方案。我想要证明一个外部DLL,但是一位朋友告诉我问题会继续,实际上我做了它并遇到了同样的问题: SerialDataReceivedEventHandler 不起作用。此外,有人建议我使用辅助线程,虽然我根本不明白如何做到这一点。

我在visual C#中编写了一个程序,一切正常。我很好奇。

我需要找到一个解决方案,一些想法或好的文档。如果有人知道某件事,请帮帮我。

我需要了解其原因才能继续。

1 个答案:

答案 0 :(得分:2)

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。“