<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

應用環境中自動安裝無線網卡的問題及解決方案

電子設計 ? 來源:電子技術應用 ? 作者:劉丹,李式巨 ? 2021-06-22 14:43 ? 次閱讀

討論了Windows CE環境下無線網卡的安裝,并提出了一種在系統斷電重啟時自動安裝無線網卡的解決方案。對Windows CE的系統定制、應用程序的開發及系統封裝進行了介紹。

Windows CE是為多種嵌入式系統產品而設計的緊湊、高效、可升級的操作系統,并特別為有限的硬件資源設計了多線程、多任務和完全優先的操作系統環境。在無線通信領域有很大的應用前景。

本文重點討論了Windows CE環境下無線網卡的安裝,并提出了一種在系統斷電重啟時自動安裝無線網卡的解決方案;還對Windows CE的系統定制、應用程序的開發及系統封裝進行了介紹。由于Windows CE與Windows的同源和相似,決定了學習Windows CE的簡易性,這樣就縮短了應用者的開發周期。

1 Windows CE簡介

Windows CE包括四大基本模塊,它們提供了操作系統的關鍵特性,分別是:內核(Kernel)模塊、對象存儲(Object Store)模塊、GWES(用戶、應用程序和操作系統之間的圖形用戶界面)模塊和通信(Communication)模塊。圖1為Windows CE的模塊化結構圖。

操作系統定制工具有Windows CE Platform Builder(簡稱PB),應用程序開發工具有嵌入式開發工具包Embedded Visual Tools,包括Embedded Visual C++(簡稱EVC)和Embedded Visual Basic(簡稱EVB)。

2 特定硬件平臺Windows CE操作系統的開發

應用環境中自動安裝無線網卡的問題及解決方案

有了具體的嵌入式硬件平中后,就可以為其開發滿足特定功能需要的Windows CE系統??傊?,可以分成三個步驟:操作系統的定制、特定功能應用程序模塊的開發、功能模塊封裝入操作系統。

2.1 操作系統的初步定制

圖2為在PB中定制Windows CE操作系統的一般流程。

首先,選擇操作系統的基本配置,并且為特定的平臺選擇相應的微處理器和平臺支持包BPS(Board Support Packet)。PB提供的BSP有CEPC(基于PC機的WinCE硬件開發平臺)。開發者可以選擇其一或自己定制特定平臺的BPS。其次,制定平臺,在此階段可開發設備驅動,適當地裁剪、添加組件,如有必要還需對某些配置文件進行修改。然后,封裝所需要的各功能模塊,編譯生成OS鏡像文件。若設備為自己定制的目標設備,則需開發OAL(OEM Adaptation Layer)、BPS和BootLoader。接著,把鏡像文件下載到目標設備,進行調試;需要的話,進行重復配置、封裝、下載及調試,需要的話,進行重復配置、封裝、下載及調試,直到滿足要求,完成平臺的創建。

最后導出相應的SDK(Software Development Kit)軟件開發工具包,運行后加域到EVC中,使得可以進行特定硬件平臺上的應用程序開發。SDK包含程序庫、頭文件、示例程序源代碼和庫函數使用文檔,同時還包括編程指導和API參與以及設備驅動工具包(DDK)。

2.2 特定功能應用程序模塊的開發

開發特定功能的應用程序模塊就是在EVC中編寫應用程序,滿足系統功能擴充的需要。重點要做以下工作:

(1)為特定平臺選擇相應的微處理器,如WCE THUMB或WCE x86em等。

(2)編寫應用程序。方法上EVC與PC機上運行的VC差別不大。兩者的區別主要有:前者的API是后者API的子集,對不兼容的函數要做一些修改或者尋求可替代的函數;前者為Unicode環境,所有字符都是兩個字節,而后者為ANSI美國標準,每個字符一個字節,因此必要時兩者間要作數據類型轉換;另外在用戶界面編程和內存管理等方面也有些差異。

