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

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

3天内不再提示

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

英创信息技术 来源:英创信息技术 作者:英创信息技术 2019-11-14 09:37 次阅读

英创ARM9工控主板均提供了多个串口供客户进行通讯控制使用,包括标准的RS232和TTL电平的COM接口(经过简单的电平转换即可成为标准的RS232/RS485或者RS422)。由于英创ARM9嵌入式主板采用WinCE操作系统,很多客户都选择了界面友好、开发便利的C#语言(使用Visual Studio 2005.NET集成开发环境);在VS2005中,微软提供了一个标准的串口类SerialPort供客户使用,该串口类可以灵活方便地进行串口设置、收发等操作,英创也提供了基于该串口类的C#例程供客户参考。但是,微软所提供的串口类虽然方便灵活,但是没有提供RTS控制的功能,而客户在进行工业现场通讯的时候,往往是需要对RTS进行设置的。为了解决这个问题,英创公司现在提供了操作串口的COM组件接口;用户只需要在目标平台上进行组件注册,然后在C#程序开发的时候,对该COM组件添加引用,即可在程序里面自由地通过对象操作来使用函数。

注:英创提供的可以供C#开发使用的串口COM组件与eVC开发使用的串口COM组件在成员数据类型上有显著区别,不能互换使用。

下面我们就以EM9000嵌入式主板为实例,在C#使用COM组件接口进行串口操作作一个说明:

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

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

REGSVR32 ComSerial.dll

即可完成COM组件注册。

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

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

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

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

3、在应用程序开发中使用串口COM组件

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

using COMSERIALLib;

程序中对于串口的操作完全围绕CoSerialClass这个类来进行的。用户需要首先定义这个类的对象实体,然后通过对对象里面的方法(函数)来进行所需要的操作。下面大致做一些讲解:

(1)定义类的对象

CoSerialClass COM_myserialPort = new CoSerialClass(); // 定义一个CoSerialClass串口类对象COM_myserialPort

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

该串口类的对象实体主要包括四个函数和两个事件,下面我们着重就OpenPort、ClosePort、WritePort、ReadPort四个函数和OnRecieve事件进行举例说明(举例中所使用的类对象已经在上文中定义):

int OpenPort(uint portNo, uint baud, sbyte parity, uint dataBits, uint stopBits, uint rtsCtr);

打开串口函数,使用示例如下:

uint portNO = 1; // 串口1

uint myrate = 9600; // 波特率9600

COM_myserialPort.OpenPort(portNO, myrate, Convert.ToSByte(‘n’), 8, 1, RTS_CONTROL_TOGGLE);

// 参数依序:串口号、波特率、校验位(无)、数据位(8)、停止位(1)、RTS

注意RTS常数应该在程序开始就定义,我们一般做如下定义:

const uint RTS_CONTROL_DISABLE = 0x00;

const uint RTS_CONTROL_ENABLE = 0x01;

const uint RTS_CONTROL_HANDSHAKE = 0x02;

const uint RTS_CONTROL_TOGGLE = 0x03;

OnRecieve事件

我们可以利用COM组件提供的OnRecieve事件(当串口有数据收到的时候发生)来启动一个事件函数来读取串口数据。OnRecieve事件可以放在程序定义串口对象实例之后程序刚开始的某个地方:

COM_myserialPort.OnReceive + = new _ICoserialEvents_OnReceiveEventHandler (COM_myserialPort_OnReceive);

// 当串口有数据收到时,启动COM_myserialPort_OnReceive事件函数

byte ReadPort()

读取串口数据函数,往往在OnReceive事件函数里使用,注意该函数是一次读取一个byte,所以一次需要将数据读取完毕(结束标志为0xff)。使用示例如下:

private void COM_myserialPort_OnReceive() // 串口有数据收到

{

byte recieved_byte = 0;

byte[] RCV_bytes = new byte[1024];

int i=0;

for (i=0;i《1024;i++ )

{

recieved_byte = COM_myserialPort.ReadPort();

if (recieved_byte == 0xff) break;

RCV_bytes[i] = recieved_byte;

}

// 此处可对收到的数据进行进一步处理

}

int WritePort(int elems, byte[] buf);

发送串口数据函数,使用示例如下:

byte[] sendbytemessage = Encoding.Default.GetBytes(textBox1.Text); // 将某文本框数据转为byte数组

COM_myserialPort.WritePort(sendbytemessage.Length, sendbytemessage); // 发送

void ClosePort();

关闭串口函数,直接使用即可关闭串口。

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

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

    关注

    7

    文章

    6085

    浏览量

    35248
