我需要在一个循环中每2毫秒接收3个字符。我使用的是SerialPort.Read(),但是读取传入数据需要5到6毫秒。有可能做到这一点吗?非常感谢。
发布于 2016-03-25 02:57:45
您可能需要调用C++,https://stackoverflow.com/a/15795522/67566中的串口
然后你可以从C#,https://msdn.microsoft.com/en-us/library/ms235281.aspx调用它
我希望这样做会更快,但是从C++ -> C#获取数据的速度会慢一些,而且2-3ms的窗口非常小。
您可以在这段时间内从C++获得数据,但您可能需要缓冲它,所以我会在每个数据块上加上一个时间戳,当您从C#调用它时,您可能需要返回多个片段,然后处理它们。
在C++ DLL中,您将希望有一个单独的线程从串口读取。
您将希望使用thread类,https://msdn.microsoft.com/en-us/library/hh920601.aspx,并在创建之后分离它。
最后,您需要使用线程安全队列,这样您就可以查看这两个链接并选择您最喜欢的一个:
https://juanchopanzacpp.wordpress.com/2013/02/26/concurrent-queue-c11/
https://stackoverflow.com/questions/36209961
复制相似问题