(3)對程序進行編譯和調試。編譯時一定要選擇特定的硬件平臺。調試時可用微軟件包提供的工具Microsoft Activesync建立PC機上與目標機的連接,把系統鏡像從PC機下載到目標機上進行調試;另外EVC中帶有模擬器,可以在PC機上模擬目標平臺上的大部分功能。

2.3 功能模塊封裝入系統

OEM開發者通常把必要的應用程序和操作系統封裝在一起發布給使用者,因此要把應用程序打包封裝入初步制定的操作系統中。需要做的工作主要有兩個:

(1)把編譯好的可執行文件拷貝到Windows CE系統相應的文件夾中。

(2)在PB中修改相應的系統配置文件。PB所提供的配置文件包括四種文件類型:.bib,說明需要打包進鏡像文件的Windows CE文件;.dat,文件系統、目錄和文件分配表描述;.db,Windows CE對象存儲數據庫的描述;.reg,系統注冊表。在開發過程中最常用到的配置文件有:Platform.bib、Platform.reg、Platform.dat、Config.bib。Platform.bib定義打包到OS鏡像文件時所需要的文件(files)和模塊(modules);Platform.reg定義目標平臺冷啟動時所加載的注冊表鍵值;Platform.dat定義目標平臺冷啟動時所加載的系統文件、目錄和鏈接等;Config.bib定義可用的物理地址,并進行一些屬性設置。

做好以上兩步以后,對操作系統重新編譯、下載、調試,最終得到功能完整的系統鏡像。

3 開發實例——Windows CE環境下無線網卡的自動安裝

3.1 項目介紹

項目要求實現一個獨立的嵌入式無線通信模塊,通過現有的IEEE80211b無線網卡接入無線局域網進行通信。系統采用Samsung公司的S3C2410芯片開發嵌入式系統硬件平臺,需要在Windows CE環境驅勸PCMCIA無線網卡。

3.2 無線網卡安裝的問題和解決方案

Windows CE操作系統支持兩種類型的設備驅動程序:內置式設備驅動程序和可安裝設備驅動程序。當目標朵與PC機相鏈,且目標機有顯示屏和鏈盤時,對于可安裝的設備驅動程序,其安裝步驟為:建立目標機與PC機的連接,將設備驅動程序的.dll文件復制到Windows CE的Windows目錄下;當系統檢測到設備時,顯示屏中會出現相應的對話框,用鍵盤輸入驅動的名稱即可。

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

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

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

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

3.3 幾個具體問題的解決

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

3.3.1 對注冊表的操作

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

RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根鍵TEXT(“Comm\xi8251\Parms\TcpIP”),

//打開根鍵下的子鍵

0, //預留值,必設為0

0, //不支持此項,必設為0

%26;amp;hKey //最終打開鍵的句柄指針

);

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

TEXT(“IpAddress”),//鍵中的數據項名

0, //預留值,必設為0

REG_GZ, //數據項中值的類型

(CONST BYE*)((LPCTSTR)regData),//存有數據項值的緩沖區

dwDataSize //值的字節數

); //對“IpAddress”數據項的值作修改,即改變IP值

3.3.2 自動安裝功能的實現

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

TCHAR g_szTitle[80]=TEXT(“Unidentified PCCard Adapter”); //指定對話框的標題

HWND hWnd=。.FindWindows(NULL,g_szTitle); //判斷此標題名的窗口是否已出現,不論是否為前臺窗口

if (hWnd! =NULL) //若窗口已出現

{。.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); //最后輸入確認鍵

}

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

3.3.3 程序流程的總體控制

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

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

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

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

3.3.4 應用程序封裝入系統

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

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

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

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

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

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

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

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

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 無線
    +關注

    關注

    31

    文章

    5327

    瀏覽量

    171808
  • 操作系統
    +關注

    關注

    37

    文章

    6376

    瀏覽量

    122202
  • 應用程序
    +關注

    關注

    37

    文章

    3168

    瀏覽量

    56965
