嵌入式技术论坛
直播中

訾存贵

8年用户 926经验值
私信 关注
[问答]

使用uart3进行数据通信,如何实现时间作为结束标志?

使用uart3进行数据通信,如果不想在数据结尾加类似’\n’的符号作为结束标志,而是想使用时间作为结束标志,如几百毫秒没收到数据就认为一组数据接收完毕,请问有什么办法实现吗。

回帖(2)

vinww特烦恼

2023-8-20 15:22:10
开个定时器,设置为单次计时。收到数据就重置定时器计时,然后在定时器的超时回调里处理数据包的任务。
举报

1653339509.516700

2023-10-11 11:35:30
可以通过在发送数据时,在数据结尾加入一个表示当前时间的时间戳。接收端在收到数据后,检查时间戳是否满足时间间隔。如果时间间隔超过设定的阈值,则认为数据接收完毕。具体实现方法如下:

1.发送端:

a. 在发送数据结尾添加一个时间戳,表示当前时间。

b. 发送数据。

2.接收端:

a. 接收数据。

b. 获取当前时间和上一次接收到数据的时间的差值。

c. 如果时间差大于设定的时间间隔阈值,则认为本次数据接收完整,进行数据处理。

d. 如果时间差小于设定的时间间隔阈值,则继续等待数据的到来。

需要注意的是,时间戳的数据格式需要在发送端和接收端之间协商一致,以保证正确解析时间戳。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分