在 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
我需要在循环中每 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