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

中文引用格式: 陳華云,崔曉偉,陳從華. 車載移動終端自適應無線通信模塊的方案設計[J].電子技術應用,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 引言

  車載移動終端包括國標中規定的汽車行駛記錄儀、交通運輸行業中規定的車載視頻終端等裝在車上的車機系統。由于車載平臺的業務多樣化,導致車載終端的硬件類型也不同,比如車載終端上使用的無線通信模塊,同一款終端上,因為需求的不同,就得使用不同類型無線通信模塊;例如使用不同的運營商、不同網絡類型[1]。所以車載終端針對不同的無線通信模塊就要做出相應的調整,包括硬件接口、軟件程序都要做針對性的設計。這樣就導致了產品種類多樣,代碼版本繁多,而且不同的產品還得對應不同的代碼。這樣不僅導致很多代碼的重復和冗余,而且每次編譯耗費時間和精力,增加了人工成本,且出廠前需要針對不同型號的無線通信模塊進行檢測,也容易造成編譯問題,甚至造成產品無法使用等問題。

  針對該問題,本文提出了一種基于Linux的車載移動終端自適應無線通信模塊的方法,該方法從硬件和軟件上分別進行改進設計,使得車載移動終端可自動識別當前使用的是哪種型號的無線通信模塊(移動、聯通,3G、4G),識別到無線通信模塊后,調用相對應的模塊函數對該無線通信模塊進行初始化,并開始進入正常的工作模式。

1 硬件設計

  1.1 硬件接口設計

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

001.jpg

  通過這樣一種對接設計,就可以使車載終端實現在硬件上與不同的無線通信模塊建立連接。當同一款車載終端需要使用不同的無線通信模塊時,直接換成對應的無線通信模塊轉接板即可。

  1.2 模塊時序控制

  通過上述統一硬件接口設計后,車載終端就可以直接通過轉接板的“GSM_VCC”、“GSM_GND”、“POWERON”等引腳來控制無線通信模塊上下電。對無線通信模塊上下電需要特定的時序,不同的無線模塊上下電時序也不同[2],圖2為某電信無線通信模塊的上電時序圖,圖3為某聯通模塊的上電時序圖。

002.jpg

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

003.jpg

  已測試可以使用通用時序上電的無線通信模塊列表如表1所示。

006.jpg

  通過該時序,車載移動終端就可以在不知當前是哪種無線通信模塊的情況下給通信模塊上電,為接來下的模塊識別工作奠定基礎。

2 軟件設計

  2.1 識別無線通信模塊

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

  3G、4G無線通信模塊是使用USB口來進行通信,因而可以看做是一個USB設備,而根據USB規范的規定,每個USB設備都必須有產商ID(VID)和產品ID(PID),而且都應該是唯一的。并且該PID/VID會在車載移動終端給無線通信模塊上電后,注冊到車載終端的Linux系統總線上,因此可以通過查找并匹配系統總線上的PID/VID來識別當前無線通信模塊的型號[4]。由于各種原因,一個廠商的不同型號的產品往往只使用一組PID/VID,因此如果一組PID/VID對應了多種無線通信模塊,就必須再通過AT指令通信的方式來進一步識別。這里的AT指令是通過USB口來進行通信的。

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

  (1)設計一種通用的上電時序,在車載移動終端系統啟動后,終端就通過該時序對無線通信模塊進行上電,上電后,無線通信模塊就會接入終端系統中。

  (2)判斷是否能夠從Linux系統總線獲取到無線通信模塊的PID/VID,若可以,則提取無線通信模塊的PID/VID,并且查找預設對應文件,獲取當前PID/VID對應的無線通信模塊型號。其中預設對應文件是一個前期就擬定好的對應表,列出目前在用的所有無線通信模塊型號和其對應的PID/VID,不同的PID/VID對應著各自的模塊,這樣方便查找和增加模塊,部分預設對應文件如表2所示。接著判斷當前PID/VID是否僅對應一個無線通信模塊,如果是,則獲取無線通信模塊型號后,以面向對象中多態的方法調用該無線通信模塊對應的初始化函數,進行模塊初始化。如果當前PID/VID不止對應一個無線通信模塊,則打開USB通信口,車載終端系統通過USB通信口給無線通信模塊發送獲取版本類型的AT指令,獲取無線通信模塊的版本類型,然后再查找預設的對應文件來獲取模塊型號,最后進行模塊初始化。

