《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 車載移動(dòng)終端自適應(yīng)無(wú)線通信模塊的方案設(shè)計(jì)
車載移動(dòng)終端自適應(yīng)無(wú)線通信模塊的方案設(shè)計(jì)
2015年電子技術(shù)應(yīng)用第9期
陳華云1,2,崔曉偉1,陳從華2
(1.清華大學(xué) 電子工程系,北京100084;2.廈門雅迅網(wǎng)絡(luò)股份有限公司,福建 廈門361008)
摘要: 設(shè)計(jì)了一種在Linux下車載移動(dòng)終端自適應(yīng)無(wú)線通信模塊的方法,通過硬件轉(zhuǎn)接板、通用時(shí)序的控制,給無(wú)線通信模塊上電,然后嘗試獲取無(wú)線通信模塊的PID/VID,再通過發(fā)送AT指令獲取模塊版本類型來進(jìn)行模塊智能識(shí)別,最后通過面向?qū)ο笳Z(yǔ)言的多態(tài)功能對(duì)無(wú)線通信模塊進(jìn)行初始化操作。實(shí)現(xiàn)車載終端和代碼都不需要作出更改的情況下就可以使用多種不同的無(wú)線通信模塊的功能。
中圖分類號(hào): TN92
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.09.006

中文引用格式: 陳華云,崔曉偉,陳從華. 車載移動(dòng)終端自適應(yīng)無(wú)線通信模塊的方案設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(9):25-28.
英文引用格式: Chen Huayun,Cui Xiaowei,Chen Conghua. The design of mobile terminal for vehicle self-adaptive wireless communication module[J].Application of Electronic Technique,2015,41(9):25-28.
The design of mobile terminal for vehicle self-adaptive wireless communication module
Chen Huayun1,2,Cui Xiaowei1,Chen Conghua2
1.Department of Electronic Engineering,Tsinghua University,Beijing 100084,China; 2.Yaxon Network Co.,Ltd.,Xiamen 361008,China
Abstract: This paper proposes a new design,that is the way in which mobile vehicle-mounted terminal automatically adapt to wireless communication module in Linux. In order that module can be intelligent recognized,firstly,the wireless communication module gets power by controlling hardware commutator board and time sequence. Then it is tried to read the PID/VID from the wireless communication module,and the version type of it is gotten by AT command. Finally,the module is initialized through the polymorphism function of the object-oriented language. This design is achieved by keeping the vehicle mobile terminal and code,while,the variety of different function of the wireless communication module still can be used.
Key words : the wireless communication module;vehicle mobile terminal;self-adaptive;module identity

  

0 引言

  車載移動(dòng)終端包括國(guó)標(biāo)中規(guī)定的汽車行駛記錄儀、交通運(yùn)輸行業(yè)中規(guī)定的車載視頻終端等裝在車上的車機(jī)系統(tǒng)。由于車載平臺(tái)的業(yè)務(wù)多樣化,導(dǎo)致車載終端的硬件類型也不同,比如車載終端上使用的無(wú)線通信模塊,同一款終端上,因?yàn)樾枨蟮牟煌偷檬褂貌煌愋蜔o(wú)線通信模塊;例如使用不同的運(yùn)營(yíng)商、不同網(wǎng)絡(luò)類型[1]。所以車載終端針對(duì)不同的無(wú)線通信模塊就要做出相應(yīng)的調(diào)整,包括硬件接口、軟件程序都要做針對(duì)性的設(shè)計(jì)。這樣就導(dǎo)致了產(chǎn)品種類多樣,代碼版本繁多,而且不同的產(chǎn)品還得對(duì)應(yīng)不同的代碼。這樣不僅導(dǎo)致很多代碼的重復(fù)和冗余,而且每次編譯耗費(fèi)時(shí)間和精力,增加了人工成本,且出廠前需要針對(duì)不同型號(hào)的無(wú)線通信模塊進(jìn)行檢測(cè),也容易造成編譯問題,甚至造成產(chǎn)品無(wú)法使用等問題。

  針對(duì)該問題,本文提出了一種基于Linux的車載移動(dòng)終端自適應(yīng)無(wú)線通信模塊的方法,該方法從硬件和軟件上分別進(jìn)行改進(jìn)設(shè)計(jì),使得車載移動(dòng)終端可自動(dòng)識(shí)別當(dāng)前使用的是哪種型號(hào)的無(wú)線通信模塊(移動(dòng)、聯(lián)通,3G、4G),識(shí)別到無(wú)線通信模塊后,調(diào)用相對(duì)應(yīng)的模塊函數(shù)對(duì)該無(wú)線通信模塊進(jìn)行初始化,并開始進(jìn)入正常的工作模式。

