freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于gsm短消息方式的gps系統(tǒng)通過串口收發(fā)短消息(doc畢設(shè)論文)(完整版)

2025-07-31 00:44上一頁面

下一頁面
  

【正文】 // 到了一組的最后一個(gè)字節(jié) if(nByte == 7) { // 額外得到一個(gè)目標(biāo)解碼字節(jié) *pDst = nLeft。 // 返回目標(biāo)串長度 return nDst。在Windows系統(tǒng)中,特別是在2000/XP中,可以簡單地調(diào)用API 函數(shù)實(shí)現(xiàn)編碼和解碼。 // 后輸出低位字節(jié) *pDst++ = wchar[i] amp。 // 后低位字節(jié) wchar[i] |= *pSrc++。// 可打印字符串轉(zhuǎn)換為字節(jié)數(shù)據(jù)// 如:C8329BFD0E01 {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}// pSrc: 源字符串指針// pDst: 目標(biāo)數(shù)據(jù)指針// nSrcLength: 源字符串長度// 返回: 目標(biāo)數(shù)據(jù)長度int gsmString2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength){ for(int i=0。) { *pDst = (*pSrc 39。039。A39。 i++) { // 輸出低4位 *pDst++ = tab[*pSrc 4]?,F(xiàn)在,重點(diǎn)描述PDU全串的編碼和解碼過程,以及GSM 。 // 原始用戶信息(編碼前或解碼后的TPUD) char index。 // 兩兩顛倒 for(int i=0。 // 補(bǔ)39。 // 用于保存一個(gè)字符 // 復(fù)制串長度 nDstLength = nSrcLength。嗎? if(*(pDst1) == 39。為簡化編程,有些字段用了固定值。 // 固定: 用國際格式號碼 nDstLength = gsmBytes2String(buf, pDst, 2)。 // 固定: 用國際格式號碼 nDstLength += gsmBytes2String(buf, amp。 // 有效期(TPVP)為5分鐘 if(pSrcTP_DCS == GSM_7BIT) { // 7bit編碼方式 buf[3] = nLength。 // 轉(zhuǎn)換TPDA到目標(biāo)PDU串 nLength = buf[3] + 4。tmp, 2)。 // 指針后移 if(tmp amp。 // 指針后移 } // TPDU段協(xié)議標(biāo)識、編碼方式、用戶信息等 gsmString2Bytes(pSrc, (unsigned char*)amp。 // 指針后移 gsmString2Bytes(pSrc, amp。 // 格式轉(zhuǎn)換 nDstLength = gsmDecodeUcs2(buf, pDstTP_UD, nDstLength)。 // SMSC串長度 int nLength。 // 取PDU串中的SMSC信息長度 nSmscLength++。 // 讀應(yīng)答數(shù)據(jù) // 根據(jù)能否找到+CMS ERROR決定成功與否 if(nLength 0 amp。 // 命令串 char ans[1024]。 strncmp(ans, +CMS ERROR, 10) != 0) { // 循環(huán)讀取每一條短消息, 以+CMGL:開頭 while((ptr = strstr(ptr, +CMGL:)) != NULL) { ptr += 6。 // 準(zhǔn)備讀下一條短消息 nMsg++。 // 根據(jù)能否找到+CMS ERROR決定成功與否 if(nLength 0 amp。 // 打開串口// pPort: 串口名稱或設(shè)備路徑,可用COM1或\\.\COM1兩種方式,建議用后者// nBaudRate: 波特率// nParity: 奇偶校驗(yàn)// nByteSize: 數(shù)據(jù)字節(jié)寬度// nStopBits: 停止位BOOL OpenComm(const char* pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits){ DCB dcb。 = nParity。} // 關(guān)閉串口BOOL CloseComm(){ return CloseHandle(hComm)。}Q 在用AT命令同手機(jī)通信時(shí),需要注意哪些問題?A 任何一個(gè)AT命令發(fā)給手機(jī),都可能返回成功或失敗。我們用到的幾個(gè)PDU模式下的AT命令,是基本的命令,從原則上講,各廠家的手機(jī)以及GSM模塊應(yīng)該都支持,但可能有細(xì)微差別。Q 用戶信息(TPUD)其實(shí)可以是任何的自定義數(shù)據(jù),是嗎?A 是的,盡管手機(jī)上會顯示亂碼。但注意仍然要遵守規(guī)范。關(guān)于手機(jī)鈴聲和圖片格式方面,有什么規(guī)范嗎?A 為統(tǒng)一手機(jī)鈴聲、圖片格式,Motorola和Ericsson, Siemens, Alcatel等共同開發(fā)了EMS(Enhanced Messaging Service)標(biāo)準(zhǔn),并于2002年2月份公布。所以,應(yīng)當(dāng)在發(fā)送命令后,檢測手機(jī)的響應(yīng),失敗后重發(fā)。 // 串口發(fā)出的數(shù)據(jù)長度 WriteFile(hComm, pData, (DWORD)nLength, amp。 SetCommState(hComm, amp。 // 基本的(額外的)寫超時(shí)時(shí)間: 100 ms hComm = CreateFile(pPort, // 串口名稱或設(shè)備路徑 GENERIC_READ | GENERIC_WRITE, // 讀寫方式 0, // 共享方式:獨(dú)占 NULL, // 默認(rèn)的安全描述符 OPEN_EXISTING, // 創(chuàng)建方式 0, // 不需設(shè)置文件屬性 NULL)。 strncmp(ans, +CMS ERROR, 10) != 0) { return TRUE。} // 刪除短消息// index: 短消息序號,從1開始BOOL gsmDeleteMessage(const int index){ int nLength。pMsgindex)。 ptr = ans。 strncmp(ans, +CMS ERROR, 10) != 0) { return TRUE。 // 生成命令 WriteComm(cmd, strlen(cmd))。 // 命令串 char pdu[512]。 // 格式轉(zhuǎn)換 nDstLength = gsmDecode8bit(buf, pDstTP_UD, nDstLength)。 // 用戶信息長度(TPUDL) pSrc += 2。 // 取協(xié)議標(biāo)識(TPPID) pSrc += 2。tmp, 2)。 // SMSC號碼串長度 pSrc += 4。pDst[nDstLength], nLength)。buf[4], nLength+1) + 4。 // 轉(zhuǎn)換4個(gè)字節(jié)到目標(biāo)PDU串 nDstLength += gsmInvertNumbers(pSrcTPA, amp。pDst[nDstLength], nLength)。 // 內(nèi)部用的串長度 int nDstLength。) { pDst。 inSrcLength。 nDstLength++。i+=2) { ch = *pSrc++。大家已經(jīng)注意到PDU串中的號碼和時(shí)間,都是兩兩顛倒的字符串。首先,定義如下常量和結(jié)構(gòu):// 用戶信息編碼方式define GSM_7BIT 0define GSM_8BIT 4define GSM_UCS2 8 // 短消息參數(shù)結(jié)構(gòu),編碼/解碼共用// 其中,字符串以0結(jié)尾typedef struct { char SCA[16]。 0x0f]。 } pSrc++。amp。) 4。 i+=
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1