标题:
单片机串口数据解析方法
[打印本页]
作者:
jindizhiwa
时间:
2020-4-22 22:17
标题:
单片机串口数据解析方法
接收字母开头(不分大小写)不定长度的字符串,然后解析做出反馈
字符串基本规格类型主要有3种:
单条命令格式 :ansq;
ansq?
Ansq+参数
结束符号: \r\n
最终串口接收字符串是:
命令+结束符 ======》 CMD(X,Y,'ABCD字符不定长',W); \r\
在程序中怎么处理这些指令容易让人看懂,容易修改、维护?
作者:
wulin
时间:
2020-4-23 06:57
解析串口数据串的前提是制定或了解已确定的通讯协议,空谈解析一段不定长度的字符串,只能是说者泛泛,听者茫茫,毫无实际意义。给你一个示例程序,不一定能解答你的所有疑问,但可以为你提供解决问题的一个思路。
串口发收数据串--甲醛检测.zip
(429.56 KB, 下载次数: 84)
2020-4-23 06:56 上传
点击文件名下载附件
作者:
jindizhiwa
时间:
2020-4-23 22:30
是我没说清,串口接收的指令以字母开头(不分大小写),指令长度不定,结束符号是 \r\n。单片机解析指令后做出反馈。
设置类的指令可以跟?进行查询。比如LIMIT指令:接收的是LIMIT+参数,或LIMIT?两条。
指令较多,在程序中怎么处理这些指令容易让人看懂,容易修改、维护?
指令示例:
3字节指令
void IDN() //返回版本号等
{
const char *ver="60V/2A,Ver1.0.0,SN2020-5-18";
}
4字节指令
void ARST()//功能:故障报警继电器复位
{
}
5字节指令
void FAULT()//查询运行故障状态
{
}
5或6字节
void LIMIT()//设置输出控制设置参数限制值
{
}
void OUTP(char *rev)//设置/查询电源启动/停止
{
if(rev[4]==0)
else if(rev[4]==1)
//reboot(b_shutdown);
else if(rev[4]=='?')
}
8字节指令
void SHUTDOWN()
{
}
void STATE()
{
}
作者:
大漠落日
时间:
2024-3-3 17:28
这个太儿科了,有没有复杂的,象AT命令解析的例子
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1