007.jpg

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

004.jpg

  經過上述步驟,基本就可以確認當前使用的無線通信模塊是那種型號。圖5是識別模塊的流程圖。

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

  2.2 業務軟件框架設計

  無線通信模塊的基本功能包括電話、短信、撥號上網等。 由于無線通信模塊的多樣性,為了使軟件設計一次、編譯一次就可以同時支持多種無線通信模塊,并且要求設計上通用、簡潔、可擴展性強、維護性高。因此使用了面向對象編程中的多態的設計思想。多態性指的是相同對象收到不同的消息或者不同對象收到相同消息時產生不同的實現動作,使得不管傳遞過來的是哪個類的對象,函數都可以通過一個接口調用到不同的無線通信模塊所關聯的實現方法。

  本文的軟件設計使用的是C++語言,C++支持兩種多態性:編譯時的多態性和運行時的多態性。編譯時的多態性是通過重載函數來實現,本文使用的是運行時的多態性,是通過虛函數來實現的[6]。無線通信模塊多態實現的流程如下:

  (1)構建無線通信模塊基類;

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

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

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

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

  (6)業務功能類中通過基類指針來實現各派生類的功能。

005.jpg

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

  該類中還設計了一些純虛函數,純虛函數是指在基類中只聲明而沒有定義的虛函數,但要求任何派生類都要定義自己實現的方法。在基類中實現純虛函數的方法是在函數的原型后加“=0”(例virtual void FunCtion=0;)。這里使用純虛函數的主要目的是在各個派生類中規范出一個統一的框架結構。

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

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

3 總結

  本文涉及了車載移動終端智能控制領域,具體介紹了車載移動終端自適應無線通信模塊的方法。首先在硬件上設計了一款車載終端和不同通信模塊對接的轉接板,通過綜合分析各種模塊的專用上電時序后設計出了一種通用的上電時序,并通過無線通信模塊本身的PID/VID屬性加AT指令操作的方式進行模塊識別,最后通過C++多態的思想,構建基類,以基類繼承出各種不同無線通信模塊的派生類,實現運行時的多態功能。通過該方法成功實現了一臺車載移動終端自適應多種無線通信模塊的功能,提高了效率,縮短了各種生產和維護的成本。

參考文獻

  [1] 趙晗.現代無線通信技術的發展現狀及未來發展趨勢[J].企業技術開發,2011,30(16):88-89.

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

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

  [4] 劉泉承.基于S3C2440A嵌入式Linux系統USB驅動的研究與應用[D].南昌:江西科技師范大學,2012.

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

  [6] 譚浩強.C++程序設計(第二版)[M].北京:清華大學出版社,2011.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 操操操日日日 | 久久精品国产一区 | 伊人精品在线观看 | 2020国产精品永久在线观看 | 在线色 | 国产欧美日韩不卡一区二区三区 | 一个人看的手机视频www | japanoldman老头同性 | 天天碰天天摸 | 最新大黄网站免费 | 高清成人爽a毛片免费网站 高清国产精品久久久久 | 奇米影视一区二区三区 | 久久综合视频网站 | 亚洲人成网站在线播放观看 | 日韩在线不卡一区在线观看 | 日韩免费视频播放 | 日本韩国欧美在线 | 免费看欧美一级特黄α大片 | 91精品国产一区二区三区左线 | 欧美区日韩区 | 欧美色欧美亚洲高清图片 | 黄色片免费网址 | 日本在线视频www色 日本综合在线 | 亚洲欧美日韩专区一 | 日日摸碰夜夜爽 | 国产黄大片在线观看视频 | 国产你懂的在线观看 | 中文字幕精品在线观看 | 麻豆导航 | gogo大胆全球裸xxxx | 26uuu欧美日本 | 综合色影院 | 无码中文字幕日韩专区 | 日韩成人中文字幕 | 99精品国产综合久久久久 | 男女啪啪的网站 | 国产精品福利小视频 | 无遮挡h黄漫动漫在线观看 无遮挡h纯内动漫在线观看 | 又色又爽又黄的三级视频在线观看 | 操极品 | 黄色影片在线免费观看 |