标题: 单片机通过串口接收不定长字符串如何判断发完了? [打印本页]

作者: 水月sy    时间: 2020-11-4 21:03
标题: 单片机通过串口接收不定长字符串如何判断发完了?
    就比如说,单片机通过串口接收到pc机发来的字符串“abc”时,单片机就做某些事。怎么对单片机接收到的字符串进行判断呢,而且每一次发来的字符串长度也不确定,怎么确定pc机发完了一次呢,一直不知道怎么解决。。。
作者: amandv    时间: 2020-11-4 23:15
可以延时判断,50~100MS没通讯即结束.
作者: 水月sy    时间: 2020-11-4 23:28
amandv 发表于 2020-11-4 23:15
可以延时判断,50~100MS没通讯即结束.

意思是延时一下,然后如果RI还是等于0,说明发完了,好像有道理。
作者: dalaoshi    时间: 2020-11-5 00:20
一般上字串都带有结束符的,比如ABC其实是ABC\n\r,\n是CHR$(13) \r是CHR$(10)。
作者: wulin    时间: 2020-11-5 06:43
水月sy 发表于 2020-11-4 23:28
意思是延时一下,然后如果RI还是等于0,说明发完了,好像有道理。

常用的方法有定时判断、字符串长度标识判断和结束符判断。
作者: 黄youhui    时间: 2020-11-5 08:25
每接受一次数据清零一次定时器,超过100ms没数据直接判断发送结束
作者: 水月sy    时间: 2020-11-5 09:03
dalaoshi 发表于 2020-11-5 00:20
一般上字串都带有结束符的,比如ABC其实是ABC\n\r,\n是CHR$(13) \r是CHR$(10)。

一般字符串都带有结束符,意思是接收到结束符就停止吗?那如果发的字符串命令是错误的时候,比如没有发结束符、只发了AB,那应该怎么处理
作者: 水月sy    时间: 2020-11-5 09:13
wulin 发表于 2020-11-5 06:43
常用的方法有定时判断、字符串长度标识判断和结束符判断。

我觉得定时判断是最好的了,没有什么限制
作者: 水月sy    时间: 2020-11-5 09:14
黄youhui 发表于 2020-11-5 08:25
每接受一次数据清零一次定时器,超过100ms没数据直接判断发送结束

谢谢,有思路了,今天晚上试试
作者: 水月sy    时间: 2020-11-5 09:15
amandv 发表于 2020-11-4 23:15
可以延时判断,50~100MS没通讯即结束.

不应该延时判断,应该用定时器判断
作者: weijoyer    时间: 2020-11-11 17:12
将数据打包,设置一个开始符和结束符
作者: lycike    时间: 2020-11-12 11:53
定义一个结束标识符
作者: 适得府君书    时间: 2020-11-13 09:03
在报文添加标志符比如&abc&。通过判断是否接收到了两个&定义符号。如果接收到了说明已经接收完了。或者加\r\n。方法有很多,多做尝试。
作者: 权威人物    时间: 2020-11-13 14:24
可以定义传输格式,简单来说就是协议,或者规定超时时间视为结束接收




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1