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码的拼接处理”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
C++之list容器模拟怎么实现
C++之list容器模拟怎么实现这篇“C++之list容器模拟怎么...
C++深浅拷贝及简易string类怎么实现
C++深浅拷贝及简易string类怎么实现这篇“C++深浅拷贝及简...
C++之list容器如何使用
C++之list容器如何使用今天小编给大家分享一下C++之list...
C++内存对齐如何实现
C++内存对齐如何实现本篇内容介绍了“C++内存对齐如何实现”的有...
C/C++如何获取CAN信号
C/C++如何获取CAN信号本篇内容主要讲解“C/C++如何获取C...
C/C++程序链接与反汇编工具objdump如何使用
C/C++程序链接与反汇编工具objdump如何使用这篇文章主要介...
C++聚合体初始化的方法是什么
C++聚合体初始化的方法是什么本篇内容介绍了“C++聚合体初始化的...
C++引用如何使用
C++引用如何使用这篇文章主要介绍“C++引用如何使用”的相关知识...
C++类和对象之封装及class与struct的区别是什么
C++怎么实现softmax函数
C++怎么实现softmax函数本篇内容主要讲解“C++怎么实现s...