Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 为什么不';t串行端口是否在统一中正常工作?_Unity3d_Serial Port - Fatal编程技术网

Unity3d 为什么不';t串行端口是否在统一中正常工作?

Unity3d 为什么不';t串行端口是否在统一中正常工作?,unity3d,serial-port,Unity3d,Serial Port,我需要帮助,我绝望了 在两周的时间里,我一直在我的项目中工作,这使用串行端口通信(PIC串行板)。我必须建立连接,但我无法从COM端口获取数据。我读过一些论坛,问题的原因似乎是System.IO.Ports类的实现不完整 当我尝试获取COM端口的数据时,未调用或激活事件SerialDataReceiveDevenHandler(表示将处理SerialPort对象的DataReceived事件的方法)。我试图解决它,但我没有找到一个明确的解决办法。我本想证明一个外部DLL,但一位朋友告诉我问题还会

我需要帮助,我绝望了

在两周的时间里,我一直在我的项目中工作,这使用串行端口通信(PIC串行板)。我必须建立连接,但我无法从COM端口获取数据。我读过一些论坛,问题的原因似乎是System.IO.Ports类的实现不完整

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

我用visualc写了一个程序,一切都很好。我很好奇

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


我需要理解这种情况继续下去的原因。

我认为之所以会发生这种情况,是因为Unity是基于Mono而不是.Net的,而且是一个非常旧的版本。由于AOT缺陷,您很长一段时间无法在iOS设备上使用Linq,本地化实现也有缺陷(或者至少在我尝试使用的Unity的早期版本中是这样)。我甚至不能,所以它居然可以编译。Unity是基于Mono的,Mono没有完全实现Serial类,特别是没有实现通知(比如SerialDataReceivedEvent)

这就是为什么它在VisualStudio中工作,而不是在Unity中工作

以下是串行类的Mono和完整.NET实现之间的区别:

摘自

“限制 在撰写本文时,必须注意以下几个限制:

1) 接收到的串行数据没有事件通知。如果要接收数据,必须设置超时,并在您认为可能存在数据时通过轮询ReadByte()监视接收到的数据

2) 只能读取字节[]格式的数据–不支持字符[]。您必须自己读取字节并将其转换为编码


3) DiscardNull、ParityReplace、ReceivedBytestThreshold未实现。”

请不要使用
unity
标记来回答与unity游戏引擎相关的问题。在使用之前阅读标签的描述通常是一个好主意。我有这个问题,在unity论坛上我读到问题是因为unity使用的是mono 2.0,串行数据事件没有正确实现,因此该事件不会触发该方法。您需要每X次检查一次该值,或者创建自己的dll来实现该值,但这更为困难。SerialPort是在Mono中实现的,甚至在Unity的Mono fork中,请参见此处:但有一些限制,特别是没有实现任何事件,详情如下: