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

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 無(wú)線手持磁條卡信息終端設(shè)計(jì)

          無(wú)線手持磁條卡信息終端設(shè)計(jì)

          作者: 時(shí)間:2011-04-21 來(lái)源:網(wǎng)絡(luò) 收藏

          3.2.3 sys_arch.c
          主要實(shí)現(xiàn)與操作系統(tǒng)封裝層相關(guān)的一些函數(shù),包括郵箱操作函數(shù)、信號(hào)量操作函數(shù)等等,主要實(shí)現(xiàn)以下幾個(gè)函數(shù):
          (1)LwIP系統(tǒng)的初始化函數(shù)。LwIP提供了系統(tǒng)初始化函數(shù)void sys_init(void),用來(lái)給用戶初始化一些必要的數(shù)據(jù)結(jié)構(gòu)。在本系統(tǒng)當(dāng)中,sys_init()函數(shù)主要使用μC/OS-Ⅱ的內(nèi)存管理函數(shù),分配LwIP郵箱所需的內(nèi)存和初始化LwIP的定時(shí)事件表。
          (2)LwIP信號(hào)量操作函數(shù)。由于μC/OS-Ⅱ中已經(jīng)實(shí)現(xiàn)了信號(hào)量的各種操作,只需使用μC/OS-Ⅱ中的信號(hào)量處理函數(shù)對(duì)LwIP的信號(hào)量操作函數(shù)重新進(jìn)行封裝就可以了。
          (3)LwIP郵箱操作函數(shù)。LwIP中的郵箱對(duì)應(yīng)μC/OS-Ⅱ中的消息隊(duì)列。根據(jù)sys_arch.h文件里面定義的郵箱數(shù)據(jù)結(jié)構(gòu),使用μC/OS-Ⅱ的消息隊(duì)列函數(shù)封裝成以下幾個(gè)函數(shù)就可以實(shí)現(xiàn)LwIP的郵箱操作:
          e.JPG
          (4)LwIP的sys_arch_timeouts函數(shù)。在LwIP當(dāng)中,每一個(gè)線程都有一個(gè)定時(shí)器鏈表來(lái)保存相關(guān)的定時(shí),移植時(shí)要做的事情是為每一個(gè)定時(shí)器鏈表提供一個(gè)用來(lái)保存鏈表表頭指針的結(jié)構(gòu)變量sys_timeouts,并通過(guò)sys_arch_timeouts函數(shù)返回每個(gè)線程對(duì)應(yīng)的sys_timeouts變量,并且保證在出錯(cuò)時(shí)也能返回一個(gè)可用的sys_timeouts變量。相關(guān)的數(shù)據(jù)結(jié)構(gòu)和函數(shù)定義如下:
          f.JPG
          (5)LwIP線程的創(chuàng)建函數(shù)。LwIP需要實(shí)現(xiàn)線程的創(chuàng)建函數(shù),但是由于μC/OS-Ⅱ中沒(méi)有線程的概念,只有任務(wù),所以LwIP中線程創(chuàng)建可以通過(guò)調(diào)用μC/OS-Ⅱ中的任務(wù)創(chuàng)建函數(shù)實(shí)現(xiàn)。
          (6)LwIP獲取系統(tǒng)時(shí)間函數(shù)。當(dāng)LwIP使用PPP作為數(shù)據(jù)鏈路層協(xié)議時(shí),必須通過(guò)sys_jifties()函數(shù)獲得以ms為單位的系統(tǒng)時(shí)間。因此要使用LwIP的PPP協(xié)議時(shí),一定要實(shí)現(xiàn)這個(gè)函數(shù);沒(méi)有使用PPP協(xié)議時(shí),無(wú)需理會(huì)。由于在μC/OS-Ⅱ,無(wú)論時(shí)鐘節(jié)拍何時(shí)發(fā)生,μC/OS-Ⅱ都會(huì)對(duì)一個(gè)32位的計(jì)數(shù)器加1。可以通過(guò)調(diào)用μC/OS-Ⅱ的系統(tǒng)函數(shù)OSTimeGet()來(lái)獲得該計(jì)數(shù)器的當(dāng)前值,再根據(jù)系統(tǒng)的時(shí)鐘節(jié)拍頻率就可以實(shí)現(xiàn)sys_jifties()函數(shù)。
          3.2.4 修改配置文件lwipopt.h
          LwIP提供了配置文件lwipopt.h,可以通過(guò)定義一系列宏來(lái)剪裁LwIP功能,適應(yīng)不同的應(yīng)用需要。例如可以設(shè)置是否支持PPP協(xié)議,是否支持ICMP協(xié)議,是否支持自動(dòng)獲取IP等等。由于本應(yīng)用系統(tǒng)使用GPRS上網(wǎng),所以設(shè)置支持PPP協(xié)議。
          3.3 GPRSModem驅(qū)動(dòng)
          Modem驅(qū)動(dòng)完成MC39i的初始化、發(fā)送和接收PPP協(xié)議幀數(shù)據(jù)。
          3.3.1 AT命令
          驅(qū)動(dòng)Modem是基于A T命令集實(shí)現(xiàn)的,微控斜器通過(guò)串行接口將AT命令發(fā)送給MC39i,從而完成對(duì)MC39i的控制。主要AT命令如下:
          (1)設(shè)置錯(cuò)誤返回。使用at+cmee=1命令,執(zhí)行錯(cuò)誤時(shí),錯(cuò)誤報(bào)告的格式均為ERROR。
          (2)設(shè)置接入網(wǎng)關(guān)。使用at+cgdcont=1,“IP”,“CMNET”命令設(shè)置GPRS接入網(wǎng)關(guān)為移動(dòng)夢(mèng)網(wǎng)。
          (3)激活GPRS功能。使用AT+CGACT=1,使GPRS模塊附著到網(wǎng)絡(luò)。如果命令返回O K,則GPRS連接成功;如果返回ERROR,則意味著GPRS連接
          失敗。
          (4)撥號(hào)。ATD * 99 * * * 1#。撥號(hào)成功后,微控制器通過(guò)串口傳送PPP協(xié)議幀,與Modem進(jìn)行數(shù)據(jù)通信。
          3.3.2 LwIP與Modem接口函數(shù)
          Modem使用串行接口與微控制器進(jìn)行通信。而LwIP提供了幾個(gè)標(biāo)準(zhǔn)的串行設(shè)備接口函數(shù),在LwIP中的創(chuàng)建sio.c文件實(shí)現(xiàn)GPRS無(wú)線Modem驅(qū)動(dòng)。該文件中主要實(shí)現(xiàn)下面幾個(gè)函數(shù):
          g.JPG

          4 結(jié)語(yǔ)
          本文的無(wú)線系統(tǒng)實(shí)現(xiàn)了輕量級(jí)TCP/IP協(xié)議棧LwIP在μC/OS-Ⅱ上的移植,并利用運(yùn)營(yíng)商的GPRS網(wǎng)絡(luò)實(shí)現(xiàn)了與后臺(tái)服務(wù)器的無(wú)線互聯(lián),其具有成本低,體積小和功耗低等優(yōu)點(diǎn),可應(yīng)用于多種應(yīng)用場(chǎng)合。

          本文引用地址:http://www.ex-cimer.com/article/156375.htm

          上一頁(yè) 1 2 3 下一頁(yè)

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