C语言实现AT指令ASCII码的拼接处理流程

2020-01-06 19:49:57刘景俊

在GSM模块、NBIOT模块、4G模块的C/C++编程当中,很多这样的模块已经做成了标准的AT指令集,难免涉及到字符串的操作,比如拆分,拼接成一个AT指令。

众所周知,AT指令我感觉太恶心,为啥要设计出格式如此复杂的指令发送和回复?不过既然有标准,那肯定也有应对方法。

最近在使用NBIOT---BC28模块,我的任务是将IMEI码与IMSI码读出来后,利用AT指令将其拼接起来后发到easyiot平台,如图所示:

C语言,AT指令,ASCII码,拼接

最终我要在下位机上实现发送该命令将数据上报。

AT+QLWULDATAEX=57,01F00035000150FFFFFFCE3436303131313137343535363734353836373732363033303036393336350000016651A049580100040200013191,0x0100 //设备消息上报

程序源码实现:

首先需要将IMEI和IMSI码的字符串中的字符全部转换为ASCII码,我们用到这个函数:


//将字符串(只包含数字)全部转换成ascii 
int strnumber_to_asciistr(char *dest,const char *src,int len)
{
 int i = 0 ; 
 if(0 == len || NULL == src || NULL == dest)
 return -1; 
 else 
 {
 for(i = 0 ; i < len ; i++,src++)
 {
  if(*src < '0' || *src > '9')
  return -2 ; 
  *dest++ = "0123456789"[*src >> 4];
  *dest++ = "0123456789"[*src & 0x0f];
 }
 *dest = '';
 return 0 ;
 }
}

该函数源码由我们群的一个资深软件工程师提供,再经过参考和修改而成,主要的作用如我所说: