c#串口收发数据
来源:互联网 发布:nginx 前后端分离 编辑:程序博客网 时间:2024/05/17 08:56
2015-11-20 15:10:09
补充:串口要添加对应的空间
//获取com口
using System.IO.Ports;
c#有串口控件
设计界面如下:
重要的几个函数
构造函数 InitializeComponent(); //为串口绑定接收数据事件 this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); //初始化下拉串口名称列表框 string[] ports = SerialPort.GetPortNames(); Array.Sort(ports); dotlist.Add(100); /* 串口设置 this.serialPort1.PortNum= comboBox1.Text.ToString(); //端口号 this.serialPort1.Parity= 0; //奇偶校验 this.serialPort1.BaudRate= 9600;//串口通信波特率 this.serialPort1.ByteSize= 8; //数据位 this.serialPort1.StopBits= 1;//停止位 this.serialPort1.ReadTimeout= 1000; //读超时 */ comboBaudName.Items.AddRange(ports); //如果只有一个串口则选中 if(comboBaudName.Items.Count==1) { comboBaudName.SelectedIndex = 0; } //默认波特率选9600 this.comboBaudRate.Items.AddRange(new object[] { "2400", "4800", "9600", "19200", "38400", "57600", "115200"}); if (ports.Length == 1) { //comboBaudName.SelectedIndex = 0; comboBaudRate.SelectedText = "9600"; } //打开或关闭串口 private void button8_Click(object sender, EventArgs e) { //根据当前串口对象,来判断操作 if(serialPort1.IsOpen) { //串口状态是open时,text是关闭 点击,则关闭串口 serialPort1.Close(); button8.Text = "打开"; } else { //串口状态是close时,text是打开 点击,则设置好端口,波特率后打开 if(comboBaudName.Text=="") { MessageBox.Show("无效的串口!"); return; } if(comboBaudRate.Text=="") { MessageBox.Show("请设置波特率!"); return; } serialPort1.PortName = comboBaudName.Text; serialPort1.BaudRate = int.Parse(comboBaudRate.Text); try { serialPort1.Open(); button8.Text = "关闭"; } catch(Exception e1) { //捕获到异常信息,创建一个新的comm对象,之前的不能用了。 serialPort1 = new SerialPort(); //显示异常信息给客户。 MessageBox.Show(e1.Message); } } } //接收串口数据函数 private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { int n = serialPort1.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致 byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据 received_count += n;//增加接收计数 serialPort1.Read(buf, 0, n); ;//读取缓冲数据 builder.Clear();//清除字符串构造器的内容 //因为要访问ui资源,所以需要使用invoke方式同步ui。 this.Invoke((EventHandler)(delegate { //直接按ASCII规则转换成字符串 builder.Append(Encoding.ASCII.GetString(buf)); //追加的形式添加到文本框末端,并滚动到最后。 textBox1.AppendText(builder.ToString()); })); SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); } //发送串口数据 private void SendStringData(string data) { if(serialPort1.IsOpen) { serialPort1.Write(data); } else { MessageBox.Show("串口没有打开"); } } //发送数据按钮 private void button10_Click(object sender, EventArgs e) { if(serialPort1.IsOpen) { SendStringData(this.textBox2.Text); } }
效果图:
注意:串口号是程序打开时扫描的,这点不方便;只能是ASCII码,不然乱码。
0 0
- c#串口收发数据
- 虚拟串口 vspd + C#2.0 测试串口 收发数据
- 串口收发数据
- 监控串口数据收发
- 串口数据收发问题
- 串口收发数据1
- 串口多路复用收发数据
- ZigBee串口收发数据
- 单片机串口收发数据
- 串口通信 收发数据
- 2串口收发数据
- C# 串口收发的 类
- c#收发串口数据的源码(封装了windows api的类)
- c#收发串口数据的源码(封装了windows api的类)
- C#中使用seriport和单片机进行串口长数据收发不全,解决办法
- 串口一拖二收发数据测试总结
- 专业测量串口收发数据时间软件
- LINUX下串口数据的并发收发
- python 的日志logging模块学习
- Contributor License Agreements : 贡献者许可证协议 介绍
- MSSQL删除表中已有的重复数据,保留一条数据
- Deep Learning论文笔记之(八)Deep Learning最新综述
- 多条件排序解决方案
- c#串口收发数据
- ext2的inode结构
- Oracle ERROR: ORA-12560: TNS: 协议适配器错误
- Java(Android)线程池
- python中一些链接数据库所用到的包
- 杭州校招android笔试题(持续更新)
- 关于Highcharts中隐藏部分数据功能
- IOS自动布局基本知识介绍
- iOS中 UICollectionView UI_19