【发布时间】:2014-08-22 15:09:30
【问题描述】:
我仍然对 TComPort 组件有问题,但这次不是组件本身,而是它背后的逻辑。我有一个设备女巫通过串行端口发送一些 ascii 字符串我需要 prase 这些字符串问题是计算机反应非常快,所以在事件 char 它只捕获字符串的一部分,其余的字符串稍后回来......所以当它被接收时解析它是不可能的。
我正在考虑编写一个计时器来验证是否在 10 秒或更长时间内没有串行活动,然后将我保存到缓冲区中的字符串 prase。但是这种方法是不专业的,不是有一个空闲的事件女巫我可以听...等待我的问题的最佳解决方案。谢谢。
【问题讨论】:
-
这是一个已知问题。在更多环境中使用它。数据事件触发确实比后面的数据快。除了在阅读前稍等片刻之外,我不确定还有什么其他的。
-
这很正常,您应该简单地将字符存储在缓冲区中,然后重置计时器。然后使用计时器来触发实际活动 - 计时器可能非常紧张。您希望以“状态机”结束并拥有事件触发器。
-
假设您使用 Djean Crnila 等人的 TComport(有几个组件称为“TComport”)。此问题可能与数据事件触发有关,但也可能您的串行设备的波特率设置为与您的 comport 控件的速率不同的速率。如果您的设备每隔几毫秒发送一次数据包,如果数据包的长度合理,您应该能够轻松捕获和解析整个数据包。设备是否发送数据包结束控制字符? - 使它更容易。如果您提供有关设备、收到的数据包等的更多信息。有人可能会提供帮助。
-
编写一个数据包组件并不难。事件中的所有数据都进入缓冲区,数据包分析缓冲区,根据您的需要,您可以有一个 startcondition、endcondition 等等......
标签: delphi serial-port