新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > WindowsCE環(huán)境下無線網(wǎng)卡的自動安裝

        WindowsCE環(huán)境下無線網(wǎng)卡的自動安裝

        作者: 時間:2013-04-12 來源:網(wǎng)絡 收藏

          項目要求實現(xiàn)一個獨立的嵌入式無線通信模塊,通過現(xiàn)有的IEEE80211b接入無線局域網(wǎng)進行通信。系統(tǒng)采用Samsung公司的芯片開發(fā)嵌入式系統(tǒng)硬件平臺,需要在Windows CE環(huán)境驅(qū)勸PCMCIA

          3.2 安裝的問題和解決方案

          WindowsCE操作系統(tǒng)支持兩種類型的設備驅(qū)動程序:內(nèi)置式設備驅(qū)動程序和可安裝設備驅(qū)動程序。

        當目標朵與PC機相鏈,且目標機有顯示屏和鏈盤時,對于可安裝的設備驅(qū)動程序,其安裝步驟為:建立目標機與PC機的連接,將設備驅(qū)動程序的.dll文件復制到Windows CE的Windows目錄下;當系統(tǒng)檢測到設備時,顯示屏中會出現(xiàn)相應的對話框,用鍵盤輸入驅(qū)動的名稱即可。

          項目中要為現(xiàn)有的無線網(wǎng)卡安裝驅(qū)動程序。因為Windows CE系統(tǒng)運行時是基于RAM存儲的,ROM相當于只讀硬盤,一旦系統(tǒng)斷電或冷啟動后,RAM中的信息就會丟失,尤其是一些注冊表的信息,所以要對RAM持續(xù)供電。但由于本系統(tǒng)硬件電源不能保證持續(xù)供電,安裝了無線網(wǎng)卡的驅(qū)動程序后,信息存儲在RAM中,系統(tǒng)斷電或冷啟動后,相關(guān)的信息會丟失。而且,目標機在實際使用中無顯示屏和鍵盤。因此,斷電重啟時需要自動重新安裝無線網(wǎng)卡驅(qū)動程序。

          解決方案為:從系統(tǒng)持久存儲SM卡中讀取網(wǎng)卡驅(qū)動程序xi825.dll和TCP/IP屬性配置文件config.txt,并按配置文件設備注冊表鍵值,然后為無線網(wǎng)卡安裝驅(qū)動程序。若需要根據(jù)具體應用環(huán)境更新TCP/IP屬性值,可用新的配置文件覆蓋SM卡中的舊文件,冷啟動后,重新設備屬性值,在安裝網(wǎng)卡驅(qū)動即可。

          用EVC編寫應用程序完成自動安裝無線網(wǎng)卡驅(qū)動的功能,圖3為應用程序的大體流程。

          首先,把兩個文件從SM卡的storage card文件夾拷貝到Windows CE系統(tǒng)的Windows目錄下;拷貝成功后,按config.txt的內(nèi)容對注冊表進行操作,設置具體環(huán)境下的TCP/IP屬性值;系統(tǒng)檢測到無線網(wǎng)卡后,在彈出名為“Unidentified PCCard Adapter”的對話框中程序自動輸入網(wǎng)卡驅(qū)動程序名,完成無線網(wǎng)卡的自動安裝。

          3.3 幾個具體問題的解決

          下面,再討論一下本方案中幾個具體問題的解決辦法。包括對注冊表的操作、自動安裝功能的實現(xiàn)、程序流程的總體控制以及將程序打包封裝入操作系統(tǒng)的作法。

          3.3.1 對注冊表的操作

          Windows CE中有一系列API函數(shù)可以對注冊表進行操作,完成打開關(guān)閉注冊表、讀取或修改鍵值等功能。另外,Windows CE注冊表中值的類型為Unicode;而配置文件config.txt是在PC機上產(chǎn)生的,類別為ANSI。要按cogfing.txt中讀取的值設定注冊表值,就要進行數(shù)據(jù)類型的轉(zhuǎn)換,可以用函數(shù)MultiByteToWideChar()實現(xiàn)[4]。關(guān)鍵代碼如下:

          WindowsCE環(huán)境下無線網(wǎng)卡的自動安裝  RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根鍵TEXT("Commxi8251ParmsTcpIP"),
          //打開根鍵下的子鍵
          0, //預留值,必設為0
          0, //不支持此項,必設為0
          hKey //最終打開鍵的句柄指針
          );

          RegSetValueEx( hKey, //對鍵操作的句柄

          TEXT("IpAddress"),//鍵中的數(shù)據(jù)項名
          0, //預留值,必設為0
          REG_GZ, //數(shù)據(jù)項中值的類型
          (CONST BYE*)((LPCTSTR)regData),//存有數(shù)據(jù)項值的緩沖區(qū)
          dwDataSize //值的字節(jié)數(shù)
          ); //對"IpAddress"數(shù)據(jù)項的值作修改,即改變IP值

          3.3.2 自動安裝功能的實現(xiàn)

          用FindWindows()函數(shù)判斷對話窗口的出現(xiàn);用keybd_event()函數(shù)模擬鍵盤輸入。關(guān)鍵代碼如下:

          TCHAR g_szTitle[80]=TEXT("Unidentified PCCard Adapter"); //指定對話框的標題
          HWND hWnd=..FindWindows(NULL,g_szTitle); //判斷此標題名的窗口是否已出現(xiàn),不論是否為前臺窗口
          if (hWnd! =NULL) //若窗口已出現(xiàn)
          {..SetForegroundWindows(hWnd); //將此窗口設置前臺窗口
          keybd_event(0x58,0,0,0); //按下x鍵
          keybd_event(0x58,0,KEYEVENTE_KEYUP,0); //抬起x鍵
          //完成了按下和抬起x鍵的兩個動作,就模擬了鍵盤輸入字符x.
          ............//用同樣的方法輸入 'i825.dll'
          keybd_event(0x0d,0,0,0);
          keybd_event(0x0d,0,KEYEVENTF_KEYUP,0); //最后輸入確認鍵
          }

          正確輸入后,可以看到無線網(wǎng)卡的顯示燈開始閃爍,說明網(wǎng)卡已經(jīng)安裝成功,等待進行無線通信。

          3.3.3 程序流程的總體控制

          為了保證程序流程的順序,整個程序中還需要有一個總體監(jiān)視控制的管理員。這種監(jiān)控功能,可以通過發(fā)送接收特定消息給主控函數(shù)的方法,也可以采用等待特定事件對象的方法,還可以采用開定時器查詢的方法等。鑒于方法簡單,而且對系統(tǒng)資源占用并不大,這里選用了開定時器查詢的方法,并設置了標志位flag區(qū)分不同階段工作,進行相應的操作。下面列出部門關(guān)鍵代碼:

          flag=0; //最初標志位設為0,即先拷貝所需要文件

          m_nTimer=SetTimer(1,2000,NULL); //開啟定時器

          KillTimer(m_nTimer); //時間到,先關(guān)閉定時器,進行相應判斷和操作。

          3.3.4 應用程序封裝入系統(tǒng)

          上文已經(jīng)講了將應用程序封裝入操作系統(tǒng)的一般方法,分為應用程序的拷貝和修改系統(tǒng)配置文件兩步。此項目最后要把開的應用程序monitor.exe打包封裝入操作系統(tǒng)。這里重點介紹一下系統(tǒng)中幾個配置文件的具體修改情況。

          (1) 在Platform.bib文件中的Files部門加入以下代碼

        WindowsCE環(huán)境下無線網(wǎng)卡的自動安裝 

         其中,monitor.lnk為monitor.exe的鏈接程序(快捷方式),制作方法很簡單,可以通過一個ASCII碼編輯器編寫,格式為:#20.exe。

          此配置文件中的代碼表示,將monitor.exe和monitor.lnk加載到名為NK的內(nèi)存區(qū)中(NK的定義在config.bib文件中的memory部分完成),文件的屬性為U(非壓縮文件),這樣就完成了把自己所開發(fā)的應用程序及其鏈接程序封裝進操作系統(tǒng)中的“聲明”。

          (2) 在Platform.dat文件中加入以下代碼:

          Directory ("):-File("monitor.lnk",“.lnk”)

          由于Platform.bib做過聲明,這兩個文件在操作系統(tǒng)啟動后會映射到目錄下,這是默認的目錄。所以此外的代碼表示在Windows CE啟動時會自動運行monitor.exe。

          做完了以上工作,再對操作系統(tǒng)進行編譯,把應用程序封裝到了Windows CE操作系統(tǒng)中,而且系統(tǒng)啟動后會運行此應用程序,完成自動安裝無線網(wǎng)卡的功能。

        tcp/ip相關(guān)文章:tcp/ip是什么



        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 庆阳市| 攀枝花市| 根河市| 淮滨县| 汶上县| 洛扎县| 南平市| 阜平县| 根河市| 宁安市| 佳木斯市| 洛阳市| 宿州市| 阿尔山市| 海门市| 呼伦贝尔市| 兴国县| 磐安县| 朝阳县| 军事| 临桂县| 石台县| 特克斯县| 英山县| 图片| 武城县| 仪征市| 余庆县| 瓮安县| 绥中县| 百色市| 盐山县| 兖州市| 清苑县| 睢宁县| 吉安县| 安丘市| 开平市| 澄江县| 盐边县| 墨脱县|