【发布时间】:2022-10-24 20:13:40
【问题描述】:
我正在建造一个网6.0我们必须与通过以下方式通信的外部设备进行交互的应用程序RS232串行端口。
外部设备使用协议与应用程序通信,我们事先知道大小和某些部分(头状) 的消息包,是基于客户端-服务器架构.
在我尝试实施该解决方案时,我使用了轮询在串行的无限循环中工作正常,尽管同步需要相当长的时间(大约30秒)。
我试图解决该解决方案并转到更多“事件驱动方法" 基于events 并尝试通过数据接收event。
虽然看起来我正在取回数据,但缓冲区的实际内容与预期的内容明显不同,大小要大得多(预计最大大约 10-15 个字节,大约 140 个字节)。
我阅读了提供的第二个链接上的评论,似乎有一些模棱两可的结果:
- 操作系统决定何时引发事件
- 每个字节到达时不会引发事件
我的问题是:
-
什么时候数据接收事件触发?会有操作系统的情况吗缓冲接收的数据并将它们作为一批发送?例如,来自 RS232 的一个“请求”将是 12 个字节,下一个是 14 个字节等,因此当我尝试从缓冲区访问数据时,字节数会大得多?
-
有没有办法配置应用程序或操作系统(不确定该解决方案的便携性),以便当 RS232 设备发送任何类型的有效负载(例如 12 字节或 14 字节等)时,这将显式触发事件?
非常感谢您的宝贵时间!
-
【问题讨论】:
标签: c# .net events serial-port serial-communication