1 硬件設(shè)計(jì)

  1.1 硬件接口設(shè)計(jì)

  由于不同無(wú)線通信模塊的引腳設(shè)計(jì)不同[2],為了使一臺(tái)車載終端能夠同時(shí)兼容使用不同的無(wú)線通信模塊,必須把兩者分開設(shè)計(jì)后再通過統(tǒng)一接口對(duì)接。車載終端方面設(shè)計(jì)了一個(gè)固定的插槽,插槽上插的是一個(gè)叫作“轉(zhuǎn)接板”的硬件小板,無(wú)線通信模塊直接與轉(zhuǎn)接板整合在一起,轉(zhuǎn)接板內(nèi)部的設(shè)計(jì)根據(jù)不同的無(wú)線通信模塊作出相應(yīng)的變動(dòng),對(duì)外提供統(tǒng)一固定的引腳,以便與車載終端的插槽對(duì)接。這樣車載終端只需要提供一種硬件插槽,通過轉(zhuǎn)接板就可以與不同的無(wú)線通信模塊對(duì)接[3]。不同的無(wú)線通信模塊對(duì)應(yīng)不同的轉(zhuǎn)接板,轉(zhuǎn)接板對(duì)外提供的引腳如圖1所示。

001.jpg

  通過這樣一種對(duì)接設(shè)計(jì),就可以使車載終端實(shí)現(xiàn)在硬件上與不同的無(wú)線通信模塊建立連接。當(dāng)同一款車載終端需要使用不同的無(wú)線通信模塊時(shí),直接換成對(duì)應(yīng)的無(wú)線通信模塊轉(zhuǎn)接板即可。

  1.2 模塊時(shí)序控制

  通過上述統(tǒng)一硬件接口設(shè)計(jì)后,車載終端就可以直接通過轉(zhuǎn)接板的“GSM_VCC”、“GSM_GND”、“POWERON”等引腳來控制無(wú)線通信模塊上下電。對(duì)無(wú)線通信模塊上下電需要特定的時(shí)序,不同的無(wú)線模塊上下電時(shí)序也不同[2],圖2為某電信無(wú)線通信模塊的上電時(shí)序圖,圖3為某聯(lián)通模塊的上電時(shí)序圖。

002.jpg

  由于車載移動(dòng)終端需要兼容使用各種不同的無(wú)線通信模塊,并且在車載終端上電時(shí)無(wú)法知道當(dāng)前使用的是那種無(wú)線通信模塊,也就不能確定要用那種上電時(shí)序給通信模塊上電。為此,本文在綜合分析各種模塊的專用上電時(shí)序后,設(shè)計(jì)出了一種通用的上電時(shí)序,該時(shí)序可以對(duì)接入車載移動(dòng)終端的多種無(wú)線通信模塊上電,如圖4。該通用時(shí)序是取自各無(wú)線通信模塊各自時(shí)序的共性點(diǎn),比如在上電時(shí)序中,都必須把VBAT拉高,這個(gè)是供電腳;然后再拉低、拉高POWER ON引腳來完成上電。不同的POWER ON引腳拉低的持續(xù)時(shí)間不同,不過這個(gè)持續(xù)時(shí)間是有一個(gè)范圍的,如圖3中的電信模塊最少需要64 ms,圖4中聯(lián)通模塊最少需要30 ms。因此在通用時(shí)序中的POWER ON引腳的拉低時(shí)間只要大于所有的無(wú)線通信模塊各自的拉低時(shí)間即可,即:通用時(shí)序POWER ON拉低時(shí)間>MAX(無(wú)線通信模塊各自的POWER ON拉低時(shí)間)。

003.jpg

  已測(cè)試可以使用通用時(shí)序上電的無(wú)線通信模塊列表如表1所示。

006.jpg

  通過該時(shí)序,車載移動(dòng)終端就可以在不知當(dāng)前是哪種無(wú)線通信模塊的情況下給通信模塊上電,為接來下的模塊識(shí)別工作奠定基礎(chǔ)。

