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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種基于嵌入式系統(tǒng)的增值服務(wù)技術(shù)的設(shè)計與實(shí)現(xiàn)

          一種基于嵌入式系統(tǒng)的增值服務(wù)技術(shù)的設(shè)計與實(shí)現(xiàn)

          作者: 時間:2008-06-10 來源:網(wǎng)絡(luò) 收藏
          摘 要:本文在近年來手機(jī)飛速發(fā)展的背景下,考慮到在人們?nèi)粘I钪袕V泛應(yīng)用的現(xiàn)狀與目前SP(ServiceProvider服務(wù)提供商)的的架構(gòu)體系的特點(diǎn),提出了一種的應(yīng)用解決方案。并且通過對系統(tǒng)的各個功能模塊的做出詳細(xì)的說明,闡明了整個增值服務(wù)系統(tǒng)的特點(diǎn)和思想。
          關(guān)鍵詞系統(tǒng);增值服務(wù);短信息

          1. 引言

          近年來,隨著手機(jī)的迅猛發(fā)展,功能的不斷增多,人們對手機(jī)的使用已經(jīng)不再局限于傳統(tǒng)的語音通話上了,而是越來越多地用到了非語音的功能,比如SMS(Short Message Service短信息),彩信等等,也就是手機(jī)增值服務(wù)[1]。而能夠把手機(jī)增值服務(wù)應(yīng)用到嵌入式系統(tǒng)中,使得手機(jī)能夠與嵌入式系統(tǒng)進(jìn)行短信息的交互,那么這樣的一種增值服務(wù)技術(shù)的發(fā)展前景將會是非常有前途的。本文就是給出了這種增值服務(wù)系統(tǒng)的一個完整的解決方案。

          開發(fā)中,嵌入式系統(tǒng)的程序部分使用的開發(fā)環(huán)境是Keil C,而其余所有的程序均使用Java來編寫,且已經(jīng)成功地移植到Linux平臺上。此外,下面所提到的SP使用的數(shù)據(jù)庫為SQL Server 2000。下面將對整個增值服務(wù)系統(tǒng)的進(jìn)行論述。

          2. 增值服務(wù)系統(tǒng)的整體架構(gòu)

          各大移動運(yùn)營商提供給自己的SP的增值服務(wù)體系架構(gòu)和接口都是相似的[2],如中國移動的體系架構(gòu),如圖1所示,整個嵌入式系統(tǒng)的增值服務(wù)系統(tǒng)是由嵌入式系統(tǒng)、增值服務(wù)系統(tǒng)網(wǎng)關(guān)和SP及其內(nèi)嵌的接入模塊組成的。SP負(fù)責(zé)向用戶提供豐富多彩的增值服務(wù),但如果由于資金不足等原因不能申請成為SP時,可以在現(xiàn)有的SP中嵌入一個接入模塊,同樣可以達(dá)到提供增值服務(wù)的目的,本文介紹的就是這種解決方案。

          當(dāng)MS(Mobile Subscriber手機(jī)用戶)想要發(fā)送一條短信息到嵌入式系統(tǒng)時,短信息首先被發(fā)送到基站,基站再把它發(fā)到SMSC(Short Message Service Center短信中心),SMSC通過SMPP協(xié)議(Short Message Peer to Peer短消息點(diǎn)對點(diǎn)協(xié)議)再把短信息轉(zhuǎn)發(fā)到ISMG(Internet Short Message Gateway互聯(lián)網(wǎng)短信網(wǎng)關(guān))[3]。

          ISMG是中國移動與其SP進(jìn)行通信的門戶,ISMG與SP的通信的底層是TCP/IP協(xié)議,而應(yīng)用層是CMPP(China Mobile Peer to Peer中國移動點(diǎn)對點(diǎn)協(xié)議)協(xié)議。


          圖1 嵌入式系統(tǒng)的增值服務(wù)系統(tǒng)的整體架構(gòu)原理


          然后,SP按照CMPP協(xié)議從ISMG接收到關(guān)于此短信息的所有必要信息(如MS的手機(jī)號碼,MS點(diǎn)播的服務(wù)代碼等等)后把該條短信息的相關(guān)數(shù)據(jù)傳給SP內(nèi)嵌的接入模塊,然后接入模塊通過TCP/IP發(fā)送到增值服務(wù)系統(tǒng)網(wǎng)關(guān),由網(wǎng)關(guān)解析這些信息并重新編碼,再發(fā)送到PSTN(Public Switched Telephone Network公共開關(guān)電話網(wǎng)絡(luò)),最后由嵌入式系統(tǒng)從PSTN接收到該條短信息的所有信息,并顯示在它的LCD上。至此完成了由MS到嵌入式系統(tǒng)的短信息通信,而由嵌入式系統(tǒng)到MS的短信息通信過程也是類似的[4]。

          下面,將針對系統(tǒng)各部分的每個功能模塊逐一地進(jìn)行介紹,并詳細(xì)地敘述它們?nèi)绾?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/實(shí)現(xiàn)">實(shí)現(xiàn)的。

          3. 嵌入式系統(tǒng)部分

          3.1 嵌入式系統(tǒng)的特點(diǎn)和開發(fā)背景

          許多嵌入式系統(tǒng)都有串口和LCD,這樣就能夠通過編程與外界通信并顯示信息,但由于嵌入式系統(tǒng)的存儲器容量比較小,在上面開發(fā)程序必須要注意節(jié)約存儲器的使用。此次所用的嵌入式系統(tǒng)是由臺灣研發(fā)的網(wǎng)絡(luò)信息電話,使用的是8051系列的芯片,擁有兩個串口,其中一個與內(nèi)置的Modem相連,可以與外界通信,此外還有一個128*64的LCD可以用來顯示接收到的短信息,一個鍵盤用來輸入要發(fā)送的短信息內(nèi)容。整個嵌入式系統(tǒng)部分的開發(fā)是建立在底層的串口,LCD以及鍵盤的API都已經(jīng)由這家臺灣公司提供了的基礎(chǔ)上。

          3.2 Modem的AT指令簡介

          AT指令為所有調(diào)制解調(diào)器制造商所使用的一個調(diào)制解調(diào)器命令語言。只要用連接線把串口和Modem連接起來,使得可以通過串口向Modem進(jìn)行輸入,就可以讓Modem與Modem之間通過使用AT指令經(jīng)PSTN進(jìn)行通信的。這是由于Modem有兩種工作模式:指令模式與數(shù)據(jù)傳輸模式。

          3.3 Modem通訊模塊

          表1 Modem通訊模塊的自定義幀

          字段

          所占字節(jié)

          字段

          所占字節(jié)

          DLE

          1

          發(fā)送時間

          20

          STX

          1

          保留字段

          20

          類型

          1

          內(nèi) 容

          160

          幀序號

          2

          DLE

          1

          源號碼

          20

          ETX

          1

          目的號碼

          20

          Modem通訊模塊是嵌入式系統(tǒng)部分的主體,它負(fù)責(zé)與外界(其它的Modem)進(jìn)行通訊。由于Modem之間的傳輸是連續(xù)的字節(jié)流,因此必須要定義一些建立在數(shù)據(jù)鏈路層上的幀,才能夠把實(shí)際要傳輸?shù)拿總€數(shù)據(jù)包從連續(xù)的字節(jié)流中區(qū)分出來。如表1所示,DLE STX和DLE ETX都是自定義的常量,數(shù)值是十六進(jìn)制數(shù)的10 02和10 03,分別代表著一個幀的開始與結(jié)束。如果一個幀的內(nèi)容中有這兩個常量,那么可以在發(fā)送此幀時插入一個DLE,如10 02插入DLE后變?yōu)?0 10 02,接收此幀時,遇到連續(xù)的10 10就檢查是否緊跟著02,如果是就刪除中間的10,這樣就既可以接收到正確的數(shù)據(jù),又避免了從字節(jié)流中不能正確地截取幀。類型字段有兩種可能值:一種是DATA,即數(shù)據(jù)幀,代表此幀傳輸?shù)氖菙?shù)據(jù);一種是ACK,即確認(rèn)幀,代表此幀是對已收到某一數(shù)據(jù)幀的確認(rèn)。幀序號是標(biāo)志該幀的唯一標(biāo)志,發(fā)送過程中不斷遞增,達(dá)到最大值后可以循環(huán)使用。由于手機(jī)短信息的英文長度可以長達(dá)160個字節(jié)(中文為140個字節(jié)),所以內(nèi)容字段規(guī)定為160個字節(jié)。對于數(shù)據(jù)幀,內(nèi)容字段存放短信息的內(nèi)容;對于確認(rèn)幀,內(nèi)容字段存放它所指明的已收到數(shù)據(jù)幀的幀序號。

          當(dāng)Modem通訊模塊接收到從MS發(fā)來的短信息時,只是簡單地發(fā)送確認(rèn)幀。當(dāng)Modem通訊模塊發(fā)送短信息到MS時,它把一個數(shù)據(jù)幀發(fā)送到目的端Modem,然后等待對此數(shù)據(jù)幀的確認(rèn)幀的返回,如果超過一定的時間還沒有收到返回,Modem通訊模塊將會重發(fā)此數(shù)據(jù)幀,重發(fā)超過一定的次數(shù)就放棄發(fā)送此數(shù)據(jù)幀。如果在等待確認(rèn)幀的返回時,有新的數(shù)據(jù)幀需要發(fā)送,那么將會允許發(fā)送一定數(shù)量的數(shù)據(jù)幀,超過這個數(shù)量以后就不再發(fā)送,直到有對之前發(fā)送幀的確認(rèn)幀返回。

          4. 增值服務(wù)系統(tǒng)網(wǎng)關(guān)部分

          4.1 功能簡述

          圖2 增值服務(wù)系統(tǒng)網(wǎng)關(guān)

          增值服務(wù)網(wǎng)關(guān)的主要作用是在PSTN和Internet(數(shù)據(jù)通過TCP/IP傳送)之間進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。因此定義了兩種類:Frame與ShortMessage。在內(nèi)部,Modem通訊模塊與協(xié)議轉(zhuǎn)換模塊之間傳送的對象是Frame,TCP/IP通訊模塊與協(xié)議轉(zhuǎn)換模塊之間傳送的對象是ShortMessage,F(xiàn)rame與ShortMessage之間通過協(xié)議轉(zhuǎn)換模塊來互相轉(zhuǎn)換。所以網(wǎng)關(guān)的功能就是解析從PSTN收到的包含短信息內(nèi)容的Frame后重新編碼為ShortMessage再發(fā)送到TCP/IP,或者解析從TCP/IP收到的包含短信息內(nèi)容的ShortMessage后重新編碼為Frame再發(fā)送到PSTN。網(wǎng)關(guān)中所有模塊的活動都通過調(diào)用日志模塊提供的接口來進(jìn)行日志的記錄。由于協(xié)議轉(zhuǎn)換模塊的實(shí)現(xiàn)比較簡單,而網(wǎng)關(guān)的Modem 通訊模塊跟嵌入式系統(tǒng)的Modem通訊模塊的設(shè)計思想是相似的,不同的只是網(wǎng)關(guān)的Modem 通訊模塊調(diào)用的是Sun提供的Java的串口API,屏蔽了很多底層的實(shí)現(xiàn)細(xì)節(jié),在開發(fā)中更加容易使用。因此下面只對TCP/IP通訊模塊和日志模塊進(jìn)行說明。

          4.2 TCP/IP通訊模塊

          本模塊中數(shù)據(jù)包的確認(rèn)/重發(fā)機(jī)制與Modem通訊模塊的策略類似。為了提高工作效率,可以在該模塊內(nèi)建立兩個隊列緩沖區(qū):發(fā)送隊列和接收隊列,用來存放暫時還沒有被發(fā)送出去或剛剛接收到的ShortMessage類對象。

          發(fā)送時有兩種策略:長連接和短連接[5]。長連接即在與遠(yuǎn)程主機(jī)第一次建立連接后,就一直保持連接,這樣有數(shù)據(jù)要發(fā)送時可以隨時發(fā)送;短連接即有數(shù)據(jù)發(fā)送時才建立連接,發(fā)送完畢后馬上斷開連接,直到下次有數(shù)據(jù)來到再重新建立連接。長連接的不足之處在于當(dāng)網(wǎng)絡(luò)發(fā)生故障時,之前建立的連接會被破壞導(dǎo)致無法發(fā)送數(shù)據(jù),還有就是長期占用網(wǎng)絡(luò)資源。短連接的最大缺點(diǎn)是當(dāng)要發(fā)送的數(shù)據(jù)量較多時,建立連接過于頻繁,在建立連接上的開銷太大,但是每次使用新的連接對比起長連接來說較為可靠。本文所提到增值服務(wù)系統(tǒng)中的所有TCP/IP通訊模塊的發(fā)送均采用短連接的策略。

          接收時的策略是生成一個主線程不斷監(jiān)聽端口上的數(shù)據(jù),如果有新的數(shù)據(jù)來到,則產(chǎn)生一個新的子線程來處理此次數(shù)據(jù),處理完后該子線程自動終止,而主線程則繼續(xù)監(jiān)聽。具體實(shí)現(xiàn)框架如下:

          while(true)//主線程run方法體內(nèi)

          {

          Socket sock = serverSocket.accept();//監(jiān)聽數(shù)據(jù)

          Thread childThread = new Thread(sock);

          childThread.start();//啟動子線程處理此次數(shù)據(jù)

          }

          4.3 日志模塊

          日志對于任何一個系統(tǒng)來說都是非常重要的,通過日志文件,我們可以查看系統(tǒng)中每一個細(xì)小的活動,而且往往可以通過日志來達(dá)到調(diào)試查錯的目的。通常需要輸出到日志的信息有三種:1)正?;顒拥男畔?,比如通訊模塊接收到一個數(shù)據(jù)包,協(xié)議的一次轉(zhuǎn)換等等;2)發(fā)生錯誤的信息,比如由于網(wǎng)絡(luò)故障,接收的數(shù)據(jù)包格式不正確而解析失敗等等;3)調(diào)試的信息:系統(tǒng)處于開發(fā)階段時,開發(fā)人員用來定位錯誤的信息,這種信息在開發(fā)完成后則不應(yīng)再輸出到日志中,但是仍然應(yīng)該在程序中保留相關(guān)的語句,因?yàn)橄到y(tǒng)很有可能在未來被發(fā)現(xiàn)有問題,而不得不改進(jìn)程序和再次調(diào)試。

          可以建立一個類LogManager來實(shí)現(xiàn)日志模塊的功能。該類需要提供三個靜態(tài)方法的接口,它們分別對應(yīng)著上述需要輸出到日志的信息的三種情況,分別是:1)LogManager.log(String info)對應(yīng)正常活動的輸出;2)LogManager.error(String info)對應(yīng)發(fā)生錯誤時的輸出;3)LogManager.debug(String info)對應(yīng)調(diào)試的輸出。三種接口輸出到日志文件時應(yīng)該帶有各自的標(biāo)記和輸出的時間,具體輸出效果如下:

          [ LOG ][2003-08-11 11:41:56]正?;顒拥妮敵?/P>

          [ERROR][2003-08-11 11:41:56]錯誤信息的輸出。

          [DEBUG][2003-08-11 11:41:56]調(diào)試信息的輸出。

          此外可以使用XML文件來管理日志模塊以及整個增值服務(wù)系統(tǒng)的配置,比如控制調(diào)試信息是否被輸出只需在XML配置文件中增加一個數(shù)據(jù)項(xiàng),并在LogManager.debug(String info)方法的開頭讀取此數(shù)據(jù)項(xiàng)的值并進(jìn)行判斷,如果不需要輸出調(diào)試信息則直接退出該方法。

          5. SP接入模塊部分

          5.1 功能簡述

          由于申請成為中國移動的SP需要一筆為數(shù)不少的資金,所以在資金不充裕的情況下,在現(xiàn)有的SP的增值服務(wù)系統(tǒng)上嵌入一個接入模塊來提供增值服務(wù)是建立一個增值服務(wù)系統(tǒng)的理想的廉價的解決方案。

          接入模塊與宿主SP共同完成短信息收發(fā)的整個過程是這樣的:1)當(dāng)TCP/IP通訊模塊接收到一個ShortMessage對象后,它就轉(zhuǎn)發(fā)給數(shù)據(jù)庫存取訪問模塊,數(shù)據(jù)庫存取訪問模塊再把該對象轉(zhuǎn)為一條記錄并插入到SQL Server數(shù)據(jù)庫中,然后由宿主SP讀取該條記錄,并與ISMG交互把短信息發(fā)給MS;2)當(dāng)ISMG把一條來自MS的短信息發(fā)給宿主SP后,宿主SP就把該條短信息轉(zhuǎn)為一條記錄插入到數(shù)據(jù)庫中,再由數(shù)據(jù)庫存取訪問模塊讀取出來,并轉(zhuǎn)為一個ShortMessage對象,傳給TCP/IP通訊模塊發(fā)送到增值服務(wù)系統(tǒng)網(wǎng)關(guān)。

          圖3 SP接入模塊部分

          SP接入模塊的存在使得我們可以不需要理會SP與ISMG之間的任何交互,使得復(fù)雜的CMPP協(xié)議對我們不可見。從而大大降低了開發(fā)的難度,并把該模塊內(nèi)的短信息的收發(fā)變?yōu)楹唵蔚膶?shù)據(jù)庫的訪問的過程[6]。

          圖3中TCP/IP通訊模塊,日志模塊與增值服務(wù)系統(tǒng)網(wǎng)關(guān)的同名模塊的設(shè)計與實(shí)現(xiàn)類似,故不再重復(fù)說明。

          5.2 數(shù)據(jù)庫存取訪問模塊

          此模塊的功能就是使用JDBC來訪問SQL Server 2000數(shù)據(jù)庫,從而完成短信息的收發(fā)。JDBC有多種驅(qū)動,一般來說使用數(shù)據(jù)庫廠家提供的專用驅(qū)動效率更高,這里使用的是通用的sun.jdbc.odbc.JdbcOdbcDriver[7]。主要的操作是對兩個表進(jìn)行訪問:存放已接收的短信息的表ReceiveSMS和存放要發(fā)送的短信息的表SendSMS。這兩個表包括了源號碼,目的號碼,信息內(nèi)容,接收或發(fā)送的時間等等重要的字段,其中表ReceiveSMS還有一個字段IsRead表示該條記錄是否已經(jīng)被讀取過,0表示沒有被讀取,1表示已被讀取過。該模塊的具體運(yùn)作流程過下:1)接收短信息時讀取表ReceiveSMS中IsRead字段為0的記錄,然后把此次所有被讀取的記錄的IsRead字段置為1,表示該記錄已被讀過,并把讀出的記錄的各個字段取出,做為新構(gòu)造的ShortMessage對象的屬性值,最后把它傳給TCP/IP通訊模塊;2)發(fā)送短信息時首先從TCP/IP通訊模塊接收到一個ShortMessage類對象,并用ShortMessage對象的屬性值作為新構(gòu)造的紀(jì)錄的字段值,最后往SendSMS表中插入該條新紀(jì)錄。

          6. 總結(jié)

          本文通過對各個功能模塊設(shè)計中的難點(diǎn)與重點(diǎn)進(jìn)行了論述,是一種實(shí)用而有前景的增值服務(wù)應(yīng)用。

          本文作者創(chuàng)新點(diǎn):提出了一種基于嵌入式系統(tǒng)的增值服務(wù)技術(shù)的應(yīng)用的解決方案,把手機(jī)增值服務(wù)應(yīng)用到嵌入式系統(tǒng)中,使得手機(jī)能夠與嵌入式系統(tǒng)進(jìn)行短信息的交互,這樣的一種增值服務(wù)技術(shù)的發(fā)展前景將會是非常有前途的。在開發(fā)中,嵌入式系統(tǒng)的程序部分使用的開發(fā)環(huán)境是Keil C,并且已經(jīng)成功地移植到Linux平臺上。

          參考文獻(xiàn)

          [1] 徐愛鈞,彭秀華.單片機(jī)高級語言C51 Windows環(huán)境編程與應(yīng)用[M] .北京:電子工業(yè)出版社,2001,11-13.

          [2] 胡大可,李培弘,方路平.嵌入式開發(fā)專家――基于單片機(jī)8051的嵌入式開發(fā)指南[M] . 北京:電子工業(yè)出版社,2003.25-26.

          [3] 賴麒文.8051單片機(jī)嵌入式系統(tǒng)應(yīng)用[M]. 北京:科學(xué)出版社,2002.55-56.

          [4] 徐迎曉.Java語法及網(wǎng)絡(luò)應(yīng)用設(shè)計[M],北京:清華大學(xué)出版社,2002.30-32.

          [5] [美]多納休.美國計算機(jī)“寶典”叢書――Java數(shù)據(jù)庫編程寶典[M].北京:電子工業(yè)出版社,2003.88-89.

          [6] [美]Timothy Budd.面向?qū)ο驤AVA編程思想(修訂版)[M].北京:清華大學(xué)出版社,2002.10-11.

          [7] 冉春玉,翟向梅,谷川,面向多ISMG網(wǎng)關(guān)協(xié)議的SMS管理平臺的研究與設(shè)計[J]. 微計算機(jī)信息,2006 Vol.22 No.27:P.143-145

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(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); })();