為了滿足客戶多網(wǎng)絡的需求,英創(chuàng)公司推出了有3個網(wǎng)絡接口的嵌入式主板——EM9360。 由于EM9360沒有標準的WinCE界面,給更改網(wǎng)絡的ip地址帶來困難。本演示示例是通過英創(chuàng)嵌入式主板的WebServer功能來完成ip地址的配置。 其實現(xiàn)的原理是通過ASP網(wǎng)頁提交給服務器需要更改的ip地址內容,在服務器端,通過調用COM組件,完成ip地址的配置。通過本示例,你可以加深對COM組件的理解。
EM9360可以通過一下三種方法來完成ip地址的配置:
1、通過更改WinCE的注冊表
對注冊表的訪問,可以更改ip地址,但是,需要重新啟動開發(fā)板才能使設置的ip地址生效。注冊表的修改可以利用遠程調試工具中的Remote Registry Editor來進行,這部分的詳細介紹可以參見英創(chuàng)公司網(wǎng)站“技術天地”欄目中英創(chuàng)9260系列嵌入式主板調試使用方法簡介。該方法一般是在產(chǎn)品開發(fā)時,技術開發(fā)人員使用。
2、參考C程序SetIPParms 示例程序來進行IP參數(shù)的設置
該程序主要是提供了一個利用NetIP_API靜態(tài)庫修改網(wǎng)卡參數(shù)的示例。通過API函數(shù)GetNetWorkAdapterInfo(…)獲取網(wǎng)絡參數(shù), SetNetWorkAdapterInfo(…)來設置網(wǎng)絡參數(shù)并自動綁定網(wǎng)絡適配器,無需重啟開發(fā)板,就能使設置的網(wǎng)絡生效。該程序主要提供給用C語言進行應用程序開發(fā)技術人員參考,同時也可以作為一個獨立的小工具程序,在telnet環(huán)境下啟動運行,通過命令行參數(shù)進行網(wǎng)絡參數(shù)的設置。命令行的格式如下:
SetIPParms 網(wǎng)卡名 IP地址 子網(wǎng)掩碼 默認網(wǎng)關
如設置網(wǎng)絡2口DM9K21的參數(shù):
SetIPParms DM9k21 192.168.202.170 255.255.255.0 192.168.202.8
為了適應客戶靈活修改程序,我們在開發(fā)光盤中提供了SetIPParms的源碼。
3、利用COM組件通過ASP動態(tài)網(wǎng)頁設置
由于NetIP_API靜態(tài)庫主要是面向C開發(fā)環(huán)境下使用,對于采用其它開發(fā)工具,如C#、Labview等就不能直接使用,因而需要一種更為通用而簡便的方法來對網(wǎng)絡參數(shù)進行配置。這里采用的方法是將NetIP_API靜態(tài)庫封裝成一個標準的COM組件,來支持各種開發(fā)平臺的調用,本文主要介紹的是ASP動態(tài)網(wǎng)頁對COM組件的調用。這種方法只需通過IE瀏覽器訪問即可實現(xiàn)對網(wǎng)絡參數(shù)的設置,因而特別適合用于工程現(xiàn)場的設備配置。本文的以下部分主要介紹了COM組件的生產(chǎn)以及調用方法。
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方法。這里,要注意參數(shù)的數(shù)據(jù)類型,選擇VARIANT類型,可以根據(jù)輸入的參數(shù)類型,靈活處理參數(shù)數(shù)據(jù)。在寫COM組件時,可以把參變量設置為VARIANT類型,這樣,可以根據(jù)參數(shù)變量的類型進行不同的處理。下面介紹一下兩個重要的類型轉換 。
// 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方法實現(xiàn)代碼了。在ClassView選項卡中,雙擊ChangParms,就可以在代碼窗口添加實現(xiàn)代碼了。具體代碼見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文件,只有向系統(tǒng)注冊此組件后,其它語言才能夠調用。注冊的方法有兩種。
1、用telnet登陸開發(fā)板,用regsvr32 SetIPParms.dll注冊
2、在程序中注冊。具體方法請參考例程一Regdll 工程源碼
3、在ASP中調用COM組件
以VBScript為例,調用COM組件對象,完成對文件的操作。
1、創(chuàng)建SetIPParms對象,并讀出現(xiàn)有ip地址的信息
set ipObj=CreateObject(‘SetIPParms.COM_NetIP_API’) // 創(chuàng)建ChangIP對象
emIPAddress=ipObj.ReadParms(‘DM9K21’,‘IPAddress’) // 讀ip地址第一個參數(shù)為網(wǎng)卡編號名DM9K21或者DM9K31,第二個參數(shù)為:IPAddress、DHCP、SubnetMask、DefaultGateway
ipObj.ChangIP ‘DM9K21’,‘DHCP’,emDHCP // 更改ip配置信息,前兩個參數(shù)和前面的定義相同,第三個參數(shù),為“Enable”或者“Disable”
2、詳細網(wǎng)頁代碼請參考ASP源文件。
4、綜合測試
至此,我們完成了COM組件的編寫和VBScript調用組件。我們提供了綜合例程,如圖9所示,通過網(wǎng)頁配置網(wǎng)絡參數(shù),具體步驟如下:
1、把regsvr32 .exe 和SetIPParms.dll拷貝到Nandflash的根目錄下
2、telnet登陸嵌入式主板,執(zhí)行regsvr32 SetIPParms.dll注冊
3、把ASP文件夾下的所有文件拷貝到 \nandflash\www目錄下
4、在瀏覽器中輸入 嵌入式主板的ip地址/nand/SetIPParms.asp就可以看到配置網(wǎng)頁。
-
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35477
發(fā)布評論請先 登錄
相關推薦
評論