0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术C#使用COM组件接口操作精简ISA总线浅谈

英创信息技术 来源:英创信息技术 作者:英创信息技术 2019-11-12 10:24 次阅读

英创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总线作一个说明:

1、在目标嵌入式主板上进行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组件注册。

2、在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也加入到了你的工程中(如图)。

3、在应用程序开发中使用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(); // 定义一个EM9000_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组件例程,进行实际的应用开发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6063

    浏览量

    34602
收藏 人收藏

    评论

    相关推荐

    支持Linux高级客户自行移植内核

    上市)  该项服务具体说明和实施流程参见:支持客户进行Linux移植  需要该服务的客户需与签订技术保密协议,并承诺严格履行协议:
    发表于 01-18 13:52

    工控主板产品选型指南

      成都信息技术有限公司是一家专注于嵌入式工控主板研发、销售与服务的高科技公司,在嵌入式领域已有超16年的从业经历。公司的主板产品在
    发表于 02-28 11:28

    JAVA操作主板I2C接口简介

    访问硬件资源,提供了Java硬件支持包,主要支持的工控接口有:以太网、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介绍使用Java语言调用
    发表于 10-20 13:20

    WinCE精简ISA总线和外部中断的相关接口函数

    WinCE下精简ISA总线硬件中断的使用方法
    发表于 09-27 13:22

    精简ISA扩展总线接口读写操作

    在英创的精简ISA总线中,设置了2条独特的片选控制信号CS0#和CS1#,这样就省去了大量的高位地址总线
    的头像 发表于 10-17 11:26 4650次阅读
    <b class='flag-5'>精简</b><b class='flag-5'>ISA</b>扩展<b class='flag-5'>总线接口</b>读写<b class='flag-5'>操作</b>

    英创信息技术ISA总线的CE设备驱动程序介绍

     英创公司推出的系列ARM9工控主板是面向工业智能设备的高性价比ARM9+WinCE平台,主板上不仅配置了常规的标准通讯接口,如以太、串口、USB、CAN通讯接口等,最有特色的还配置了精简IS
    的头像 发表于 11-12 10:17 1349次阅读

    英创信息技术CAN接口COM组件C#语言领域应用

     英创ARM9工控主板的一个很大的特色就是提供了标准的CAN总线通讯接口,客户可以方便地在工业现场、汽车、船舶等等领域进行CAN通信应用。由于英创ARM9嵌入式主板采用WinCE操作系统
    的头像 发表于 11-12 10:34 2083次阅读
    英创<b class='flag-5'>信息技术</b>CAN<b class='flag-5'>接口</b><b class='flag-5'>COM</b><b class='flag-5'>组件</b>在<b class='flag-5'>C#</b>语言领域应用

    英创信息技术C#使用COM组件接口进行串口操作介绍

    通讯的时候,往往是需要对RTS进行设置的。为了解决这个问题,英创公司现在提供了操作串口的COM组件接口;用户只需要在目标平台上进行组件注册,
    的头像 发表于 11-14 09:37 1908次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>C#</b>使用<b class='flag-5'>COM</b><b class='flag-5'>组件</b><b class='flag-5'>接口</b>进行串口<b class='flag-5'>操作</b>介绍

    英创信息技术EM9170工控主板ISA总线数据介绍

    EM9170工控主板的精简ISA总线包括8位数据总线、5位地址总线、片选控制线、读写控制线以及中断请求线。所提供的评估开发底板将这些信号线制
    的头像 发表于 01-14 14:58 1100次阅读

    英创信息技术嵌入式系统设备驱动接口C#编程

    的驱动程序,用户只需直接调用相应的接口函数即可实现。 在使用C#进行应用程序开发时,由于C#无法使用C++的静态库函数,对于一些流式驱动设备,比如ISA,GPIO,WDT,CAN,SP
    的头像 发表于 01-15 11:29 1107次阅读

    英创信息技术EM335x精简ISA扩展总线地址总线介绍

    英创公司新近推出的工控主板EM335x支持精简ISA扩展总线。由于主板管脚的限制,ISA总线采用了地址数据复用的方式,在每个
    的头像 发表于 01-17 10:20 1130次阅读
    英创<b class='flag-5'>信息技术</b>EM335x<b class='flag-5'>精简</b><b class='flag-5'>ISA</b>扩展<b class='flag-5'>总线</b>地址<b class='flag-5'>总线</b>介绍

    英创信息技术精简ISA总线Linux编程–Part1

    精简ISA总线接口是一种8-bit宽度的双向并行扩展总线,其特点是地址数据分时复用8-bit总线
    的头像 发表于 02-07 11:19 950次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>Linux编程–Part1

    英创信息技术精简ISA总线Linux编程 – Part2简介

    精简ISA总线接口是一种8-bit宽度的双向并行扩展总线,其特点是地址数据分时复用8位总线,加上
    的头像 发表于 02-11 16:50 1073次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>Linux编程 – Part2简介

    英创信息技术精简ISA总线Linux编程 – Part3简介

    精简ISA总线接口是一种8-bit宽度的双向并行扩展总线,其特点是地址数据分时复用8位总线,加上
    的头像 发表于 02-11 16:48 1120次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>Linux编程 – Part3简介

    英创信息技术精简ISA总线WinCE编程简介

    ISA总线简介 英创精简ISA总线接口是一种8-bit宽度的双向并行扩展
    的头像 发表于 02-11 16:55 1046次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>精简</b><b class='flag-5'>ISA</b><b class='flag-5'>总线</b>WinCE编程简介