收藏 人收藏

    评论

    相关推荐

    信息技术ARM9工控板串口设备的COM组件应用

    公司的ARM9工控主板产品均预装了Windows CE5.0操作系统,支持包括EVC、C#、VB、LabView等多种开发工具。
    的头像 发表于 11-05 10:07 1739次阅读

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

    ARM9工控主板的数据采集功能通常采用板上的GPIO实现数字输入输出、通过精简ISA总线扩展相应的外部控制电路(如控制继电器或AD或DA实现模拟数据的输入输出等)。
    的头像 发表于 11-12 10:24 1578次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><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>精简ISA总线浅谈

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

     ARM9工控主板的一个很大的特色就是提供了标准的CAN总线通讯接口,客户可以方便地在工业现场、汽车、船舶等等领域进行CAN通信应用。由于
    的头像 发表于 11-12 10:34 2425次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><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>语言领域应用

    信息技术工控主板EM9360的GPIO介绍

    公司的ARM9工控主板产品 EM9360是一款预装WinCE操作系统,以多种通讯接口、支持各种扩展为其技术特色。EM9360的板载的3路
    的头像 发表于 11-14 09:34 2379次阅读

    信息技术WinCE平台C#例程要点介绍

    嵌入式ARM9主板采用微软的Windows CE操作系统,可以采用eVC或者VS2005进行应用开发。C#作为一种简单易用的编程语言工具
    的头像 发表于 11-15 10:01 2105次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>WinCE平台<b class='flag-5'>C#</b>例程要点<b class='flag-5'>介绍</b>

    信息技术C#使用VS2005提供的串口进行串口操作介绍

     ARM9工控主板均提供了多个串口供客户进行通讯控制使用,包括标准的RS232和TTL电平的COM
    的头像 发表于 11-18 09:53 1308次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b><b class='flag-5'>C#</b>使用VS2005提供的<b class='flag-5'>串口</b>类<b class='flag-5'>进行</b><b class='flag-5'>串口</b><b class='flag-5'>操作</b><b class='flag-5'>介绍</b>

    信息技术C#启动和关闭外部进程的方法介绍

    许多用户在程序开发过程中需要使用C#启动一个外部程序(进程),在使用完毕该外部程序后,又希望能将其关闭。我们特在此对C#启动和关闭外部进程的方法进行一个简单的介绍
    的头像 发表于 01-14 14:36 1219次阅读

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

    ARM9系列嵌入式主板,均预装了WinCE 5.0、WinCE 6.0操作系统,用户可使用标准的C/C++或
    的头像 发表于 01-15 11:29 1281次阅读

    信息技术嵌入式系统通讯线程的C#编程方法

    在使用ARM9系列嵌入式主板的COM口,CAN口,网口时,一般会使用到timer或线程来实现数据的接收。使用timer控件较为方便,通过InterVal值来设定调用间隔,但是灵活性不如线程。并且
    的头像 发表于 01-15 11:25 1277次阅读

    信息技术EM9280串口技术特色及应用介绍

    EM9280是公司即将推出的新型工控主板产品。EM9280作为第一款板载8个独立的异步串口(UART),而有别于公司的其他主板产品。8个串口的配置,可满足在绝大多数应用场合的需求,
    的头像 发表于 01-15 14:41 1312次阅读

    信息技术嵌入式Linux主板Qt串口应用程序简介

    :/dev/ttyS1,设置串口参数,创建一个单独的线程来对数据进行收发,使用read函数读取数据,write函数发送数据。并且公司将其封装成一个serial类,可以使用seria
    的头像 发表于 01-17 09:41 1787次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>嵌入式Linux主板Qt<b class='flag-5'>串口</b>应用程序简介

    信息技术C/C#开发基于WEC7的CAN通讯介绍

    EM335x工控主板,使用的Cortex-A8及WEC7操作系统。本文以EM335x工控主板光盘例程为例,简单介绍一下C
    的头像 发表于 01-17 10:01 2673次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b><b class='flag-5'>C</b>/<b class='flag-5'>C#</b>开发基于WEC7的CAN通讯<b class='flag-5'>介绍</b>

    信息技术JAVA操作主板SPI接口简介

    资源,提供了Java硬件支持包,主要支持的工控接口有:以太网、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要
    的头像 发表于 02-06 11:09 1888次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>JAVA<b class='flag-5'>操作</b><b class='flag-5'>英</b><b class='flag-5'>创</b>主板SPI<b class='flag-5'>接口</b>简介

    信息技术JAVA操作主板I2C接口简介

    资源,提供了Java硬件支持包,主要支持的工控接口有:以太网、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要
    的头像 发表于 02-06 11:06 1660次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>JAVA<b class='flag-5'>操作</b><b class='flag-5'>英</b><b class='flag-5'>创</b>主板I2<b class='flag-5'>C</b><b class='flag-5'>接口</b>简介

    信息技术主板在Windows CE环境中的串口配置

    异步串口UART是工业领域使用最广泛,技术最为成熟的接口。在Windows CE环境的主板中,串口
    的头像 发表于 02-06 11:06 1165次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>主板在Windows CE环境中的<b class='flag-5'>串口</b>配置