? ARM9工控板在远程监控中的应用之一——利用COM组件远程更改设备配置文件--技术天地

ARM9工控板在遠程監控中的應用之一——利用COM組件遠程更改設備配置文件

 2009/6/2    

        COM(Component Object Model),即組件對象模型,是微軟公司開發的一種新的軟件開發技術,Microsoft的許多技術,如ActiveX、DirectX、以及OLE等都是基于COM而建立起來的。COM標準包括規范和實現兩大部分,規范部分定義了組件和組件之間通信的機制,這些規范不依賴于任何特定的語言和操作系統,只要按照該規范,任何語言都可以使用; COM標準的實現部分是COM庫,COM庫為COM規范的具體實現提供了一些核心服務。

 

        在COM模型中,對象本身對于客戶來說是不可見的,客戶請求服務時,只能通過接口進行。每一個接口都由一個128位的全局唯一標識符(GUID,Globally Unique Identifier)來標識。客戶通過GUID獲得接口的指針,再通過接口指針客戶就可以調用其相應的成員函數。對象可以支持多個接口,因此對組件對象的升級可通過增加接口的辦法實現,這樣得到的新接口可以不影響老接口的使用。

 

        COM既提出了組件之間進行交互的規范,也提供了實現交互的環境, 因為組件對象之間交互的規范不依賴于任何特定的語言,所以COM也可以是不同語言協作開發的一種標準。

 

        有了這種跨語言設計的方法,我們就可以通過動態網頁技術,也就是嵌入式主板提供的WebServer功能,利用VBScript或者JavaScript使用COM提供的接口方法,完成遠程監控和遠程控制功能。這樣,在英創嵌入式主板上接上攝像頭,就可以通過Client端瀏覽器進行遠程監控。更有意義的是通過這種方式,還能實現遠程控制。比如,通過Client端瀏覽器的按鈕,可以實現IO控制,串口控制等。利用這種跨平臺的方法,我們還可以把EVC做的工作,做成COM組件,那么像VB、C#、LaberView等就可以實現直接調用,增加了團隊合作的效率。

 

        通過ASP使用FileSystemObject對象可以對服務器中的文件進行遠程操作,然而,WinCE WebServer沒有支持FileSystemObject對象,本文詳細介紹了通過編寫COM組件,完成了FileSystemObject的部分功能,這樣就實現了對嵌入式Web服務器的遠程文件操作。通過對英創嵌入式主板基本信息的設置,你可以了解COM組件的創建、注冊、調用等技術,使你對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信息。在這里,為了保持和ASP中FileSystemObject對象名字一致,我們輸入名字FileSystemObject,其它信息會自動生成。

 

        在Attributes選項卡中,我們要設置COM對象的底層特征。由于在CE中,目前只支持Free模型,所以,必須選中這一項。其它選項意義請參考相應的書籍。

 

        4、為FileSystemObject對象添加接口方法。選中IFileSystemObject接口,右擊,在彈出的快捷菜單中選擇Add Method…項,為FileSystemObject對象添加接口方法。

 

        5、為接口添加方法的對話框界面,只需在Method Name輸入框中輸入FileExists,在Parameters輸入框中輸入 [in]VARIANT v1 ,[out, retval] long * pVal,然后點擊OK按鈕,即可添加一個FileExists方法。這里,要注意參數的數據類型,參數的數據類型可以參考http://www.vckbase.com/document/viewdoc/?id=1488。

 

        6、添加了FileExists方法后,就要添加FileExists方法實現代碼了。在ClassView選項卡中。雙擊FileExists,就可以在代碼窗口添加實現代碼了。具體代碼見EVC工程源碼。

 

        7、以同樣的方法,添加其它接口方法,完成FileSystemObject對象常用方法。詳見源碼。

 

2、注冊COM組件

        COM組件編寫并編譯為DLL文件,只有向系統注冊此組件后,其它語言才能夠調用。注冊的方法有兩種:

        1、用telnet登陸開發板,用regsvr32 Scripting.dll注冊

        2、在程序中注冊。具體方法請參考Regdll EVC工程源碼

 

3、在ASP中調用COM組件

        以VBScript為例,調用COM組件對象,完成對文件的操作。

 

        1、以為界的VBScript語言,是在Server端運行的語句,以作為開始結束標志的VBScript語言在Client端運行。所以,按“恢復默認值”按鈕后,調用的函數以為標識。

 

        2、如果要在Server端運行的VBScript語句在客戶端輸出提示信息,要用如下的方法:

 

        3、創建FSO對象,并讀寫文件。

 

        4、詳細網頁代碼請參考ASP源文件。

 

4、綜合測試

        至此,我們完成了COM組件的編寫和VBScript調用組件。我們提供了綜合例程。通過網頁配置Dbginfo.txt和Userinfo.txt兩個文件,具體步驟如下:

        1、把regdll.exe 和scripting.dll拷貝到Nandflash的根目錄下

        2、telnet登陸嵌入式主板,執行regdll

        3、把DbgInfo文件夾下的所有文件拷貝到 \nandflash\www目錄下

        4、在瀏覽器中輸入嵌入式主板的ip地址/nand/config.asp就可以看到配置網頁。