AT指令(嵌入式+物联网)编程心得C语言(二)

距上一次“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;

猜你喜欢

转载自blog.csdn.net/qq_32166779/article/details/86535991