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

时间:2016-03-24 21:04:49

标签: c# serial-port serial-communication

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

1 个答案:

答案 0 :(得分:1)

您可能想要用C ++ https://stackoverflow.com/a/15795522/67566

调用串口

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

调用它

我希望这会更快,但是从C ++获取数据会慢一些 - > C#,你的2-3毫秒的窗口很小。

你可以从C ++那里得到那段时间的数据,但你可能需要缓冲它,所以我会给每一段数据加上一个时间戳,当你用C#调用它时你可能需要返回不止一件,然后处理它们。

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

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

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

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

C++11 thread-safe queue