C语言如何实现AT指令ASCII码的拼接处理

这篇文章主要介绍C语言如何实现AT指令ASCII码的拼接处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

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

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

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

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

程序源码实现:

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

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

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

比如传入一个src字符串为:0123456789,那么相应的dest为30313233343536373839,前提是dest有足够的内存空间。

接下来实现源码,传入任意的IMSI码与IMEI码,瞬间转化成可以发送的AT指令:

#include
#include
#include
//将字符串(只包含数字)全部转换成ascii
intstrnumber_to_asciistr(char*dest,constchar*src,intlen)
{
inti=0;
if(0==len||NULL==src||NULL==dest)
return-1;
else
{
for(i=0;i'9')
return-2;
*dest++="0123456789"[*src>>4];
*dest++="0123456789"[*src&0x0f];
}
*dest='\0';
return0;
}
}
voidSend_Data_To_easyiot(char*__imsi,char*__imei,intproperty,intstatus)
{
charnb_code_buf[30]={0};
charnb_code_buf1[30]={0};
charcmd_buf[200]={0};
u8serial=0;
u8status_bit=0;
//IMSI整体转ASCII
strnumber_to_asciistr(nb_code_buf,imei,15);
//IMEI整体转ASCII
strnumber_to_asciistr(nb_code_buf1,imsi,15);
if(property==1)
serial=2;
else
serial=1;
if(status==0)
status_bit=0x3A;
else
status_bit=0x3B;
sprintf(cmd_buf,"AT+QLWULDATAEX=57,01F00035000150FFFFFFCE%s%s000001667A5DF5700%d00040%d0001%d%x,0x0100",nb_code_buf,nb_code_buf1,serial,status,status+30,status_bit);
printf("拼接AT指令::%s\n",cmd_buf);
}
intmain(void)
{
inti;
char*_imei="460111174556744";
char*_imsi="867726030069368";
charimei[31];
charimsi[31];
charcmd_buf[150];
charvalue=0;
intproperty=0;
intstatus=1;
printf("原来的imei:%s\n",_imei);
printf("原来的imsi:%s\n",_imsi);
Send_Data_To_easyiot(_imsi,_imei,1,1);
return0;
}

运行结果:

以上是“C语言如何实现AT指令ASCII码的拼接处理”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-05-30 14:07:32
分享
海报
163
上一篇:C语言如何实现2048游戏下一篇:C语言如何实现24点游戏
目录

    忘记密码?

    图形验证码