無(wú)線(xiàn)手持磁條卡信息終端設計
3.2.3 sys_arch.c
主要實(shí)現與操作系統封裝層相關(guān)的一些函數,包括郵箱操作函數、信號量操作函數等等,主要實(shí)現以下幾個(gè)函數:
(1)LwIP系統的初始化函數。LwIP提供了系統初始化函數void sys_init(void),用來(lái)給用戶(hù)初始化一些必要的數據結構。在本系統當中,sys_init()函數主要使用μC/OS-Ⅱ的內存管理函數,分配LwIP郵箱所需的內存和初始化LwIP的定時(shí)事件表。
(2)LwIP信號量操作函數。由于μC/OS-Ⅱ中已經(jīng)實(shí)現了信號量的各種操作,只需使用μC/OS-Ⅱ中的信號量處理函數對LwIP的信號量操作函數重新進(jìn)行封裝就可以了。
(3)LwIP郵箱操作函數。LwIP中的郵箱對應μC/OS-Ⅱ中的消息隊列。根據sys_arch.h文件里面定義的郵箱數據結構,使用μC/OS-Ⅱ的消息隊列函數封裝成以下幾個(gè)函數就可以實(shí)現LwIP的郵箱操作:

(4)LwIP的sys_arch_timeouts函數。在LwIP當中,每一個(gè)線(xiàn)程都有一個(gè)定時(shí)器鏈表來(lái)保存相關(guān)的定時(shí)信息,移植時(shí)要做的事情是為每一個(gè)定時(shí)器鏈表提供一個(gè)用來(lái)保存鏈表表頭指針的結構變量sys_timeouts,并通過(guò)sys_arch_timeouts函數返回每個(gè)線(xiàn)程對應的sys_timeouts變量,并且保證在出錯時(shí)也能返回一個(gè)可用的sys_timeouts變量。相關(guān)的數據結構和函數定義如下:

(5)LwIP線(xiàn)程的創(chuàng )建函數。LwIP需要實(shí)現線(xiàn)程的創(chuàng )建函數,但是由于μC/OS-Ⅱ中沒(méi)有線(xiàn)程的概念,只有任務(wù),所以L(fǎng)wIP中線(xiàn)程創(chuàng )建可以通過(guò)調用μC/OS-Ⅱ中的任務(wù)創(chuàng )建函數實(shí)現。
(6)LwIP獲取系統時(shí)間函數。當LwIP使用PPP作為數據鏈路層協(xié)議時(shí),必須通過(guò)sys_jifties()函數獲得以ms為單位的系統時(shí)間。因此要使用LwIP的PPP協(xié)議時(shí),一定要實(shí)現這個(gè)函數;沒(méi)有使用PPP協(xié)議時(shí),無(wú)需理會(huì )。由于在μC/OS-Ⅱ,無(wú)論時(shí)鐘節拍何時(shí)發(fā)生,μC/OS-Ⅱ都會(huì )對一個(gè)32位的計數器加1??梢酝ㄟ^(guò)調用μC/OS-Ⅱ的系統函數OSTimeGet()來(lái)獲得該計數器的當前值,再根據系統的時(shí)鐘節拍頻率就可以實(shí)現sys_jifties()函數。
3.2.4 修改配置文件lwipopt.h
LwIP提供了配置文件lwipopt.h,可以通過(guò)定義一系列宏來(lái)剪裁LwIP功能,適應不同的應用需要。例如可以設置是否支持PPP協(xié)議,是否支持ICMP協(xié)議,是否支持自動(dòng)獲取IP等等。由于本應用系統使用GPRS上網(wǎng),所以設置支持PPP協(xié)議。
3.3 GPRS無(wú)線(xiàn)Modem驅動(dòng)
無(wú)線(xiàn)Modem驅動(dòng)完成MC39i的初始化、發(fā)送和接收PPP協(xié)議幀數據。
3.3.1 AT命令
驅動(dòng)Modem是基于A(yíng) T命令集實(shí)現的,微控斜器通過(guò)串行接口將AT命令發(fā)送給MC39i,從而完成對MC39i的控制。主要AT命令如下:
(1)設置錯誤返回信息。使用at+cmee=1命令,執行錯誤時(shí),錯誤報告的格式均為ERROR。
(2)設置接入網(wǎng)關(guān)。使用at+cgdcont=1,“IP”,“CMNET”命令設置GPRS接入網(wǎng)關(guān)為移動(dòng)夢(mèng)網(wǎng)。
(3)激活GPRS功能。使用AT+CGACT=1,使GPRS模塊附著(zhù)到網(wǎng)絡(luò )。如果命令返回O K,則GPRS連接成功;如果返回ERROR,則意味著(zhù)GPRS連接
失敗。
(4)撥號。ATD * 99 * * * 1#。撥號成功后,微控制器通過(guò)串口傳送PPP協(xié)議幀,與Modem進(jìn)行數據通信。
3.3.2 LwIP與Modem接口函數
無(wú)線(xiàn)Modem使用串行接口與微控制器進(jìn)行通信。而LwIP提供了幾個(gè)標準的串行設備接口函數,在LwIP中的創(chuàng )建sio.c文件實(shí)現GPRS無(wú)線(xiàn)Modem驅動(dòng)。該文件中主要實(shí)現下面幾個(gè)函數:

4 結語(yǔ)
本文設計的無(wú)線(xiàn)手持磁條卡信息終端系統實(shí)現了輕量級TCP/IP協(xié)議棧LwIP在μC/OS-Ⅱ上的移植,并利用運營(yíng)商的GPRS網(wǎng)絡(luò )實(shí)現了與后臺服務(wù)器的無(wú)線(xiàn)互聯(lián),其終端具有成本低,體積小和功耗低等優(yōu)點(diǎn),可應用于多種應用場(chǎng)合。本文引用地址:http://dyxdggzs.com/article/156375.htm
評論