在 C# 中读取不到 2ms 的串口数据

Read serialport data in under 2ms in C#

我需要在循环中每 2 毫秒接收 3 个字符。我正在使用 SerialPort.Read() 但读取传入数据需要 5 到 6 毫秒。有没有办法做到这一点? 非常感谢。

你可能想用C++调用串口,

然后你可以从 C# 中调用它,https://msdn.microsoft.com/en-us/library/ms235281.aspx

我希望这会更快,但是您从 C++ -> C# 获取数据的速度会变慢,并且您的 window 2-3 毫秒非常小。

你可以在那个时候从 C++ 中获取数据,我希望,但是你可能需要缓冲它,所以我会在每条数据上放置一个时间戳,当你从 C# 调用它时你可能需要到return个以上,再处理。

在 C++ DLL 中,您需要一个单独的线程来从串口读取数据。

您将要使用 thread class、https://msdn.microsoft.com/en-us/library/hh920601.aspx 并在创建后将其分离。

最后你会想要使用线程安全队列,所以你可以看看这两个链接并选择你更喜欢的一个:

https://juanchopanzacpp.wordpress.com/2013/02/26/concurrent-queue-c11/

C++11 thread-safe queue