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

正文內(nèi)容

基于短信收發(fā)系統(tǒng)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-07-13 07:59 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 [*pSrc 4]。 // 輸出高 4位 *pDst++ = tab[*pSrc amp。 0x0f]。 pSrc++。 } // 輸出字符串加個(gè)結(jié)束符 *pDst = 39。\039。 // 返回目標(biāo)字符串長(zhǎng)度 return nSrcLength * 2。 } PDU 全串的編碼和解碼 在上 節(jié) 中,我們已經(jīng)討論了 7bit, 8bit 和 UCS2 這幾種 PDU 用戶信息的編碼方式,并且給出了實(shí)現(xiàn)代碼?,F(xiàn)在, 重點(diǎn)描述 PDU 全串的編碼和解碼過(guò)程,以及 GSM 的AT命令實(shí)現(xiàn)方法。這些是底層的核心代碼,為了保證代碼的可移植性,我們盡可能不用MFC的類,必要時(shí)用 ANSI C 標(biāo)準(zhǔn)庫(kù)函數(shù)。 首先,定義如下常量和結(jié)構(gòu): // 用戶信息編碼方式 define GSM_7BIT 0 define GSM_8BIT 4 define GSM_UCS2 8 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 17 頁(yè) // 短消息參數(shù)結(jié)構(gòu),編碼 /解碼共用 // 其中,字符串以 0結(jié)尾 typedef struct { char SCA[16]。 // 短消息服務(wù)中心號(hào)碼 (SMSC地址 ) char TPA[16]。 // 目標(biāo)號(hào)碼或回復(fù)號(hào)碼 (TPDA 或 TPRA) char TP_PID。 // 用戶信息協(xié)議標(biāo)識(shí) (TPPID) char TP_DCS。 // 用戶信息編碼方式 (TPDCS) char TP_SCTS[16]。 // 服務(wù)時(shí)間戳字符串 (TP_SCTS), 接收時(shí)用到 char TP_UD[161]。 // 原始用戶信息 (編碼前或解碼后的 TPUD) char index。 // 短消息序號(hào),在讀取時(shí)用到 } SM_PARAM。 以下是 PDU 全串的編解碼模塊。為簡(jiǎn)化編程,有些字段用了固定值。 // PDU 編碼,用于編制、發(fā)送短消息 // pSrc: 源 PDU 參數(shù)指針 // pDst: 目標(biāo) PDU 串指針 // 返回 : 目標(biāo) PDU 串長(zhǎng)度 int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst) { int nLength。 // 內(nèi)部用的串長(zhǎng)度 int nDstLength。 // 目標(biāo) PDU串長(zhǎng)度 unsigned char buf[256]。 // 內(nèi)部用的緩沖區(qū) // SMSC地址信息段 nLength = strlen(pSrcSCA)。 // SMSC地址字符串的長(zhǎng)度 buf[0] = (char)((nLength amp。 1) == 0 ? nLength : nLength + 1) / 2 + 1。 // SMSC地址信息長(zhǎng)度 buf[1] = 0x91。 // 固定 : 用國(guó)際格式號(hào)碼 nDstLength = gsmBytes2String(buf, pDst, 2)。 // 轉(zhuǎn)換 2個(gè)字節(jié)到目標(biāo) PDU串 nDstLength += gsmInvertNumbers(pSrcSCA, amp。pDst[nDstLength], nLength)。 // 轉(zhuǎn)換SMSC到目標(biāo) PDU串 // TPDU段基本參數(shù)、目標(biāo)地址等 nLength = strlen(pSrcTPA)。 // TPDA地址字符串的長(zhǎng)度 buf[0] = 0x11。 // 是發(fā)送短信 (TPMTI=01), TPVP用相對(duì)格式 (TPVPF=10) buf[1] = 0。 // TPMR=0 buf[2] = (char)nLength。 // 目標(biāo)地址數(shù)字個(gè)數(shù) (TPDA 地址字符串真實(shí)長(zhǎng)度 ) buf[3] = 0x91。 // 固定 : 用國(guó)際格式號(hào) 碼 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 18 頁(yè) nDstLength += gsmBytes2String(buf, amp。pDst[nDstLength], 4)。 // 轉(zhuǎn)換 4個(gè)字節(jié)到目標(biāo) PDU串 nDstLength += gsmInvertNumbers(pSrcTPA, amp。pDst[nDstLength], nLength)。 // 轉(zhuǎn)換 TPDA到目標(biāo) PDU串 // TPDU段協(xié)議標(biāo)識(shí)、編碼方式、用戶信息等 nLength = strlen(pSrcTP_UD)。 // 用戶信息字符串 的長(zhǎng)度 buf[0] = pSrcTP_PID。 // 協(xié)議標(biāo)識(shí) (TPPID) buf[1] = pSrcTP_DCS。 // 用戶信息編碼方式 (TPDCS) buf[2] = 0。 // 有效期 (TPVP)為 5分鐘 if(pSrcTP_DCS == GSM_7BIT) { // 7bit編碼方式 buf[3] = nLength。 // 編碼前長(zhǎng)度 nLength = gsmEncode7bit(pSrcTP_UD, amp。buf[4], nLength+1) + 4。 // 轉(zhuǎn)換 TPDA到目標(biāo) PDU串 } else if(pSrcTP_DCS == GSM_UCS2) { // UCS2編碼方式 buf[3] = gsmEncodeUcs2(pSrcTP_UD, amp。buf[4], nLength)。 // 轉(zhuǎn)換 TPDA到目標(biāo)PDU串 nLength = buf[3] + 4。 // nLength等于該段數(shù)據(jù)長(zhǎng)度 } else { // 8bit編碼方式 buf[3] = gsmEncode8bit(pSrcTP_UD, amp。buf[4], nLength)。 // 轉(zhuǎn)換 TPDA到目標(biāo)PDU串 nLength = buf[3] + 4。 // nLength等于該段數(shù)據(jù)長(zhǎng)度 } nDstLength += gsmBytes2String(buf, amp。pDst[nDstLength], nLength)。 // 轉(zhuǎn)換該段數(shù)據(jù)到目標(biāo) PDU串 // 返回目標(biāo)字符串長(zhǎng)度 return nDstLength。 } // PDU 解碼,用于接收、閱讀短消息 // pSrc: 源 PDU 串指針 // pDst: 目標(biāo) PDU 參數(shù)指針 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 19 頁(yè) // 返回 : 用戶信息串長(zhǎng)度 int gsmDecodePdu(const char* pSrc, SM_PARAM* pDst) { int nDstLength。 // 目標(biāo) PDU串長(zhǎng)度 unsigned char tmp。 // 內(nèi)部用的臨時(shí)字節(jié)變量 unsigned char buf[256]。 // 內(nèi)部用的緩沖區(qū) // SMSC地址信息段 gsmString2Bytes(pSrc, amp。tmp, 2)。 // 取長(zhǎng)度 tmp = (tmp 1) * 2。 // SMSC號(hào)碼串長(zhǎng)度 pSrc += 4。 // 指針后移 gsmSerializeNumbers(pSrc, pDstSCA, tmp)。 // 轉(zhuǎn)換 SMSC號(hào)碼到目標(biāo) PDU串 pSrc += tmp。 // 指針后移 // TPDU段基本參數(shù)、回復(fù)地址等 gsmString2Bytes(pSrc, amp。tmp, 2)。 // 取基本參數(shù) pSrc += 2。 // 指針后移 if(tmp amp。 0x80) { // 包含回復(fù) 地址,取回復(fù)地址信息 gsmString2Bytes(pSrc, amp。tmp, 2)。 // 取長(zhǎng)度 if(tmp amp。 1) tmp += 1。 // 調(diào)整奇偶性 pSrc += 4。 // 指針后移 gsmSerializeNumbers(pSrc, pDstTPA, tmp)。 // 取 TPRA號(hào)碼 pSrc += tmp。 // 指針后移 } // TPDU段協(xié)議標(biāo)識(shí)、編碼方式、用戶信息等 gsmString2Bytes(pSrc, (unsigned char*)amp。pDstTP_PID, 2)。 // 取協(xié)議標(biāo)識(shí) (TPPID) pSrc += 2。 // 指針后移 gsmString2Bytes(pSrc, (unsigned char*)amp。pDstTP_DCS, 2)。 // 取編碼方式 (TPDCS) pSrc += 2。 // 指針后移 gsmSerializeNumbers(pSrc, pDstTP_SCTS, 14)。 // 服務(wù)時(shí)間戳字符串 (TP_SCTS) pSrc += 14。 // 指針后移 gsmString2Bytes(pSrc, amp。tmp, 2)。 // 用戶信息長(zhǎng)度 (TPUDL) pSrc += 2。 // 指針后移 if(pDstTP_DCS == GSM_7BIT) { // 7bit解碼 nDstLength = gsmString2Bytes(pSrc, buf, tmp amp。 7 ? (int)tmp * 7 / 4 + 2 : (int)tmp * 7 / 4)。 // 格式轉(zhuǎn)換 gsmDecode7bit(buf, pDstTP_UD, nDstLength)。 // 轉(zhuǎn)換到 TPDU nDstLength = tmp。 } 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 20 頁(yè) else if(pDstTP_DCS == GSM_UCS2) { // UCS2解 碼 nDstLength = gsmString2Bytes(pSrc, buf, tmp * 2)。 // 格式轉(zhuǎn)換 nDstLength = gsmDecodeUcs2(buf, pDstTP_UD, nDstLength)。 // 轉(zhuǎn)換到 TPDU } else { // 8bit解碼 nDstLength = gsmString2Bytes(pSrc, buf, tmp * 2)。 // 格式轉(zhuǎn)換 nDstLength = gsmDecode8bit(buf, pDstTP_UD, nDstLength)。 // 轉(zhuǎn)換到 TPDU } // 返回目標(biāo)字符串長(zhǎng)度 return nDstLength。 } 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 21 頁(yè) 第 3 章 AT 指令 AT 指令 TC35 模塊的 AT 指令列表 涉及 TC35 模塊的 AT 指令 很多,但 與 SMS 有關(guān)的 GSM AT 指令 如下 ( from ) : AT 指令 功 能 AT+CMGC Send an SMS mand(發(fā)出一條短消息命令) AT+CMGD Delete SMS message(刪除 SIM卡內(nèi)存的短消息) AT+CMGF Select SMS message formate(選擇短消息信息格式: 0PDU。1文本) AT+CMGL List SMS message
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1