<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > PDU模式的短信息編/解碼方法與實(shí)現(xiàn)

          PDU模式的短信息編/解碼方法與實(shí)現(xiàn)

          作者: 時(shí)間:2008-03-17 來(lái)源:網(wǎng)絡(luò) 收藏
          公共無(wú)線移動(dòng)通信網(wǎng)(G網(wǎng)和C網(wǎng))幾乎覆蓋全球的每一個(gè)角落,而短又是公共無(wú)線移動(dòng)通信網(wǎng)絡(luò)的基本業(yè)務(wù)之一。利用現(xiàn)有的網(wǎng)絡(luò)資源,通過(guò)短技術(shù),可以開發(fā)出多種測(cè)控產(chǎn)品,對(duì)遠(yuǎn)端控制設(shè)備實(shí)時(shí)性監(jiān)測(cè)和控制。短技術(shù)應(yīng)用于數(shù)據(jù)傳輸量不大和傳輸速度要求不是很高的測(cè)控系統(tǒng)中,每條短信息可以傳送160個(gè)7位編碼數(shù)據(jù)或140個(gè)8位編碼數(shù)據(jù),或70個(gè)Unicode碼。因此,可以依照短信息格式,將用戶數(shù)據(jù)組成數(shù)據(jù)包,通過(guò)GSM網(wǎng)絡(luò)短信息數(shù)據(jù)傳輸。本文通過(guò)對(duì)的短信息結(jié)構(gòu)中用戶數(shù)據(jù)的詳細(xì)分析,得出了編/規(guī)律,給出單片機(jī)的子程序。


          1 短信息與分析
          SMS是由ETSI組織制定的一個(gè)規(guī)范。短信息格式有兩種:TEXT和PDu模式。TEXT模式是基于ASCII碼形式字符的一種結(jié)構(gòu)模式,每一條命令很容易讀懂,實(shí)現(xiàn)起來(lái)電十分容易;缺點(diǎn)是不能收發(fā)中文短信,模式也是基于十六進(jìn)制形式字符的,數(shù)據(jù)和代碼都經(jīng)過(guò)編碼,所以無(wú)法直接讀懂;但模式同時(shí)支持中英文兩種短信。PDU模式收發(fā)短信包括3種編碼:7位、8位和UCS2編碼。7位編碼用于發(fā)送普通的ASCII字符,8位編碼用于發(fā)送數(shù)據(jù)信息,UCS2編碼用于發(fā)送Unicode字符。PDU模式在GSM移動(dòng)設(shè)備中使用得最為普遍。
          在PDU模式中,當(dāng)使用7位編碼時(shí),最多可發(fā)160個(gè)字符;使用8位編碼時(shí),最多可發(fā)140個(gè)字符;使用16位編碼時(shí),最多可發(fā)70個(gè)漢字字符。因此在發(fā)送時(shí)需要將8位(HEX)字節(jié)數(shù)據(jù)編碼成8位(OCT)字節(jié)發(fā)送;接收時(shí)需要將8位(OCT)字節(jié)成7位(ASCII)字節(jié)。
          PDU模式短信息結(jié)構(gòu)中,較難實(shí)現(xiàn)的是對(duì)用戶數(shù)據(jù)部分的編/。例如,要發(fā)送數(shù)據(jù)為“123456789abc”,經(jīng)過(guò)編碼后變成“31 D9 8C 56 B3 DD 70 B9 B0 78 OC”。


          2 編碼分析
          在這里規(guī)定.對(duì)于一個(gè)8位字符最右邊為第0位,最左邊為第7位。設(shè)需要發(fā)送的短信息內(nèi)容為“123456789abc”,編碼后變?yōu)椤?l D9 8C 56 B3 DD 70 B9BO 78 0C”。使用的GSM字符集為7位編碼。需要注意的是在每次操作之前,都要將原始數(shù)據(jù)保存好。首先,將第1個(gè)字符轉(zhuǎn)換為7位的二進(jìn)制,將第1個(gè)字符右移0位。然后,將第2個(gè)字符的最右邊的第O位加到第1個(gè)字符的第7位,形成一個(gè)8位字符,第2個(gè)字符的最右邊的第1位通過(guò)右移1位方式銷毀。之后,將第2個(gè)字符轉(zhuǎn)換為7位的二進(jìn)制,將第2個(gè)字符右移1位;將第3個(gè)字符最右邊的2位(第l、0位)填加到第2個(gè)字符的第7、6位,形成一個(gè)8位字符;第3個(gè)字符的最右邊的2位通過(guò)右移2位方式銷毀。其他字符依此類推。當(dāng)?shù)?個(gè)字符需要第9個(gè)寧符全部補(bǔ)位時(shí),還不夠,就從第10個(gè)字符取最右邊的第0位加到第8個(gè)字符的第7位。依次循環(huán),當(dāng)最后一個(gè)字符沒有下一個(gè)字符給它填位時(shí),就填0占位,完成數(shù)據(jù)編碼。
          可以形成表達(dá)式:(所有移位方式都選用帶進(jìn)位位(C=0)循環(huán)移位,也就是被移入位均為0)

          A(要編碼的字符)=當(dāng)前字符右移m次取自己保留的內(nèi)容+后一個(gè)字符左移n次取需要給前一個(gè)字符填充的內(nèi)容。
          B(編碼移位次數(shù))=m+n=7(7≥m≥0;7≥n≥O)。m為右移次數(shù);n為左移次數(shù)。


          3 解碼分析
          設(shè)收到的短信息內(nèi)容為“31 D9 8C 56 B3 DD 70 B9B0 78 OC”,解碼后變?yōu)椤?23456789abc”。解碼過(guò)程是將第1個(gè)字符的第7位移走,保存起來(lái),補(bǔ)給第2字符的第O位。第1個(gè)字符左移O位,第1個(gè)字符的第7位銷毀,形成一個(gè)新的7位ASCII字符;第2個(gè)字符第7、6位移走,保存起來(lái),提供給第3個(gè)字符的第2、1位,第2個(gè)字符的第7、6位銷毀,第2個(gè)字符左移1位,將前一個(gè)字符回填內(nèi)容添加到第2個(gè)字符的第O位,從而又形成一個(gè)新的7位ASCII字符,依此類推。須注意的是,當(dāng)?shù)?個(gè)字符提供第9個(gè)字符全部7位時(shí),形成第9個(gè)字符,同時(shí)第7位提供給第1O個(gè)字符的最右邊第O位。依次循環(huán),形成解碼數(shù)據(jù)。

          可以形成表達(dá)式:
          A(要解碼字符)一前一個(gè)字符右移M次取需要給后一個(gè)字符回填內(nèi)容+當(dāng)前字符左移N次取自己保留的內(nèi)容。
          B(解碼移位次數(shù))=M+N=8(8≥M≥0;8≥N≥0)。M為右移次數(shù);N為左移次數(shù)。
          例如:


          粗體部分在編碼發(fā)送時(shí)用于提供給前一個(gè)字符借用,在解碼接收時(shí)由前一個(gè)字符回填給本字符;斜體部分是本字符需要保留的內(nèi)容。

          4 單片機(jī)子程序?qū)崿F(xiàn)
          主控制器采用華邦W77E58型號(hào)單片機(jī),短信息發(fā)送與接收模塊采用Motorola公司的G20型號(hào),單片機(jī)子程序編寫采用MCS51匯編語(yǔ)言。以下所列代碼是實(shí)際應(yīng)用工程截取的主要部分,經(jīng)過(guò)實(shí)際驗(yàn)證,且一直應(yīng)用于“高速GSM型緊急電話系統(tǒng)”中。(編碼和解碼程序見本刊網(wǎng)站www.mesnet.com.cn――編者注。)


          結(jié)語(yǔ)
          在短信息結(jié)構(gòu)中,對(duì)用戶數(shù)據(jù)轉(zhuǎn)化成PDU模式編/解碼比較麻煩。有了以上對(duì)編/解碼的分析思路,實(shí)現(xiàn)起來(lái)就很容易。該部分可以通過(guò)C或其他形式語(yǔ)言代碼編寫,形成子程序塊,嵌入劍其他應(yīng)用系統(tǒng)中。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();