2 軟件設(shè)計(jì)

  2.1 識(shí)別無(wú)線通信模塊

  成功給無(wú)線通信模塊上電后,就必須進(jìn)行模塊識(shí)別,模塊識(shí)別是根據(jù)模塊本身的特征屬性來實(shí)現(xiàn)的。本文使用了識(shí)別PID/VID加AT指令通信的組合方式來識(shí)別無(wú)線通信模塊類型。

  3G、4G無(wú)線通信模塊是使用USB口來進(jìn)行通信,因而可以看做是一個(gè)USB設(shè)備,而根據(jù)USB規(guī)范的規(guī)定,每個(gè)USB設(shè)備都必須有產(chǎn)商ID(VID)和產(chǎn)品ID(PID),而且都應(yīng)該是唯一的。并且該P(yáng)ID/VID會(huì)在車載移動(dòng)終端給無(wú)線通信模塊上電后,注冊(cè)到車載終端的Linux系統(tǒng)總線上,因此可以通過查找并匹配系統(tǒng)總線上的PID/VID來識(shí)別當(dāng)前無(wú)線通信模塊的型號(hào)[4]。由于各種原因,一個(gè)廠商的不同型號(hào)的產(chǎn)品往往只使用一組PID/VID,因此如果一組PID/VID對(duì)應(yīng)了多種無(wú)線通信模塊,就必須再通過AT指令通信的方式來進(jìn)一步識(shí)別。這里的AT指令是通過USB口來進(jìn)行通信的。

  2G無(wú)線通信模塊不是使用USB口來進(jìn)行通信的,而是使用串口來通信,因此不能通過PID/VID來進(jìn)行識(shí)別,只能通過串口的AT通信才能識(shí)別。AT通信的主要目的是直接獲取模塊的版本類型。識(shí)別無(wú)線通信模塊的具體步驟如下所示:

  (1)設(shè)計(jì)一種通用的上電時(shí)序,在車載移動(dòng)終端系統(tǒng)啟動(dòng)后,終端就通過該時(shí)序?qū)o(wú)線通信模塊進(jìn)行上電,上電后,無(wú)線通信模塊就會(huì)接入終端系統(tǒng)中。

  (2)判斷是否能夠從Linux系統(tǒng)總線獲取到無(wú)線通信模塊的PID/VID,若可以,則提取無(wú)線通信模塊的PID/VID,并且查找預(yù)設(shè)對(duì)應(yīng)文件,獲取當(dāng)前PID/VID對(duì)應(yīng)的無(wú)線通信模塊型號(hào)。其中預(yù)設(shè)對(duì)應(yīng)文件是一個(gè)前期就擬定好的對(duì)應(yīng)表,列出目前在用的所有無(wú)線通信模塊型號(hào)和其對(duì)應(yīng)的PID/VID,不同的PID/VID對(duì)應(yīng)著各自的模塊,這樣方便查找和增加模塊,部分預(yù)設(shè)對(duì)應(yīng)文件如表2所示。接著判斷當(dāng)前PID/VID是否僅對(duì)應(yīng)一個(gè)無(wú)線通信模塊,如果是,則獲取無(wú)線通信模塊型號(hào)后,以面向?qū)ο笾卸鄳B(tài)的方法調(diào)用該無(wú)線通信模塊對(duì)應(yīng)的初始化函數(shù),進(jìn)行模塊初始化。如果當(dāng)前PID/VID不止對(duì)應(yīng)一個(gè)無(wú)線通信模塊,則打開USB通信口,車載終端系統(tǒng)通過USB通信口給無(wú)線通信模塊發(fā)送獲取版本類型的AT指令,獲取無(wú)線通信模塊的版本類型,然后再查找預(yù)設(shè)的對(duì)應(yīng)文件來獲取模塊型號(hào),最后進(jìn)行模塊初始化。

007.jpg

  (3)如果不能夠從Linux系統(tǒng)總線中獲取到無(wú)線通信模塊的PID/VID,則說明該模塊不是使用USB口來通信的,因此需要打開串口,車載終端系統(tǒng)通過串口給無(wú)線通信模塊直接發(fā)送獲取版本類型的AT指令,直接獲取無(wú)線通信模塊的版本類型,然后再查找預(yù)設(shè)的對(duì)應(yīng)文件來獲取模塊型號(hào),最后進(jìn)行模塊初始化。

