首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C#中使用SerialPort端口对象的dataReceived事件?

在C#中,使用SerialPort端口对象的dataReceived事件可以通过以下步骤实现:

  1. 首先,需要引入System.IO.Ports命名空间,以便使用SerialPort类。
代码语言:csharp
复制
using System.IO.Ports;
  1. 创建一个SerialPort对象,并设置相关属性,例如串口名称、波特率等。
代码语言:csharp
复制
SerialPort serialPort = new SerialPort("COM1", 9600);
  1. 为SerialPort对象的dataReceived事件添加事件处理程序。
代码语言:csharp
复制
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  1. 定义事件处理程序,处理接收到的数据。
代码语言:csharp
复制
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    string indata = sp.ReadExisting();
    Console.WriteLine("接收到的数据: " + indata);
}
  1. 打开串口以开始接收数据。
代码语言:csharp
复制
serialPort.Open();

完整的代码示例如下:

代码语言:csharp
复制
using System;
using System.IO.Ports;

class SerialPortExample
{
    static void Main()
    {
        SerialPort serialPort = new SerialPort("COM1", 9600);
        serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
        serialPort.Open();
        Console.WriteLine("按任意键退出...");
        Console.ReadKey();
        serialPort.Close();
    }

    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("接收到的数据: " + indata);
    }
}

这样,当串口接收到数据时,dataReceived事件就会被触发,并调用DataReceivedHandler方法处理接收到的数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

