C語言如何實現AT指令ASCII碼的拼接處理

這篇文章主要介紹C語言如何實現AT指令ASCII碼的拼接處理,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

專注于為中小企業(yè)提供成都做網站、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)龍南免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯網行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現規(guī)模擴充和轉變。

在GSM模塊、NBIOT模塊、4G模塊的C/C++編程當中,很多這樣的模塊已經做成了標準的AT指令集,難免涉及到字符串的操作,比如拆分,拼接成一個AT指令。

眾所周知,AT指令我感覺太惡心,為啥要設計出格式如此復雜的指令發(fā)送和回復?不過既然有標準,那肯定也有應對方法。

最近在使用NBIOT---BC28模塊,我的任務是將IMEI碼與IMSI碼讀出來后,利用AT指令將其拼接起來后發(fā)到easyiot平臺,如圖所示:

C語言如何實現AT指令ASCII碼的拼接處理

最終我要在下位機上實現發(fā)送該命令將數據上報。

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 = '\0';
 return 0 ;
 }
}

該函數源碼由我們群的一個資深軟件工程師提供,再經過參考和修改而成,主要的作用如我所說:

C語言如何實現AT指令ASCII碼的拼接處理

比如傳入一個src字符串為:0123456789,那么相應的dest為30313233343536373839,前提是dest有足夠的內存空間。

接下來實現源碼,傳入任意的IMSI碼與IMEI碼,瞬間轉化成可以發(fā)送的AT指令:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//將字符串(只包含數字)全部轉換成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 = '\0';
 return 0 ;
 }
}
void Send_Data_To_easyiot(char *__imsi,char *__imei,int property ,int status)
{
  char nb_code_buf[30] = {0};
 char nb_code_buf1[30] = {0};
 char cmd_buf[200] = {0};
 u8 serial = 0 ;
 u8 status_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);
}
int main(void)
{
 int i ;
 char *_imei = "460111174556744";
 char *_imsi = "867726030069368";
 char imei[31];
 char imsi[31];
 char cmd_buf[150];
 char value = 0 ;
 int property = 0;
 int status = 1 ;
 printf("原來的imei:%s\n",_imei); 
 printf("原來的imsi:%s\n",_imsi); 
 Send_Data_To_easyiot(_imsi,_imei,1,1);
 return 0; 
}

運行結果:

C語言如何實現AT指令ASCII碼的拼接處理

以上是“C語言如何實現AT指令ASCII碼的拼接處理”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!

文章標題:C語言如何實現AT指令ASCII碼的拼接處理
新聞來源:http://muchs.cn/article48/pdjihp.html

成都網站建設公司_創(chuàng)新互聯,為您提供外貿建站、建站公司網站收錄、軟件開發(fā)、、網站設計公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

手機網站建設