1 .COM组件介绍
COM(Component Object Model),即组件对象模型,它是微软公司开发的一种新的软 件开发技术,Microsoft 的许多技术,如 ActiveX、DirectX、以及 OLE 等都是基于 COM 而建立起来的。COM 标准包括规范和实现两大部分,规范部分定义了组件和组件之间通信的 机制,这些规范不依赖于任何特定的语言和操作系统,只要按照该规范,任何语言都可以使 用; COM 标准的实现部分是 COM 库,COM 库为 COM 规范的具体实现提供了一些核心服务。
有了这种跨语言设计的方法,我们就可以通过动态网页技术,也就是嵌入式主板提供的 WebServer 功能,利用 VBScript 或者 JavaScript 使用 COM 提供的接口方法,完成远程监 控和远程控制以及远程更改等功能。利用这种跨平台的方法,我们还可以把应用程序做的工作,做成 COM 组件,那么其它语言都可以实现直接调用,即可增加了团队合作的效率,有可以满足一些特定的需求。
2. 运用VS2005创建COM组件
我们使用ATL创建一个标准的COM组件。该组件提供一个ICOM_NetParms接口,并通过ICOM_NetParms接口的ChangeNetParms()方法更改系统的网络参数。下面给出生成COM组件的全部过程。
(1) 使用VS2005|VC++新建一个智能设备|ATL智能设备项目SetNetParms,如下图3-1所示。单击“确定”后,进入如图3-2所示的平台向导,选择sdk9263(ARMV4I)。下一步进入3-3所示的界面中,服务器类型选择“动态链接库(DLL)”,附加选项选择“支持MFC”复选。
图3-1新建ATL工程
图3-2 平台选择向导
图3-3 应用程序设置向导
(2)添加COM对象
选择VS2005主菜单“项目|添加类”,选择添加“ATL简单对象”,如图3-4所示。
下面进入ATL简单对象向导,如图3-5所示,类名为COM_NetParms。然后再切换到如图3-6所示的页面中选择线程模型为“自由”,接口为“双重”,聚合为“是”。
图3-4 添加ATL简单对象
图3-5 “ATL简单对象向导”界面
图3-6 ATL Object Wizard属性对话框
(3)为对象添加接口方法
选择vs2005主菜单“视图|类视图”,选中ICOM_NetParms,单击鼠标右键,在弹出的快捷菜单中选择“添加方法(M)”项,即可为ICOM_NetParms对象添加接口方法了。
图3-7是为接口添加方法的对话框界面,输入方法名ChangeNetParms和参数,然后单击“完成”按钮,就添加了一个ChangeNetParms(BSTR ip, BSTR mask, BSTR gateway)方法了,三个参数的类型都为BSTR型。
图3-7 为接口添加方法的对话框界面
下面就要来具体实现ChangeNetParms方法了。点击“解决方案”,打开源文件下的COM_NetParms.cpp文件,即可为ChangeNetParms方法添加代码了。具体实现代码请参考工程文件。
3 .ASP调用COM组件
(1)注册COM组件
ASP调用COM组件前需要在目标板上注册COM组件,方法ADOCE注册方法。
(2)ASP中调用COM组件中的方法
在asp中调用COM组件的方法很简单,首先创建一个实体,通过实体调用方法就行了。Vbscript的实现代码如下:
set NetObj=CreateObject("SetNetParms.COM_NetParms") '创建对象
NetObj.ChangeNetParms a,b,c
在这里值得注意的是参数类型要匹配,下面介绍2中常用的数据类型转换方法。
BSTR转换为LPTSTR:
CComVariant v_1( ipadds );
v_1.ChangeType( VT_BSTR ); // 转换为字符串
CString csip(v_1.bstrVal);
LPTSTR pip =(LPTSTR)(LPCTSTR)csip;
CString转换为VARIANT:
CString str;
VARIANT* NetParms;
NetParms->vt = VT_BSTR;
NetParms->bstrVal = str.AllocSysString(); //cstring to bstr