找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4684|回复: 13
收起左侧

单片机通过串口接收不定长字符串如何判断发完了?

[复制链接]
ID:839001 发表于 2020-11-4 21:03 | 显示全部楼层 |阅读模式
    就比如说,单片机通过串口接收到pc机发来的字符串“abc”时,单片机就做某些事。怎么对单片机接收到的字符串进行判断呢,而且每一次发来的字符串长度也不确定,怎么确定pc机发完了一次呢,一直不知道怎么解决。。。
回复

使用道具 举报

ID:414556 发表于 2020-11-4 23:15 | 显示全部楼层
可以延时判断,50~100MS没通讯即结束.
回复

使用道具 举报

ID:839001 发表于 2020-11-4 23:28 来自手机 | 显示全部楼层
amandv 发表于 2020-11-4 23:15
可以延时判断,50~100MS没通讯即结束.

意思是延时一下,然后如果RI还是等于0,说明发完了,好像有道理。
回复

使用道具 举报

ID:283954 发表于 2020-11-5 00:20 | 显示全部楼层
一般上字串都带有结束符的,比如ABC其实是ABC\n\r,\n是CHR$(13) \r是CHR$(10)。
回复

使用道具 举报

ID:213173 发表于 2020-11-5 06:43 | 显示全部楼层
水月sy 发表于 2020-11-4 23:28
意思是延时一下,然后如果RI还是等于0,说明发完了,好像有道理。

常用的方法有定时判断、字符串长度标识判断和结束符判断。
回复

使用道具 举报

ID:592807 发表于 2020-11-5 08:25 | 显示全部楼层
每接受一次数据清零一次定时器,超过100ms没数据直接判断发送结束
回复

使用道具 举报

ID:839001 发表于 2020-11-5 09:03 | 显示全部楼层
dalaoshi 发表于 2020-11-5 00:20
一般上字串都带有结束符的,比如ABC其实是ABC\n\r,\n是CHR$(13) \r是CHR$(10)。

一般字符串都带有结束符,意思是接收到结束符就停止吗?那如果发的字符串命令是错误的时候,比如没有发结束符、只发了AB,那应该怎么处理
回复

使用道具 举报

ID:839001 发表于 2020-11-5 09:13 | 显示全部楼层
wulin 发表于 2020-11-5 06:43
常用的方法有定时判断、字符串长度标识判断和结束符判断。

我觉得定时判断是最好的了,没有什么限制
回复

使用道具 举报

ID:839001 发表于 2020-11-5 09:14 | 显示全部楼层
黄youhui 发表于 2020-11-5 08:25
每接受一次数据清零一次定时器,超过100ms没数据直接判断发送结束

谢谢,有思路了,今天晚上试试
回复

使用道具 举报

ID:839001 发表于 2020-11-5 09:15 | 显示全部楼层
amandv 发表于 2020-11-4 23:15
可以延时判断,50~100MS没通讯即结束.

不应该延时判断,应该用定时器判断
回复

使用道具 举报

ID:339654 发表于 2020-11-11 17:12 | 显示全部楼层
将数据打包,设置一个开始符和结束符
回复

使用道具 举报

ID:838395 发表于 2020-11-12 11:53 | 显示全部楼层
定义一个结束标识符
回复

使用道具 举报

ID:367934 发表于 2020-11-13 09:03 | 显示全部楼层
在报文添加标志符比如&abc&。通过判断是否接收到了两个&定义符号。如果接收到了说明已经接收完了。或者加\r\n。方法有很多,多做尝试。
回复

使用道具 举报

ID:311846 发表于 2020-11-13 14:24 | 显示全部楼层
可以定义传输格式,简单来说就是协议,或者规定超时时间视为结束接收
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表