导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→ARM9工控板在远程监控中的应用之二---利用COM组件远程

* 71344: ARM9工控板在远程监控中的应用之二---利用COM组件远程设置网络参数[原创]

   emtronix 
emtronix发表的帖子 

 ARM9工控板在远程监控中的应用之二---利用COM组件远程设置网络参数[原创]
文章来源: 
   为了满足客户多网络的需求,英创公司推出了有3个网络接口的嵌入式主板——EM9360。 由于EM9360没有标准的WinCE界面,给更改网络的ip地址带来困难。本演示示例是通过英创嵌入式主板的WebServer功能来完成ip地址的配置。 其实现的原理是通过ASP网页提交给服务器需要更改的ip地址内容,在服务器端,通过调用COM组件,完成ip地址的配置。通过本示例,你可以加深对COM组件的理解。

      EM9360可以通过一下三种方法来完成ip地址的配置:

      第一:通过更改WinCE的注册表

      对注册表的访问,可以更改ip地址,但是,需要重新启动开发板才能使设置的ip地址生效。注册表的修改可以利用远程调试工具中的Remote Registry Editor来进行,这部分的详细介绍可以参见英创公司网站“技术天地”栏目中英创9260系列嵌入式主板调试使用方法简介。该方法一般是在产品开发时,技术开发人员使用。

      第二:参考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的源码。

      第三: 利用COM组件通过ASP动态网页设置

      由于NetIP_API静态库主要是面向C开发环境下使用,对于采用其它开发工具,如C#、Labview等就不能直接使用,因而需要一种更为通用而简便的方法来对网络参数进行配置。这里采用的方法是将NetIP_API静态库封装成一个标准的COM组件,来支持各种开发平台的调用,本文主要介绍的是ASP动态网页对COM组件的调用。这种方法只需通过IE浏览器访问即可实现对网络参数的设置,因而特别适合用于工程现场的设备配置。本文的以下部分主要介绍了COM组件的生产以及调用方法。

建立COM组件

      1、新建EVC工程,选择WCE ATL COM AppWizard,工程名字为Scripting。


图1 新建工程对话框


      2、选择支持MFC

图2 新建工程向导

      3、通过ATL向导添加接口 Insert->  New ATL Objcet…如图3所示 ,在该对话框中选择Simple Object项添加一个COM对象,点击Next按钮来设置对象名和属性,如图4所示

图3 ATL Object 向导

图4 ATL Object 向导属性Name选项卡

      对象名Names选项卡中主要包括两类输入信息:C++信息和COM信息。在这里,我们输入名字COM_NetIP_API,其它信息会自动生成。

图5 ATL Object 向导属性Attributes选项卡

      在Attributes选项卡中,我们要设置COM对象的底层特征。由于在CE中,目前只支持Free模型,所以,必须选中这一项,如图5所示。其它选项意义请参考相应的书籍。

      4、为COM_NetIP_API对象添加接口方法。如图6所示,选中ICOM_NetIP_API接口,右击,在弹出的快捷菜单中选择Add Method…项,为COM_NetIP_API对象添加接口方法。

图6 增加接口方法

      5、如图7所示,为接口添加方法的对话框界面,只需在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

图7 增加接口方法函数对话框

      6、添加了ChangParms方法后,就要添ChangParms方法实现代码了。在ClassView选项卡中,如图8所示,双击ChangParms,就可以在代码窗口添加实现代码了。具体代码见EVC工程源码。

图8 添加接口函数实现函数源码

      7、把NETIP_API.lib和NETIP_API.h拷贝到当前工程目录下,在Projecting->  Setting
->  link标签,增加netip_api.lib,在ChangIP.cpp包含头文件NETIP_API.h。

      8、以同样的方法,添加ReadIP接口方法。详见源码。

注册COM组件

      COM组件编写并编译为DLL文件,只有向系统注册此组件后,其它语言才能够调用。注册的方法有两种。

      1、用telnet登陆开发板,用regsvr32  SetIPParms.dll注册
      2、在程序中注册。具体方法请参考例程一Regdll 工程源码

在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源文件

综合测试

      至此,我们完成了COM组件的编写和VBScript调用组件。我们提供了综合例程,如图9所示,通过网页配置网络参数,具体步骤如下

      1、把regsvr32 .exe 和SetIPParms.dll拷贝到Nandflash的根目录下
      2、telnet登陆嵌入式主板,执行regsvr32  SetIPParms.dll注册
      3、把ASP文件夹下的所有文件拷贝到 \nandflash\www目录下
      4、在浏览器中输入 嵌入式主板的ip地址/nand/SetIPParms.asp就可以看到配置网页。如图9所示


[]




发表时间:2009年6月17日11:41:04

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:工控远程智能终端的双网络选路方案[原创]文章来源:http://www.emtronix.com/a
[下一篇帖子]:供应高品质320240液晶显示模块[upload=bmp]uploadfile/2009-6-17_