打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于C# Winform的串口数据接收

很多初学者在接触到串口编程时,不知道如何入手,找了网上一些文章,也是鱼龙混杂,不好学习。

今天,我分享一篇文章,讲述 基于C# Winform的串口数据接收编程(适合大概明白WinForm编程的同学,没有接触过WinForm的同学下载源码学习)


首先添加串口(自行拖拽)

SerialPort serialPort1 = new SerialPort('COM2', 9600, Parity.None, 8, StopBits.One); //初始化串口设置

创建一个数据接收方法

void Comm_DataReceived(object sender, SerialDataReceivedEventArgs e) { Byte[] InputBuf = new Byte[128]; try { serialPort1.Read(InputBuf, 0, serialPort1.BytesToRead); //读取缓冲区的数据直到“}”即0x7D为结束符 //InputBuf = UnicodeEncoding.Default.GetBytes(strRD); //将得到的数据转换成byte的格式 System.Threading.Thread.Sleep(50); this.Invoke(disp_delegate, InputBuf); } catch (TimeoutException ex) //超时处理 { MessageBox.Show(ex.ToString()); } }

建立一个委托事件:(关于C#委托事件,下文会有参考文章)

public void DispUI(byte[] InputBuf) { //textBox1.Text = Convert.ToString(InputBuf); ASCIIEncoding encoding = new ASCIIEncoding(); richTextBox1.Text = encoding.GetString(InputBuf); }

完整的程序代码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO.Ports;namespace WindowsFormsApplication3{ public partial class Form1 : Form { SerialPort serialPort1 = new SerialPort('COM2', 9600, Parity.None, 8, StopBits.One); //初始化串口设置 public delegate void Displaydelegate(byte[] InputBuf); Byte[] OutputBuf = new Byte[128]; public Displaydelegate disp_delegate; public Form1() { disp_delegate = new Displaydelegate(DispUI); serialPort1.DataReceived += new SerialDataReceivedEventHandler(Comm_DataReceived); InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { if (button1.Text == '打开') { serialPort1.Open(); button1.Text = '关闭'; } else { serialPort1.Close(); button1.Text = '打开'; } } catch (Exception ex) { MessageBox.Show(ex.Message, '错误提示', MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } void Comm_DataReceived(object sender, SerialDataReceivedEventArgs e) { Byte[] InputBuf = new Byte[128]; try { serialPort1.Read(InputBuf, 0, serialPort1.BytesToRead); //读取缓冲区的数据直到“}”即0x7D为结束符 //InputBuf = UnicodeEncoding.Default.GetBytes(strRD); //将得到的数据转换成byte的格式 System.Threading.Thread.Sleep(50); this.Invoke(disp_delegate, InputBuf); } catch (TimeoutException ex) //超时处理 { MessageBox.Show(ex.ToString()); } } public void DispUI(byte[] InputBuf) { //textBox1.Text = Convert.ToString(InputBuf); ASCIIEncoding encoding = new ASCIIEncoding(); richTextBox1.Text = encoding.GetString(InputBuf); } }}

程序运行



最后分享一个虚拟串口工具:vspd(在没有底层硬件的时候,这个工具就派上用场了,结合串口小助手还有自己开发的程序使用)



程序源码:http://download.csdn.net/detail/kevin_iot/9724392

委托事件:http://www.cnblogs.com/hyddd/archive/2009/07/26/1531538.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
net2.0下多线程实现串口接收GPS数据读写
C#串口通信总结
C#中SerialPort串口控件使用之字符的接收
C# 串口操作系列(1)
C# 串口操作系列(3)
C# 实现Epson热敏打印机打印 Pos机用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服