收藏 人收藏

    評論

    相關推薦

    求USB網卡方案和USB無線網卡方案?

    求購USB網卡方案和USB無線網卡方案?vcd8029@126.com
    發表于 05-03 09:43

    細說無線上網卡無線網卡的區別

        隨著筆記本的普及,移動上網成了最為迫切的伴侶,不過很多讀者疑惑的是,目前市面上有一種無線網卡,還有一種無線上網卡,雖然只是相差一個字,但它們的功能卻大大的不同,兩者的價格
    發表于 06-23 13:37

    無線網卡

    本帖最后由 fangshenghai 于 2012-2-23 12:53 編輯 無線網卡學習
    發表于 02-22 23:08

    在Windows CE環境無線網卡如何自動安裝?

    有誰來解釋一下在Windows CE環境無線網卡如何去自動安裝?
    發表于 06-04 06:15

    USB無線網卡(EDUP)配置

    USB無線網卡(EDUP)配置 連接WiFi 嵌入式 Debian 9.5系統*1.準備條件硬件:beaglebone black 開發板EDUPUSB無線網卡 嵌入式系統為:debian 9.5
    發表于 12-16 08:32

    ralink無線網卡驅動

    很小的ralink無線網卡驅動,ralink無線網卡驅動免費下載。
    發表于 03-16 00:28 ?43次下載

    Windows CE環境無線網卡自動安裝

    摘要:討論了Windows CE環境無線網卡安裝,并提出了一種在系統斷電重啟時自動安裝無線網卡
    發表于 03-11 12:39 ?1159次閱讀
    Windows CE<b class='flag-5'>環境</b>下<b class='flag-5'>無線網卡</b>的<b class='flag-5'>自動</b><b class='flag-5'>安裝</b>

    無線網卡有什么作用

    無線網卡有什么用 目前國內所銷售的筆記本電腦,其標配的無線網卡,都是指wlan無線網卡,即wifi無線網卡,主要用于組建無線局域
    發表于 07-02 17:25 ?5143次閱讀

    Windows CE環境無線網卡自動安裝

    本文討論了Windows CE環境無線網卡安裝,并提出了一種在 系統斷電重啟時自動安裝無線網卡
    發表于 04-18 10:02 ?0次下載

    無線網卡怎么用

    第一步:把無線網卡插入USB接口后指示燈會亮起,計算機會自動識別該無線網卡,如果無線網卡沒有問題,會在右下角顯示“新硬件已安裝并可以使用”
    的頭像 發表于 12-10 15:01 ?9w次閱讀

    無線網卡有幾種

    無線網卡采用的接口劃分,有PCI無線網卡(包括ISA接口)、USB無線網卡和PCMCIA無線網卡(包括CF接口)。
    的頭像 發表于 01-04 16:16 ?2w次閱讀

    無線網卡怎么安裝_無線網卡怎么連接臺式電腦

    無線網卡怎么用?這一直是一個很多人都喜歡問的問題,盡管現在無線網卡設計上越來越方便靈活,但是不可避免的還是有很多人對其的使用表示困惑,例如筆記本無線網卡驅動是怎么安裝打開的卻并非所有人
    的頭像 發表于 12-22 17:01 ?2.3w次閱讀

    選擇無線網卡的原則和方法

    選擇無線網卡的原則和方法 無線網卡是一種用于連接電腦或其他設備與無線網絡的設備,它可以通過Wi-Fi信號接收和發送數據。隨著無線網絡的廣泛應用,選擇一款合適的
    的頭像 發表于 12-11 11:38 ?669次閱讀

    什么是無線網卡?它是如何工作的?如何安裝無線網卡?

    什么是無線網卡?它是如何工作的?如何安裝無線網卡? 無線網卡無線適配器)是一種設備,用于使計算機或其他設備能夠連接到
    的頭像 發表于 12-15 09:58 ?906次閱讀

    無線網卡驅動怎么安裝 無線網卡怎么連接臺式電腦

    如今,隨著科技的不斷發展,無線網絡已經成為了我們生活中不可或缺的一部分。對于臺式電腦用戶而言,如果沒有內置無線網卡,就需要通過安裝外置無線網卡來連接
    的頭像 發表于 01-19 09:54 ?1360次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>