距上一次“AT指令(嵌入式+物联网)编程心得C语言”有三个月了,
原文链接:https://blog.csdn.net/qq_32166779/article/details/82810229
本以为是个坟贴,没想到有好多同学来加我和我谈论,期间我又收集了一些比较有用的demo,希望能帮助到大家。
AT指令去空格方式
我之前在使用sim7600的时候,simcom厂商改过一次固件,把指令的中间一些空格数量给改了。
更改固件前
+HTTPACTION: 0,200,27300 //逗号和数字之间没有空格
更改固件后
+HTTPACTION: 0, 200, 27300//逗号和数字之间有空格
然后我当时写了一个滤空格函数,顺便提取逗号后面的数字(十进制)代码如下:
/**************************************************
*函数功能:sim7600c 将字符串转化为10进制数,防止数字前有空格
*只能检查5个空格以内
*return : 十进制数字
***************************************************/
int parse_dec_ota(const char *str)
{
u8 space_count = 0;
while(*str == ' ')
{
str++;
space_count++;
if(space_count>=5)
{
break;
}
}
return parse_dec(str) ;
}
/**************************************************
*函数功能:sim7600c 将字符串转化为10进制数
*参数:str 输入的字符串
*
*
*return : 十进制数字
***************************************************/
int parse_dec(const char *str)
{
int h = 0;
while(*str >= '0' && *str <= '9')
{
h = h * 10;
h += *str - '0';
str++;
}
return h ;
}
但是这个代码明显有缺陷,space_count虽然可以设置更大,但是还是不灵活,后来想到了个暴力方法,这段代码来自arm的uboot代码,无论输入多少个空格都会被过滤掉,代码如下:
for (p = commandline; *p == ' '; p++);
if (*p == '\0')
return;