我需要在一个循环中每2毫秒收到3个字符。我正在使用SerialPort.Read()但读取传入数据需要5到6毫秒。有可能这样做吗? 非常感谢。
答案 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中,您需要一个单独的线程来从串口读取。
您需要使用thread
类https://msdn.microsoft.com/en-us/library/hh920601.aspx并在创建后将其分离。
最后你会想要使用一个线程安全队列,所以你可以看看这两个链接并选择你更喜欢哪一个:
https://juanchopanzacpp.wordpress.com/2013/02/26/concurrent-queue-c11/