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

正文內(nèi)容

基于gsm短消息方式的gps系統(tǒng)通過(guò)串口收發(fā)短消息(doc畢設(shè)論文)-免費(fèi)閱讀

  

【正文】 這種情況下,編碼方式已經(jīng)沒(méi)有任何意義。Q 用戶信息(TPUD)內(nèi)除了一般意義上的短消息,還可以是圖片和聲音數(shù)據(jù)。例如,用AT+CMGS命令發(fā)送短消息時(shí),如果此時(shí)正好手機(jī)處于振鈴或通話狀態(tài),就會(huì)返回一個(gè)+ CMS ERROR。} // 寫(xiě)串口// pData: 待寫(xiě)的數(shù)據(jù)緩沖區(qū)指針// nLength: 待寫(xiě)的數(shù)據(jù)長(zhǎng)度void WriteComm(void* pData, int nLength){ DWORD dwNumWrite。 = nStopBits。 // 串口控制塊 COMMTIMEOUTS timeouts = { // 串口超時(shí)控制參數(shù) 100, // 讀字符間隔超時(shí)時(shí)間: 100 ms 1, // 讀操作時(shí)每字符的時(shí)間: 1 ms (n個(gè)字符總共為n ms) 500, // 基本的(額外的)讀超時(shí)時(shí)間: 500 ms 1, // 寫(xiě)操作時(shí)每字符的時(shí)間: 1 ms (n個(gè)字符總共為n ms) 100}。amp。 // 短消息計(jì)數(shù)加1 } } return nMsg。 // 跳過(guò)+CMGL: sscanf(ptr, %d, amp。 // 應(yīng)答串 nMsg = 0。amp。 // 加上長(zhǎng)度字節(jié)本身 // 命令中的長(zhǎng)度,不包括SMSC信息長(zhǎng)度,以數(shù)據(jù)字節(jié)計(jì) sprintf(cmd, AT+CMGS=%d\r, nPduLength / 2 nSmscLength)。 // 串口收到的數(shù)據(jù)長(zhǎng)度 char cmd[16]。 // 轉(zhuǎn)換到TPDU } else { // 8bit解碼 nDstLength = gsmString2Bytes(pSrc, buf, tmp * 2)。tmp, 2)。pDstTP_PID, 2)。 0x80) { // 包含回復(fù)地址,取回復(fù)地址信息 gsmString2Bytes(pSrc, amp。 // 取長(zhǎng)度 tmp = (tmp 1) * 2。 // nLength等于該段數(shù)據(jù)長(zhǎng)度 } nDstLength += gsmBytes2String(buf, amp。 // 編碼前長(zhǎng)度 nLength = gsmEncode7bit(pSrcTP_UD, amp。pDst[nDstLength], 4)。 // 轉(zhuǎn)換2個(gè)字節(jié)到目標(biāo)PDU串 nDstLength += gsmInvertNumbers(pSrcSCA, amp。// PDU編碼,用于編制、發(fā)送短消息// pSrc: 源PDU參數(shù)指針// pDst: 目標(biāo)PDU串指針// 返回: 目標(biāo)PDU串長(zhǎng)度int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst){ int nLength。F39。 // 兩兩顛倒 for(int i=0。F39。 inSrcLength。 // 短消息序號(hào),在讀取時(shí)用到} SM_PARAM。這些是底層的核心代碼,為了保證代碼的可移植性,我們盡可能不用MFC的類,必要時(shí)用ANSI C標(biāo)準(zhǔn)庫(kù)函數(shù)。 // 輸出高4位 *pDst++ = tab[*pSrc amp。 + 10。 amp。039。 inSrcLength。 } // UNICODE串字符串 nDstLength = ::WideCharToMultiByte(CP_ACP, 0, wchar, nSrcLength/2, pDst, 160, NULL, NULL)。 0xff。如果沒(méi)有系統(tǒng)的支持,比如用單片機(jī)控制手機(jī)模塊收發(fā)短消息,只好用查表法解決了。}需要指出的是,7bit的字符集與ANSI標(biāo)準(zhǔn)字符集不完全一致,在0x20以下也排布了一些可打印字符,但英文字母、阿拉伯?dāng)?shù)字和常用符號(hào)的位置兩者是一樣的。 // 修改目標(biāo)串的指針和計(jì)數(shù)值 pDst++。 nLeft = 0。 } // 返回目標(biāo)串長(zhǎng)度 return nDst。 7。我們對(duì)英文短信“Hello!”進(jìn)行編碼:將源串每8個(gè)字符分為一組(這個(gè)例子中不滿8個(gè))進(jìn)行編碼,在組內(nèi)字符間壓縮,但每組之間是沒(méi)有什么聯(lián)系的。這里,將一個(gè)英文字母、一個(gè)漢字和一個(gè)數(shù)據(jù)字節(jié)都視為一個(gè)字符。手機(jī)接收到的PDU串可以是08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30下面介紹的內(nèi)容,是在PDU Mode下發(fā)送和接收短消息的實(shí)現(xiàn)方法。Q 我們打算開(kāi)發(fā)一個(gè)基于GSM短消息方式的GPS系統(tǒng),如何利用SMS進(jìn)行數(shù)據(jù)通信?A 首先,我們要對(duì)由ESTI制訂的SMS規(guī)范有所了解。Text Mode是純文本方式,可使用不同的字符集,從技術(shù)上說(shuō)也可用于發(fā)送中文短消息,但國(guó)內(nèi)手機(jī)基本上不支持,主要用于歐美地區(qū)。我們先用兩個(gè)實(shí)際的例子說(shuō)明PDU串的結(jié)構(gòu)和編排方式。Q 上面兩例中已經(jīng)出現(xiàn)了7bit和UCS2編碼,請(qǐng)?jiān)敿?xì)介紹一下這些編碼方式?A 在PDU Mode中,可以采用三種編碼方式來(lái)對(duì)發(fā)送的內(nèi)容進(jìn)行編碼,它們是7bit、8bit和UCS2編碼。如果用戶信息(TPUD)中存在一個(gè)頭(基本參數(shù)的TPUDHI為1),在所有編碼方式下,用戶信息長(zhǎng)度(TPUDL)都等于頭長(zhǎng)度與編碼后字節(jié)數(shù)之和。 // 上一字節(jié)殘余的數(shù)據(jù) // 計(jì)數(shù)值初始化 nSrc = 0。 nDst++。 // 上一字節(jié)殘余的數(shù)據(jù) // 計(jì)數(shù)值初始化 nSrc = 0。 nDst++。 nSrc++。8bit編碼其實(shí)沒(méi)有規(guī)定什么具體的算法,不需要介紹。 inDstLength。 inSrcLength/2??梢匝h(huán)調(diào)用sscanf和sprintf函數(shù)實(shí)現(xiàn)這種變換。 *pSrc=39。 } pSrc++。039。 // 0x00xf的字符查找表 for(int i=0。 // 返回目標(biāo)字符串長(zhǎng)度 return nSrcLength * 2。 // 用戶信息編碼方式(TPDCS) char TP_SCTS[16]。 // 目標(biāo)字符串長(zhǎng)度 char ch。 1) { *(pDst2) = 39。} // 兩兩顛倒的字符串轉(zhuǎn)換為正常順序的字符串// 如:683158812764F8 8613851872468// pSrc: 源字符串指針// pDst: 目標(biāo)字符串指針// nSrcLength: 源字符串長(zhǎng)度// 返回: 目標(biāo)字符串長(zhǎng)度int gsmSerializeNumbers(const char* pSrc, char* pDst, int nSrcLength){ int nDstLength。 // 復(fù)制先出現(xiàn)的字符 } // 最后的字符是39。 // 返回目標(biāo)字符串長(zhǎng)度 return nDstLength。 1) == 0 ? nLength : nLength + 1) / 2 + 1。 // TPMR=0 buf[2] = (char)nLength。 // 協(xié)議標(biāo)識(shí)(TPPID) buf[1] = pSrcTP_DCS。 // nLength等于該段數(shù)據(jù)長(zhǎng)度 } else { // 8bit編碼方式 buf[3] = gsmEncode8bit(pSrcTP_UD, amp。 // 內(nèi)部用的臨時(shí)字節(jié)變量 unsigned char buf[256]。tmp, 2)。 // 指針后移 gsmSerializeNumbers(pSrc, pDstTPA, tmp)。 // 指針后移 gsmSerializeNumbers(pSrc, pDstTP_SCTS, 14)。 // 轉(zhuǎn)換到TPDU nDstLength = tmp。下面是發(fā)送、讀取和刪除短消息的實(shí)現(xiàn)代碼:// 發(fā)送短消息// pSrc: 源PDU參數(shù)指針BOOL gsmSendMessage(const SM_PARAM* pSrc){ int nPduLength。 // 以CtrlZ結(jié)束 gsmString2Bytes(pd
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1