串口助手(简洁版)上位机软件零基础教程( C# + visual studio2017 )(二)

以串口助手(简洁版)为例,所有程序都是以 “事件” 为核心来进行,对应事件”发生了,那软件就去执行 我们自己编写 对应事件 程序。...我们到上一章编好可视化窗体,去双击窗体空白处,就跳转到对应事件发生程序中去了。...(), 来更新一下 “端口” 组合框下拉菜单串口信息。...//目的是在软件使用过程,时刻刷新串口信息 } 总结: 间隔500ms产生一次定时器中断事件,在中断事件调用用户自定义更新串口号函数,来实现串口号动态更新。...需要根据单选按钮控件按下状态来决定。 4.数值发送方式写有点复杂,目的是要从字符串,两两抠出16进制数据,0x46,但同时又要考虑空格作为分隔符存在。

3.3K10
  • “Unity开发也能跟硬件联动”--快来看看吧(串口通信)

    一、C#串口介绍以及简单串口通信程序设计实现 简单串口通信工具,基于C#应用程序WinFrom实现 串口介绍 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式扩展接口...(针脚2 接受数据(RXD) 和3 发出数据(TXD)) C#代码实现:采用SerialPort 1.实例化一个SerialPort private SerialPort ComDevice...+= new SerialDataReceivedEventHandler(Com_DataReceived);//绑定事件 } 3.打开串口button事件 /// ...,一会说怎么看端口,第二个参数是波特率,这个是设备自身参数 SerialPort sp = new SerialPort("COM3", 9600);//声明一个串口类 //...这个是完整参数,名别是 端口名、波特率、奇偶效验、数据位、流控制参数 //SerialPort sp1 = new SerialPort("COM3", 9600, Parity.None,

    1.8K20

    【Unity3D】Unity3d 与串口通信程序开发,软件硬件结合

    一、c#实现串口通信程序开发 C#串口介绍以及简单串口通信程序设计实现 简单串口通信工具,基于C#应用程序WinFrom实现 串口介绍 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM...SerialPort private SerialPort ComDevice = new SerialPort(); 2.初始化参数绑定接收数据事件 public void init() {...+= new SerialDataReceivedEventHandler(Com_DataReceived);//绑定事件 } 3.打开串口button事件 /// ...,一会说怎么看端口,第二个参数是波特率,这个是设备自身参数 SerialPort sp = new SerialPort("COM3", 9600);//声明一个串口类 //...这个是完整参数,名别是 端口名、波特率、奇偶效验、数据位、流控制参数 //SerialPort sp1 = new SerialPort("COM3", 9600, Parity.None,

    2.5K31

    C#上位机开发(三)—— 构建SerialAssistant雏形

    添加了串口组件后,我们就可以通过它来获取电脑当前端口,并添加到可选列表,代码如下: //获取电脑当前可用串口并添加到选项列表 comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames...,会发生一些我们编程时无法处理事件,比如硬件串口没有连接,串口打开过程硬件突然断开,这些被称之为异常,针对这些异常,C#也有try..catch处理机制,在try中放置可能产生异常代码,比如打开串口...//捕获到异常,创建一个新对象,之前不可以再用 serialPort1 = new System.IO.Ports.SerialPort...Receive事件,相当于单片机串口接收中断,然后在中断内部对缓冲区数据进行读取,如图,输入完成后回车,就会跳转到响应代码部分: ?...//串口接收事件处理 private void SerialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs

    2.7K41

    C# 串口通讯SerialPort

    这个只是对SerialPort进行简单使用,对串口设备进行简单数据发送和数据接收,调用几个方法就可以完成串口通讯,但是没有设备去实验还是感觉不好。...友善串口调试助手 用户可在串口设置中选择端口,选择好端口后点击开始按钮,便可以对串口进行调试。这里我对生成两个接口都进行开始调试,以验证实验环境是否搭建成功。...这里可以看到COM2发送消息COM3可接收,COM3发送消息COM2也可以接收到,说明实验环境搭建成功 SerialPort 使用串口最重要设置就是串口名称PortName和串口波特率BaudRate...和绑定串口接收到数据事件DataReceived。...我使用一个线程定时向COM2口发送数据,成功结果应该是COM3串口接收到数据,也就是监控COM3串口助手收到数据。程序也绑定好接收到数据后事件。下来运行程序。

    10510

    C#编写单片机上位机软件-串口通讯(BMS汽车动力电池管理系统)

    485协议上位机软件做了有一段时间, 之前用python+pyQT5做,主线程特别特别容易闪退,数据重叠等问题,走了很多弯路; 后来用VSC#做,只能说上手很快,多线程不卡顿,调试效果也不错,而且关键是非常非常简单易读...,只希望大家不要像我一样,走这么多弯路 – – 正在持续优化,欢迎关注点赞三连~ 华丽分割线——————————————————————————————– 废话不多说直接看效果图—- 其中串口数据接收读取是最难部分....DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);//必须手动添加事件处理程序...} private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//串口数据接收事件...,因为串口事件触发时有可能收到不止一个字节 serialPort1.Read(data, 0, data.Length);//读取指定长度到serialPort1

    2.2K20

    C#实例:串口通讯

    对于两个进行通信端口,这些参数必须匹配。   听大佬说几个关于串口通讯术语,啥?啥,这是啥?   ...如果想要在C#玩转串口通讯或者模拟串口,你必须先搞个硬件,当然我们是在模拟,那你就弄个模拟工具呗,这个我给大家准备好了,自己去下载吧 链接:https://pan.baidu.com/s/1TcdgIWMY0i9BiKVGDxnAzQ...sp1.ReadTimeout = 1000; sp1.Close(); } 在窗体加载,我们尝试获取了本机所有串口,通过 SerialPort.GetPortNames...() 方法,会返回一个字符串数组,如果没有就返回null,在其中,我们还设置了波特率,通过SerialPort类下 DataReceived 方法,来监听我们数据回传,还启用了DTR\DTS请求方式...,打开串口这个还是比较费劲,因为要设置各种参数,也就是我刚才说那几个概念,如果不对,你让其他端口来访问就找不到了。

    3.3K21

    移动物联网 之 家电节能 (2)

    因此,我们使用了基于Zigbee和RF射频家电节能整体解决方案。系统采用分布式网络,底层电量采集使用RF射频通信,上层使用Zigbee进行组网。...(ReceivedDataProcess);                   m_serialPort.DataReceived += new SerialDataReceivedEventHandler...(this.m_serialPort_DataReceived); try                 {                     m_serialPort.Open();...这个类库用法在于通过提供所有图表属性省缺值来保持使用简单。这个类库包含了基于要绘制数值范围内可选择适当度量范围和跨度代码。...关于如何使用ZedGraph,可以参考园子里peterzbBlog:C# WinForm开发系列 – ZedGraph。

    1.1K70

    【单片机入门】(三)应用层软件开发单片机学习之路-----UART串口通讯和c#交互

    编码 在下面的代码,我们开始了一个简单一个串口通讯,在代码第一行,是和c语言一样引入我们需要库文件,然后在第二行,定义了HardwareSerial这个类一个MySerial1对象,里面的构造函数值是...1代表着,我们将使用第一个串口,在下面的setup里面,我们开始启动了MySerial1这个串口对象,启动波特率是9600,数据长度是8,校验位是NONE,停止位是1,以及串口rx引脚是16,tx...在所有的Serial都是及程序Arduino一个Stream一个基础类,这个类提供了一些我们对数据处理一个方法,所以在下面的代码,我们将读取数据转为字符串,然后将代码延迟暂停了一秒,随后,我们使用我们串口对象...-8格式转为字符串,然后显示到界面上富文本框,在发送按钮事件,我们从输入框读取数据转为字节数组,然后将数据写入到串口中去即可。...serialPort.Open(); serialPort.DataReceived += (a, b) => { var serial = a

    1.6K20

    Java串口通信技术探究3:RXTX库线程 优化系统性能SerialPortEventListener类

    在之前文章,我们讨论了使用单例模式SerialPortEventListener类。然而,这种模式在某些情况下并不理想,因为它会导致重复创建监听器,从而无法正确获取串口返回数据。...* @param portName 端口名称, COM1,为 null 时,默认使用电脑中能用端口第一个 * @param b 波特率(baudrate), 9600...@param strSource 16进制字符串, "455A432F5600",每两位对应字节数组一个10进制元素 * 默认会去除参数字符串空格,...Map ,以便在后续请求中使用。...* @param portName 端口名称, COM1,为 null 时,默认使用电脑中能用端口第一个 * @param b 波特率(baudrate), 9600

    35720

    Java串口通信技术探究2:RXTX库单例测试及应用

    通过实例演示了如何使用SerialPortTool类进行串口操作,包括打开串口、关闭串口、发送数据和接收数据等基本功能。同时,对在运行过程可能出现错误进行了分析,并提供了一些解决办法。...* @param portName 端口名称, COM1,为 null 时,默认使用电脑中能用端口第一个 * @param b 波特率(baudrate), 9600..._1 = 1 * @param p 校验位 (parity), SerialPort.PARITY_NONE = 0 * @return 打开串口对象,打开失败时,返回...@param strSource 16进制字符串, "455A432F5600",每两位对应字节数组一个10进制元素 * 默认会去除参数字符串空格,...在IDEAProject Structure,确保你正确安装了我推荐低版本JDK并且在JDKClasspath加入了RXTXcomm.jar包,同时为了确保RXTXDLL(动态链接库)文件能使用

    35300

    c#开发地磅称重软件

    2012年时即做过一个地磅称重软件,最近公司又接了一个地磅过磅软件项目,把遇到问题总结一下以备后用。 1.接线问题 因为客户方原来单独使用仪表,仪表未有接线和电脑连接,为此颇费周折才做好了接线。...接线方式为仪表端所接阵脚为7、8,电脑端为2、5 2.读取仪表称重数 代码基本沿袭2012年为另一客户所开发称重软件代码。...注:本次客户所使用地磅为泰山衡器厂出XK3200,但说明书上说明和耀华系列地磅兼容,而上一客户所使用地磅正是耀华XK3190,大概因此代码基本可直接通用。...下面贴代码了,使用serialPort控件,命名为port 称重窗体设计器代码页 FrmWeigh.designer.cs this.port.BaudRate = 2400; this.port.Parity...+= new System.IO.Ports.SerialDataReceivedEventHandler(this.port_DataReceived); 称重窗体FrmWeigh.cs获取地磅仪表数核心代码部分

    1.4K20

    Java串口编程:串口数据发送与监听读取「建议收藏」

    安装Virtual Serial Port Driver之后用该软件创建一对端口(COM11和COM21),在此创建一对串口将在之后实验再次使用到。...; /** * Com21PollingListener类使用“轮训”方法监听串口COM21, * 并通过COM21输入流对象来获取该端口接收到数据(在本文中数据来自串口COM11)。...,当有数据到达串口时候就会触发事件,在事件响应方法读取串口接收到数据。...“事件监听模式”监听串口COM21, * 并通过COM21输入流对象来获取该端口接收到数据(在本文中数据来自串口COM11)。...* 使用事件监听模式”监听串口,必须字定义一个事件监听类,该类实现SerialPortEventListener * 接口并重写serialEvent方法,在serialEvent方法编写监听逻辑。

    6K20

    DDD 在 Go 落地 | 如何在业务中使用领域事件

    作者 | 于振 责编 | 韩楠 朋友,你好,今天我想与你聊聊如何在业务中正确使用领域事件,通过前面几篇文章分享,相信你对 DDD 在 Go 如何落地已经有了一定了解。...那你应该试试领域服务》 《如何使用工厂,进一步解耦领域对象职责》 《领域模型细节太多不便使用?...那就加个应用服务吧》 严格意义上来讲,领域事件是属于领域层内容,很多书本或文章里,都会将其跟值对象、实体等领域对象放在一起说。 但是在本系列专题文章,我是将领域事件介绍放在了最后再来说。...在更严格意义上来看,事件应该是具有不变性,毕竟已经发生了事实是不容许更改,因此,事件跟值对象有一定相似性,而值对象属性使用是小驼峰法,这里为何不同?...领域对象在修改完毕后,我们需要在仓储对其进行持久化,同时,我们也在这里对领域事件进行真正发布,在发布完毕后,还要将领域事件清空。

    1.6K30

    学习|C#EventHandler委托使用

    EventHandler委托和线程处理,看了一下原来C#文章,以前没有介绍过EventHandler委托,所以这篇简单先介绍一下这个,后面的文章会结合EventHandler委托和线程做一个模拟当时环境小...EventHandler简介 微卡智享 EventHandler就是一个事件处理器,将一个事件与处理事件方法联系起来一种机制。...EventHandler使用 # 说明 1 声明一个EventArgs子类,传递参数 2 声明委托对象,执行方法,将方法绑定委托对象 3 开启EventHandler委托 EventHandler...在Form主窗体代码,定义好了CTest类。 ? 写一个DataReceived触发事件。...点击按钮初始化时,使用+=刚才定义方法进行委托。

    2.1K10
    领券