欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實(shí)現(xiàn)AT指令A(yù)SCII碼的拼接處理流程

 更新時(shí)間:2018年12月14日 11:33:07   作者:Engineer-Bruce_Yang  
今天小編就為大家分享一篇關(guān)于C語言實(shí)現(xiàn)AT指令A(yù)SCII碼的拼接處理流程,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

在GSM模塊、NBIOT模塊、4G模塊的C/C++編程當(dāng)中,很多這樣的模塊已經(jīng)做成了標(biāo)準(zhǔn)的AT指令集,難免涉及到字符串的操作,比如拆分,拼接成一個(gè)AT指令。

眾所周知,AT指令我感覺太惡心,為啥要設(shè)計(jì)出格式如此復(fù)雜的指令發(fā)送和回復(fù)?不過既然有標(biāo)準(zhǔn),那肯定也有應(yīng)對(duì)方法。

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

最終我要在下位機(jī)上實(shí)現(xiàn)發(fā)送該命令將數(shù)據(jù)上報(bào)。

AT+QLWULDATAEX=57,01F00035000150FFFFFFCE3436303131313137343535363734353836373732363033303036393336350000016651A049580100040200013191,0x0100 //設(shè)備消息上報(bào)

程序源碼實(shí)現(xiàn):

首先需要將IMEI和IMSI碼的字符串中的字符全部轉(zhuǎn)換為ASCII碼,我們用到這個(gè)函數(shù):

//將字符串(只包含數(shù)字)全部轉(zhuǎn)換成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 ;
 }
}

該函數(shù)源碼由我們?nèi)旱囊粋€(gè)資深軟件工程師提供,再經(jīng)過參考和修改而成,主要的作用如我所說:

比如傳入一個(gè)src字符串為:0123456789,那么相應(yīng)的dest為30313233343536373839,前提是dest有足夠的內(nèi)存空間。

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//將字符串(只包含數(shù)字)全部轉(zhuǎn)換成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整體轉(zhuǎn)ASCII 
 strnumber_to_asciistr(nb_code_buf,imei,15);
  //IMEI整體轉(zhuǎn)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; 
} 

運(yùn)行結(jié)果:

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • C++ explicit關(guān)鍵字講解

    C++ explicit關(guān)鍵字講解

    這篇文章主要介紹了C++ explicit關(guān)鍵字講解,++提供了explicit關(guān)鍵字,相對(duì)于implicit而言,他默認(rèn)關(guān)閉了隱式類型轉(zhuǎn)換方法。至于兩者有什么區(qū)別,看下面文章內(nèi)容的介紹吧
    2021-12-12
  • C語言實(shí)例上手深入理解操作符的使用

    C語言實(shí)例上手深入理解操作符的使用

    C 語言提供了豐富的操作符,有:算術(shù)操作符,移位操作符,位操作符,賦值操作符,單目操作符,關(guān)系操作符,邏輯操作符,條件操作符等。接下了讓我們?cè)趯?shí)例中練一下
    2022-05-05
  • C++11學(xué)習(xí)之右值引用和移動(dòng)語義詳解

    C++11學(xué)習(xí)之右值引用和移動(dòng)語義詳解

    c++11中引用了右值引用和移動(dòng)語義,可以避免無謂的復(fù)制,提高了程序性能。這篇文章將通過一些示例和大家聊聊右值引用和移動(dòng)語義的使用,感興趣的可以了解一下
    2023-02-02
  • C++實(shí)現(xiàn)含附件的郵件發(fā)送功能

    C++實(shí)現(xiàn)含附件的郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)含附件的郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 詳解C++ new-handler機(jī)制

    詳解C++ new-handler機(jī)制

    這篇文章主要介紹了C++ new-handler機(jī)制的相關(guān)資料,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2020-11-11
  • QT實(shí)現(xiàn)用戶登錄注冊(cè)功能

    QT實(shí)現(xiàn)用戶登錄注冊(cè)功能

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)用戶登錄注冊(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 舉例理解C語言二維數(shù)組的指針指向問題

    舉例理解C語言二維數(shù)組的指針指向問題

    這篇文章主要介紹了C語言二維數(shù)組的指針指向問題,文中不建議用二級(jí)指針來訪問二維數(shù)組,需要的朋友可以參考下
    2015-12-12
  • Qt下監(jiān)測(cè)內(nèi)存泄漏的方法

    Qt下監(jiān)測(cè)內(nèi)存泄漏的方法

    在寫Qt應(yīng)用程序時(shí),由于是采用C++語言,經(jīng)常會(huì)碰到一個(gè)令人棘手的問題,那就是內(nèi)存泄漏,本文主要介紹了Qt下監(jiān)測(cè)內(nèi)存泄漏的方法,感興趣的可以了解一下
    2021-12-12
  • C++如何解決rand()函數(shù)生成的隨機(jī)數(shù)每次都一樣的問題

    C++如何解決rand()函數(shù)生成的隨機(jī)數(shù)每次都一樣的問題

    這篇文章主要介紹了C++如何解決rand()函數(shù)生成的隨機(jī)數(shù)每次都一樣的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 基于OpenCv的運(yùn)動(dòng)物體檢測(cè)算法

    基于OpenCv的運(yùn)動(dòng)物體檢測(cè)算法

    這篇文章主要為大家詳細(xì)介紹了基于OpenCv的運(yùn)動(dòng)物體檢測(cè)算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論