004.jpg

  經(jīng)過上述步驟,基本就可以確認(rèn)當(dāng)前使用的無(wú)線通信模塊是那種型號(hào)。圖5是識(shí)別模塊的流程圖。

  上述步驟中獲取PID/VID的方法是通過移植Linux的開源框架代碼lsusb模塊,通過裁剪分離出特定的功能后加以使用。打開串口或者USB口進(jìn)行AT查詢指令的發(fā)送這個(gè)步驟中,使用通用的AT指令“AT+CGMM”,無(wú)線通信模塊在接收到該指令后,會(huì)產(chǎn)生一條應(yīng)答指令,如“SIMCOM_SIM5218C OK”,這樣就可以通過應(yīng)答指令獲取到模塊相關(guān)信息[5]。

  2.2 業(yè)務(wù)軟件框架設(shè)計(jì)

  無(wú)線通信模塊的基本功能包括電話、短信、撥號(hào)上網(wǎng)等。 由于無(wú)線通信模塊的多樣性,為了使軟件設(shè)計(jì)一次、編譯一次就可以同時(shí)支持多種無(wú)線通信模塊,并且要求設(shè)計(jì)上通用、簡(jiǎn)潔、可擴(kuò)展性強(qiáng)、維護(hù)性高。因此使用了面向?qū)ο缶幊讨械亩鄳B(tài)的設(shè)計(jì)思想。多態(tài)性指的是相同對(duì)象收到不同的消息或者不同對(duì)象收到相同消息時(shí)產(chǎn)生不同的實(shí)現(xiàn)動(dòng)作,使得不管傳遞過來的是哪個(gè)類的對(duì)象,函數(shù)都可以通過一個(gè)接口調(diào)用到不同的無(wú)線通信模塊所關(guān)聯(lián)的實(shí)現(xiàn)方法。

  本文的軟件設(shè)計(jì)使用的是C++語(yǔ)言,C++支持兩種多態(tài)性:編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯時(shí)的多態(tài)性是通過重載函數(shù)來實(shí)現(xiàn),本文使用的是運(yùn)行時(shí)的多態(tài)性,是通過虛函數(shù)來實(shí)現(xiàn)的[6]。無(wú)線通信模塊多態(tài)實(shí)現(xiàn)的流程如下:

  (1)構(gòu)建無(wú)線通信模塊基類;

  (2)構(gòu)建H330類、LC6311+類、SIM5218C類等特定類型的派生類;

  (3)聲明無(wú)線通信模塊基類指針;

  (4)獲取無(wú)線通信模塊類型;

  (5)設(shè)定基類指針指向特定派生類;

  (6)業(yè)務(wù)功能類中通過基類指針來實(shí)現(xiàn)各派生類的功能。

005.jpg

  實(shí)現(xiàn)流程圖如圖6所示。其中基類中實(shí)現(xiàn)的是各種無(wú)線通信模塊都必須用到的而且基本都相同的功能,這些功能都是以虛函數(shù)定義的,在必要的情況下派生類可以以超載的形式實(shí)現(xiàn)各自個(gè)性化的需求。比如在基類中實(shí)現(xiàn)的一個(gè)撥號(hào)虛函數(shù)DialUp()里的內(nèi)容中使用的指令是“ATD”,這個(gè)“ATD”指令適用于多種無(wú)線通信模塊,而MC703無(wú)線通信模塊中使用的撥號(hào)指令為“AT+CDV”,因此在MC703通信模塊的派生類中就必須對(duì)DialUp()進(jìn)行超載。同時(shí)使用虛函數(shù)也是為了在繼承時(shí)實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性。

  該類中還設(shè)計(jì)了一些純虛函數(shù),純虛函數(shù)是指在基類中只聲明而沒有定義的虛函數(shù),但要求任何派生類都要定義自己實(shí)現(xiàn)的方法。在基類中實(shí)現(xiàn)純虛函數(shù)的方法是在函數(shù)的原型后加“=0”(例virtual void FunCtion=0;)。這里使用純虛函數(shù)的主要目的是在各個(gè)派生類中規(guī)范出一個(gè)統(tǒng)一的框架結(jié)構(gòu)。

  完成基類的設(shè)計(jì),就可以通過繼承來實(shí)現(xiàn)各種派生類,派生類中主要是實(shí)現(xiàn)自己的個(gè)性化功能和新的功能,比如上電時(shí)序差異性、初始化設(shè)置的不同等。由于基類中都已經(jīng)定義好了函數(shù)接口,所以派生類中只需在基類的接口上進(jìn)行超載(重寫實(shí)現(xiàn)過程)。為了更好地使用,派生類使用了公有繼承的方式。

  通過上述業(yè)務(wù)軟件框架的設(shè)計(jì),就可以實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)效果,在設(shè)計(jì)好的無(wú)線通信模塊范圍內(nèi),無(wú)論目前使用的是哪種無(wú)線通信模塊,系統(tǒng)都能在運(yùn)行時(shí)用與之相對(duì)應(yīng)的代碼函數(shù)來實(shí)現(xiàn)相應(yīng)的功能。還能提供快速添加一款新的無(wú)線通信模塊的功能, 即只需通過基類繼承出一個(gè)派生類,然后在派生類中實(shí)現(xiàn)自己的個(gè)性化需求即可。

