COM(Component Object Model),即組件對(duì)象模型,是微軟公司開(kāi)發(fā)的一種新的軟件開(kāi)發(fā)技術(shù),Microsoft的許多技術(shù),如ActiveX、DirectX、以及OLE等都是基于COM而建立起來(lái)的。COM標(biāo)準(zhǔn)包括規(guī)范和實(shí)現(xiàn)兩大部分,規(guī)范部分定義了組件和組件之間通信的機(jī)制,這些規(guī)范不依賴(lài)于任何特定的語(yǔ)言和操作系統(tǒng),只要按照該規(guī)范,任何語(yǔ)言都可以使用; COM標(biāo)準(zhǔn)的實(shí)現(xiàn)部分是COM庫(kù),COM庫(kù)為COM規(guī)范的具體實(shí)現(xiàn)提供了一些核心服務(wù)。
在COM模型中,對(duì)象本身對(duì)于客戶(hù)來(lái)說(shuō)是不可見(jiàn)的,客戶(hù)請(qǐng)求服務(wù)時(shí),只能通過(guò)接口進(jìn)行。每一個(gè)接口都由一個(gè)128位的全局唯一標(biāo)識(shí)符(GUID,Globally Unique Identifier)來(lái)標(biāo)識(shí)。客戶(hù)通過(guò)GUID獲得接口的指針,再通過(guò)接口指針客戶(hù)就可以調(diào)用其相應(yīng)的成員函數(shù)。對(duì)象可以支持多個(gè)接口,因此對(duì)組件對(duì)象的升級(jí)可通過(guò)增加接口的辦法實(shí)現(xiàn),這樣得到的新接口可以不影響老接口的使用。
COM既提出了組件之間進(jìn)行交互的規(guī)范,也提供了實(shí)現(xiàn)交互的環(huán)境, 因?yàn)榻M件對(duì)象之間交互的規(guī)范不依賴(lài)于任何特定的語(yǔ)言,所以COM也可以是不同語(yǔ)言協(xié)作開(kāi)發(fā)的一種標(biāo)準(zhǔn)。
有了這種跨語(yǔ)言設(shè)計(jì)的方法,我們就可以通過(guò)動(dòng)態(tài)網(wǎng)頁(yè)技術(shù),也就是嵌入式主板提供的WebServer功能,利用VBScript或者JavaScript使用COM提供的接口方法,完成遠(yuǎn)程監(jiān)控和遠(yuǎn)程控制功能。這樣,在英創(chuàng)嵌入式主板上接上攝像頭,就可以通過(guò)Client端瀏覽器進(jìn)行遠(yuǎn)程監(jiān)控。更有意義的是通過(guò)這種方式,還能實(shí)現(xiàn)遠(yuǎn)程控制。比如,通過(guò)Client端瀏覽器的按鈕,可以實(shí)現(xiàn)IO控制,串口控制等。利用這種跨平臺(tái)的方法,我們還可以把EVC做的工作,做成COM組件,那么像VB、C#、LaberView等就可以實(shí)現(xiàn)直接調(diào)用,增加了團(tuán)隊(duì)合作的效率。
通過(guò)ASP使用FileSystemObject對(duì)象可以對(duì)服務(wù)器中的文件進(jìn)行遠(yuǎn)程操作,然而,WinCE WebServer沒(méi)有支持FileSystemObject對(duì)象,本文詳細(xì)介紹了通過(guò)編寫(xiě)COM組件,完成了FileSystemObject的部分功能,這樣就實(shí)現(xiàn)了對(duì)嵌入式Web服務(wù)器的遠(yuǎn)程文件操作。通過(guò)對(duì)英創(chuàng)嵌入式主板基本信息的設(shè)置,你可以了解COM組件的創(chuàng)建、注冊(cè)、調(diào)用等技術(shù),使你對(duì)COM組件技術(shù)有一定的認(rèn)識(shí)。以下是操作的全過(guò)程。
1、建立COM組件
1、新建EVC工程,選擇WCE ATL COM AppWizard,工程名字為Scripting。
2、選擇支持MFC。
3、通過(guò)ATL向?qū)砑咏涌?Insert-》New ATL Objcet…,在該對(duì)話框中選擇Simple Object項(xiàng)添加一個(gè)COM對(duì)象,點(diǎn)擊Next按鈕來(lái)設(shè)置對(duì)象名和屬性。
對(duì)象名Names選項(xiàng)卡中主要包括兩類(lèi)輸入信息:C++信息和COM信息。在這里,為了保持和ASP中FileSystemObject對(duì)象名字一致,我們輸入名字FileSystemObject,其它信息會(huì)自動(dòng)生成。
在Attributes選項(xiàng)卡中,我們要設(shè)置COM對(duì)象的底層特征。由于在CE中,目前只支持Free模型,所以,必須選中這一項(xiàng)。其它選項(xiàng)意義請(qǐng)參考相應(yīng)的書(shū)籍。
4、為FileSystemObject對(duì)象添加接口方法。選中IFileSystemObject接口,右擊,在彈出的快捷菜單中選擇Add Method…項(xiàng),為FileSystemObject對(duì)象添加接口方法。
5、為接口添加方法的對(duì)話框界面,只需在Method Name輸入框中輸入FileExists,在Parameters輸入框中輸入 [in]VARIANT v1 ,[out, retval] long * pVal,然后點(diǎn)擊OK按鈕,即可添加一個(gè)FileExists方法。這里,要注意參數(shù)的數(shù)據(jù)類(lèi)型,參數(shù)的數(shù)據(jù)類(lèi)型可以參考http://www.vckbase.com/document/viewdoc/?id=1488。
6、添加了FileExists方法后,就要添加FileExists方法實(shí)現(xiàn)代碼了。在ClassView選項(xiàng)卡中。雙擊FileExists,就可以在代碼窗口添加實(shí)現(xiàn)代碼了。具體代碼見(jiàn)EVC工程源碼。
7、以同樣的方法,添加其它接口方法,完成FileSystemObject對(duì)象常用方法。詳見(jiàn)源碼。
2、注冊(cè)COM組件
COM組件編寫(xiě)并編譯為DLL文件,只有向系統(tǒng)注冊(cè)此組件后,其它語(yǔ)言才能夠調(diào)用。注冊(cè)的方法有兩種:
1、用telnet登陸開(kāi)發(fā)板,用regsvr32 Scripting.dll注冊(cè)
2、在程序中注冊(cè)。具體方法請(qǐng)參考Regdll EVC工程源碼
3、在ASP中調(diào)用COM組件
以VBScript為例,調(diào)用COM組件對(duì)象,完成對(duì)文件的操作。
1、以為界的VBScript語(yǔ)言,是在Server端運(yùn)行的語(yǔ)句,以作為開(kāi)始結(jié)束標(biāo)志的VBScript語(yǔ)言在Client端運(yùn)行。所以,按“恢復(fù)默認(rèn)值”按鈕后,調(diào)用的函數(shù)以為標(biāo)識(shí)。
2、如果要在Server端運(yùn)行的VBScript語(yǔ)句在客戶(hù)端輸出提示信息,要用如下的方法:
3、創(chuàng)建FSO對(duì)象,并讀寫(xiě)文件。
4、詳細(xì)網(wǎng)頁(yè)代碼請(qǐng)參考ASP源文件。
4、綜合測(cè)試
至此,我們完成了COM組件的編寫(xiě)和VBScript調(diào)用組件。我們提供了綜合例程。通過(guò)網(wǎng)頁(yè)配置Dbginfo.txt和Userinfo.txt兩個(gè)文件,具體步驟如下:
1、把regdll.exe 和scripting.dll拷貝到Nandflash的根目錄下
2、telnet登陸嵌入式主板,執(zhí)行regdll
3、把DbgInfo文件夾下的所有文件拷貝到 andflashwww目錄下
4、在瀏覽器中輸入嵌入式主板的ip地址/nand/config.asp就可以看到配置網(wǎng)頁(yè)。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6083瀏覽量
35092
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論