【发布时间】:2016-10-18 11:31:56
【问题描述】:
我有一些设备需要使用 SerialPort 进行连接。 这个设备从我这边接收命令,也向我发送数据。 我在同一个 class=> 同一个线程中进行所有发送/接收。
我已经连接到这个设备并且我成功地从这个设备发送/接收命令和数据。
我需要每 25 毫秒发送一次的命令是“给我你的状态”——这意味着我要求设备返回一些带有数据的结构。
如果我丢失了一些接收数据...当我执行“serialPortStream.BytesToRead”(测试是否有一些数据要获取)时,我会在我的 ByteReading 上找到我还没有 rad 的旧缓冲区吗? 如果我错过了我需要阅读的最后一个包裹,或者收到的新数据会删除之前已经收到的旧数据,我会有多少包裹?
【问题讨论】:
-
你需要两个线程。我会创建一个带有事件处理程序的类,例如 SerialPort.DataRecieved += ____ ,它会在收到新字节时填充 ConcurrentQueue。然后,您可以在主线程中从该队列中读取并从那里进行写入。请注意,您的数据包可能有问题,但您绝对不会错过任何一个。
标签: c# .net serial-port serial-communication