3 總結(jié)

  本文涉及了車載移動(dòng)終端智能控制領(lǐng)域,具體介紹了車載移動(dòng)終端自適應(yīng)無(wú)線通信模塊的方法。首先在硬件上設(shè)計(jì)了一款車載終端和不同通信模塊對(duì)接的轉(zhuǎn)接板,通過綜合分析各種模塊的專用上電時(shí)序后設(shè)計(jì)出了一種通用的上電時(shí)序,并通過無(wú)線通信模塊本身的PID/VID屬性加AT指令操作的方式進(jìn)行模塊識(shí)別,最后通過C++多態(tài)的思想,構(gòu)建基類,以基類繼承出各種不同無(wú)線通信模塊的派生類,實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)功能。通過該方法成功實(shí)現(xiàn)了一臺(tái)車載移動(dòng)終端自適應(yīng)多種無(wú)線通信模塊的功能,提高了效率,縮短了各種生產(chǎn)和維護(hù)的成本。

參考文獻(xiàn)

  [1] 趙晗.現(xiàn)代無(wú)線通信技術(shù)的發(fā)展現(xiàn)狀及未來發(fā)展趨勢(shì)[J].企業(yè)技術(shù)開發(fā),2011,30(16):88-89.

  [2] SIMCOM Tech.SIM6320C_hardware design_V1.00[Z].2012.

  [3] 武明虎,劉曉靜,陳曉林.基于MC35i模塊的GSM移動(dòng)通信終端的硬件設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2010,38(2):152-154.

  [4] 劉泉承.基于S3C2440A嵌入式Linux系統(tǒng)USB驅(qū)動(dòng)的研究與應(yīng)用[D].南昌:江西科技師范大學(xué),2012.

  [5] SIMCOM Tech.SIMCOM_SIM5218_ATC_EN_V1.07[Z].2011.

  [6] 譚浩強(qiáng).C++程序設(shè)計(jì)(第二版)[M].北京:清華大學(xué)出版社,2011.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 婷婷六月天在线| 中文字幕有码视频| 狼群视频在线观看www| 国产又大又黑又粗免费视频 | 看一级毛片免费观看视频| 国产女人aaa级久久久级| 99网站在线观看| 扒开双腿猛进入爽爽免费视频| 亚洲一区无码中文字幕| 狠狠操视频网站| 国产hs免费高清在线观看| 手机在线观看视频你懂的| 女人与公拘交酡过程高清视频| 久久久国产精品无码免费专区| 欧美另类杂交a| 亚洲高清视频在线播放| 色噜噜亚洲男人的天堂| 国产无遮挡吃胸膜奶免费看| 91精品国产自产91精品| 性欧美激情videos| 久久国产精品久久久| 欧美变态柔术ⅹxxx另类| 亚洲色国产欧美日韩| 综合久久给合久久狠狠狠97色| 国产小视频福利| 青青操免费在线观看| 在线观看永久免费| 一级中文字幕乱码免费| 日产精品卡一卡2卡三卡乱码工厂| 亚洲av无码专区电影在线观看 | 欧美综合自拍亚洲综合图片区 | 午夜亚洲国产成人不卡在线| 麻花传MD034苏蜜清歌| 国产精品亚洲欧美一级久久精品| h成人在线观看| 成人免费无毒在线观看网站| 久久大香伊蕉在人线国产h| 欧美乱大交xxxxx另类| 亚洲精品99久久久久中文字幕| 稚嫩娇小哭叫粗大撑破h| 和搜子居的日子2中文版|