首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
C#使用COM组件接口操作精简ISA总线
英创信息技术有限公司
收藏本文     查看收藏

    英创ARM9工控主板的数据采集功能通常采用板上的GPIO实现数字输入输出、通过精简ISA总线扩展相应的外部控制电路(如控制继电器或AD或DA实现模拟数据的输入输出等)。由于英创ARM9嵌入式主板采用WinCE操作系统,很多客户都选择了界面友好、开发便利的C#语言(使用Visual Studio 2005.NET集成开发环境);以往用户在使用C#操作控制GPIO以及ISA总线的时候,是使用英创提供的动态链接库,采用传统的DllImport方法,首先在程序开始的地方来进行函数申明,然后才能在程序中进行调用;而这个动态链接库里面函数的EntryPoint由于系统的原因,往往是一个古怪的名字,而且英创每次在进行动态链接库的升级后,这个EntryPoint的名字就可能发生变化,这对用户程序的可维护性带来极大的不便。为了解决这个问题,英创公司现在提供了操作精简ISA总线的COM组件接口;用户只需要在目标平台上进行组件注册,然后在C#程序开发的时候,对该COM组件添加引用,即可在程序里面自由地通过对象操作来使用函数,而不必反复费心地进行函数申明的工作。下面我们就以EM9000嵌入式主板为实例,在C#使用COM组件接口操作精简ISA总线作一个说明:

一、在目标嵌入式主板上进行COM组件注册

      ISA COM组件的核心文件就是英创提供的EM9000_ISA_API_COM.dll动态链接库文件,首先需要将它在目标嵌入式工控主板上注册。用户可以使用Visual Studio Remote Tools提供的“远程文件查看器”连接目标嵌入式工控主板,并将英创提供的EM9000_ISA_API_COM.dll和REGSVR32.exe这两个文件下载到目标主板的Flash存储器上去(这里假设下载到EM9000的NandFlash)。然后在开发主机PC上使用Telnet连接目标工控主板(如图),进入放置刚才下载这两个文件的Flash存储器目录,运行:

      REGSVR32 EM9000_ISA_API_COM.dll

      即可完成COM组件注册。

二、在C#工程中添加COM组件引用

      接下来可以进入C# COM组件开发。首先将EM9000_ISA_API_COM.dll文件复制到用户的C#工程目录下,然后在Visual Studio 2005.NET集成开发环境中打开用户工程。为了使用ISA总线COM组件,必须为该工程添加外部引用;用户可在集成开发环境的右侧的“解决方案资源管理器”中找到“引用”,对其单击鼠标右键,然后单击“添加引用”(如图)。


 
      在弹出的“添加引用”对话框中,选择“浏览”选项卡,并在你的工程目录下找到你刚才复制过来的EM9000_ISA_API_COM.dll文件,选择它,并单击“确定”。

  这时,你已经完成了添加工程中的COM组件的引用工作,这时,你可以在集成开发环境的右侧的“解决方案资源管理器”中看到了一个名称为EM9000_ISA_API_COMLib的引用,同时,EM9000_ISA_API_COM.dll也加入到了你的工程中(如图)。

三、在应用程序开发中使用ISA COM组件

      首先,为了使应用程序能直接调用相关的类和函数,必须在程序的起始using语句中添加:

      using EM9000_ISA_API_COMLib;

      程序中对于ISA总线的操作完全围绕EM9000_ISA_COMClass和EM9000_ISA_EX_COM这两个类来进行的。用户可以根据自己对于ISA总线操作的需要来定义这两个类的对象实体,然后通过对对象里面的方法(函数)来进行所需要的操作。EM9000_ISA_COMClass所定义的对象主要包括一些ISA总线扩展(包括PWM、WatchDog等)的方法,EM9000_ISA_EX_COM所定义的对象主要包括一些将接口定义为GPIO的操作(如IO输入输出)方法。下面大致做一些讲解:

      (1) 定义类的对象

EM9000_ISA_COMClass ISA_Port = new EM9000_ISA_COMClass(); //定义一个
                                                                                                    //M9000_ISA_COMClass对象
EM9000_ISA_EX_COM GPIO_Port = new EM9000_ISA_EX_COM();   //定义一个
                                                                                                    //EM9000_ISA_EX_COM对象


      (2) 使用对象的方法函数

      英创提供了一个ISA COM组件的方法函数列表,里面详细罗列了各种方法函数的使用。由于该COM组件是用C++来编写的,所以,这个列表里面的函数形式是以C++的方式来标注的;由于C#和C++的相似性,所以大多数方法函数不需要在此提出特别注解,只需要针对几个带有C++指针参数的函数在此作一提示(举例中所使用的类对象已经在上文中定义):

      ·int COM_EM9000_PWMOUT( int ChIdx, float* pFreq, float* pDuty );

      这个操作PWM输出的函数,带有两个返回实际脉冲频率和占空比的指针变量,在C#中,我们一般按照如下示例的方式来使用:

      int ChIdx = 0;
      float pFreq = 60.0f;   //脉冲频率60KHz
      float pDuty = 70.0f;   //占空比70%
      int i1 = ISA_Port.COM_EM9000_PWMOUT(ChIdx, ref pFreq, ref pDuty);

      注意pFreq和pDuty由C++的指针变成了两个ref变量,它们将返回实际脉冲频率和占空比值。

      ·int COM_PIO_State( UINT16* pInValue );

      这个读取GPIO输入状态的函数,带有一个返回输入值的指针变量,我们是按照如下示例在进行使用:

      ushort gpio_in_state = 0x0000;  //这是一个返回IO输入状态的值,初始化可以任意设置一个值
      i1 = GPIO_Port.COM_PIO_State(out gpio_in_state);

      注意gpio_in_state由C++的指针变成了一个out变量,它将返回实际GPIO输入状态。

      用户还可以参考英创提供的C# ISA总线COM组件例程,进行实际的应用开发。


 

状 态: 离线

公司简介
产品目录

公司名称: 英创信息技术有限公司
联 系 人: 李林
电  话: 028-86180660
传  真: 028-85141028
地  址: 成都市高新区高朋大道5号博士创业园
邮  编: 610041
主  页:
 
该厂商相关技术文摘:
GPRS集抄单元整机方案
DOS工控主板的TCP/IP应用
低成本LCD的选型与使用
ARM9工控主板支持断点续传的FTP文件传送
嵌入式数据库SQLCE的开发与应用
基于精简ISA总线的CE设备驱动程序
工控主板EM9360的GPIO的各种使用方法
工控主板EM9000数字IO的增强扩展
英创工控主板同时驱动RS232和RS485的方法
ARM9工控板在远程监控中的应用
主板EM9161实现音频输出的方法
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved