為了滿足客戶多網絡的需求,英創公司推出了有3個網絡接口的嵌入式主板——EM9360。 由于EM9360沒有標準的WinCE界面,給更改網絡的ip地址帶來困難。本演示示例是通過英創嵌入式主板的WebServer功能來完成ip地址的配置。 其實現的原理是通過ASP網頁提交給服務器需要更改的ip地址內容,在服務器端,通過調用COM組件,完成ip地址的配置。通過本示例,你可以加深對COM組件的理解。
EM9360可以通過一下三種方法來完成ip地址的配置:
1、通過更改WinCE的注冊表
對注冊表的訪問,可以更改ip地址,但是,需要重新啟動開發板才能使設置的ip地址生效。注冊表的修改可以利用遠程調試工具中的Remote Registry Editor來進行,這部分的詳細介紹可以參見英創公司網站“技術天地”欄目中英創9260系列嵌入式主板調試使用方法簡介。該方法一般是在產品開發時,技術開發人員使用。
2、參考C程序SetIPParms 示例程序來進行IP參數的設置
該程序主要是提供了一個利用NetIP_API靜態庫修改網卡參數的示例。通過API函數GetNetWorkAdapterInfo(…)獲取網絡參數, SetNetWorkAdapterInfo(…)來設置網絡參數并自動綁定網絡適配器,無需重啟開發板,就能使設置的網絡生效。該程序主要提供給用C語言進行應用程序開發技術人員參考,同時也可以作為一個獨立的小工具程序,在telnet環境下啟動運行,通過命令行參數進行網絡參數的設置。命令行的格式如下:
SetIPParms 網卡名 IP地址 子網掩碼 默認網關
如設置網絡2口DM9K21的參數:
SetIPParms DM9k21 192.168.202.170 255.255.255.0 192.168.202.8
為了適應客戶靈活修改程序,我們在開發光盤中提供了SetIPParms的源碼。
3、利用COM組件通過ASP動態網頁設置
由于NetIP_API靜態庫主要是面向C開發環境下使用,對于采用其它開發工具,如C#、Labview等就不能直接使用,因而需要一種更為通用而簡便的方法來對網絡參數進行配置。這里采用的方法是將NetIP_API靜態庫封裝成一個標準的COM組件,來支持各種開發平臺的調用,本文主要介紹的是ASP動態網頁對COM組件的調用。這種方法只需通過IE瀏覽器訪問即可實現對網絡參數的設置,因而特別適合用于工程現場的設備配置。本文的以下部分主要介紹了COM組件的生產以及調用方法。
1、建立COM組件
1、新建EVC工程,選擇WCE ATL COM AppWizard,工程名字為Scripting。
2、選擇支持MFC。
3、通過ATL向導添加接口 Insert-》New ATL Objcet…,在該對話框中選擇Simple Object項添加一個COM對象,點擊Next按鈕來設置對象名和屬性。
對象名Names選項卡中主要包括兩類輸入信息:C++信息和COM信息。在這里,我們輸入名字COM_NetIP_API,其它信息會自動生成。
在Attributes選項卡中,我們要設置COM對象的底層特征。由于在CE中,目前只支持Free模型,所以,必須選中這一項。其它選項意義請參考相應的書籍。
4、為COM_NetIP_API對象添加接口方法。選中ICOM_NetIP_API接口,右擊,在彈出的快捷菜單中選擇Add Method…項,為COM_NetIP_API對象添加接口方法。
5、為接口添加方法的對話框界面,只需在Method Name輸入框中輸入ChangParms,在Parameters輸入框中輸入 [in]VARIANT AdapterName,[in] VARIANT AdaptersParameter,[in] VARIANT AdaptersParameterVal, [out, retval] long * pVal然后點擊OK按鈕,即可添加一個COM_NetIP_API方法。這里,要注意參數的數據類型,選擇VARIANT類型,可以根據輸入的參數類型,靈活處理參數數據。在寫COM組件時,可以把參變量設置為VARIANT類型,這樣,可以根據參數變量的類型進行不同的處理。下面介紹一下兩個重要的類型轉換 。
// VARIANT轉換為CString類型
CComVariant v_1( v1 ); // V1是參變量VARIANT類型
v_1.ChangeType( VT_BSTR ); // 轉換為BSTR字符串
CString keyName(v_1.bstrVal); // 轉化為CString
// char 轉換為VARIANT pVal為VARIANT指針變量
char buf[100];
CString str;
str=buf;
pVal-》vt = VT_BSTR; // 指定pVal的類型為BSTR
pVal-》bstrVal = str.AllocSysString();// str轉換為BSTR
6、添加了ChangParms方法后,就要添ChangParms方法實現代碼了。在ClassView選項卡中,雙擊ChangParms,就可以在代碼窗口添加實現代碼了。具體代碼見EVC工程源碼。
7、把NETIP_API.lib和NETIP_API.h拷貝到當前工程目錄下,在Projecting-》Setting-》link標簽,增加netip_api.lib,在ChangIP.cpp包含頭文件NETIP_API.h。
8、以同樣的方法,添加ReadIP接口方法。詳見源碼。
2、注冊COM組件
COM組件編寫并編譯為DLL文件,只有向系統注冊此組件后,其它語言才能夠調用。注冊的方法有兩種。
1、用telnet登陸開發板,用regsvr32 SetIPParms.dll注冊
2、在程序中注冊。具體方法請參考例程一Regdll 工程源碼
3、在ASP中調用COM組件
以VBScript為例,調用COM組件對象,完成對文件的操作。
1、創建SetIPParms對象,并讀出現有ip地址的信息
set ipObj=CreateObject(‘SetIPParms.COM_NetIP_API’) // 創建ChangIP對象
emIPAddress=ipObj.ReadParms(‘DM9K21’,‘IPAddress’) // 讀ip地址第一個參數為網卡編號名DM9K21或者DM9K31,第二個參數為:IPAddress、DHCP、SubnetMask、DefaultGateway
ipObj.ChangIP ‘DM9K21’,‘DHCP’,emDHCP // 更改ip配置信息,前兩個參數和前面的定義相同,第三個參數,為“Enable”或者“Disable”
2、詳細網頁代碼請參考ASP源文件。
4、綜合測試
至此,我們完成了COM組件的編寫和VBScript調用組件。我們提供了綜合例程,如圖9所示,通過網頁配置網絡參數,具體步驟如下:
1、把regsvr32 .exe 和SetIPParms.dll拷貝到Nandflash的根目錄下
2、telnet登陸嵌入式主板,執行regsvr32 SetIPParms.dll注冊
3、把ASP文件夾下的所有文件拷貝到 \nandflash\www目錄下
4、在瀏覽器中輸入 嵌入式主板的ip地址/nand/SetIPParms.asp就可以看到配置網頁。
-
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35465
發布評論請先 登錄
相關推薦
評論