前面设计好了界面,现在就开始写代码了,首先定义一个串口对象..

SerialPort serialport = new SerialPort();//定义串口对象

添加串口扫描函数,扫描出来所有可用串口显示在下拉框中,同时设置接受函数

string[] ArryPort = SerialPort.GetPortNames();
comboBox1.Items.Clear();
for (int i = ; i < ArryPort.Length; i++)
{
comboBox1.Items.Add(ArryPort[i]);
}
comboBox1.SelectedIndex = ;
serialport.DataReceived += serialport_DataReceived;

PS:,因为串口的接受事件中开辟了新的线程,所以我们访问ui资源时需要做特殊的处理,如果是winform中需要设置

Control.CheckForIllegalCrossThreadCalls = false;//防止挎线程访问

但是在wpf中没有这个属性就需要用委托来处理代码如下

void serialport_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] buffer = new byte[];
int adc_dat = ;
serialport.Read(buffer, , buffer.Length);
adc_dat += buffer[i + ];
adc_dat = (adc_dat << ) + buffer[i + ];;
this.Dispatcher.Invoke(new Action(() =>
{
progressBar1.Value = adc_dat;
}));
}

上面的代码中我们从读取到的数据处理 完成,之后修改进度条的值,这个里面就是一段简单的接受数据,处理,要想数据无措,还要加入相应的校验函数和自己的算法处理,

我们在接受之前还需要设置串口号,波特率等等,看下面的代码

private void set_PortName()//将下拉框中的内容设置串口
{
serialport.PortName = comboBox1.SelectedItem.ToString();
}
private void set_BaudRate()//设置波特率
{
serialport.BaudRate = ;
}
private void Open_serial()//启动串口开始接收
{
set_PortName();//选择串口号
set_BaudRate();//选择波特率
try
{
serialport.Open();//打开当前串口
}
catch (Exception)
{
MessageBox.Show("串口被占用", "error"); }
}

这段代码实现了从下拉框中读取数据同时设置为当前串口的串口号,同样的我们要设置数据位,检验位,都可以这样做,设置完成我们就可以打开串口了,看看吧,能接受数据吗,

C#上位机制作之串口接受数据(利用接受事件)的更多相关文章

  1. C#简单的上位机制作之界面设计

    今天开始打算正式在博客园落户了,写点有用的吧, 一个简单的C#上位机,也就是串口调试助手废话不多说,新建windows应用程序 到这人一个工程就算是新建完成了,然后就是组件的添加了,我们需要在里面添加 ...

  2. 串口实现FIFO接受数据

    基本原理:静态队列 /* * 串口的FIFO简单读取实现 * 功能,实现串口的FIFO实现 * 使用方法: * 版本:v1.0.0 * */ #include "sys.h" #i ...

  3. 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...

  4. Linux系统串口接收数据编

    http://blog.csdn.net/bg2bkk/article/details/8668576 之前基于IBM deveplopworks社区的代码,做了串口初始化和发送的程序,今天在此基础上 ...

  5. WPF内实现与串口发送数据和接收数据

    原文:WPF内实现与串口发送数据和接收数据 与串口发送数据和接收数据,在此作一个简单的Demo.此Demo可以实现按下硬件按钮,灯亮,发送灯状态数据过来.并且可以实现几个灯同时亮,发送灯的状态数据过来 ...

  6. 6.Struts2简单类型数据的接受

    简单类型数据的接收 在Action类中定义与请求参数同名的属性, 即,要定义该属性的set方法,便能够使struts2自动接收请求参数并赋予同名属性. 简单类型数据的接受举例: 新建工程项目,名称为: ...

  7. dsp28377控制DM9000收发数据——第三版程序,通过外部引脚触发来实现中断接受数据,优化掉帧现象

    //-------------------------------------------------------------------------------------------- - //D ...

  8. C#串口通信—向串口发送数据,同步接收返回数据

    最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...

  9. 如何用Java语言向串口读写数据

    原作者:赛迪网作者 shihuchen ,我在他的基础上进行了部分修改 [赛迪网讯]串口, RS-232-C(又称EIA RS-232-C,以下简称RS232)是在1970年由美国电子工业协会(EIA ...

随机推荐

  1. 初识MVC

    本人是一个程序员,我也是一个很普通很普通的人,当我初学一些东西的时候感觉都很难,毕竟没有天才的头脑,没有高等的学历,但是我有的只是努力,只是拼搏的精神,人都是为自己而活,也可能为他人而活,但是有时候在 ...

  2. 解决Java程序连接mysql数据库出现CommunicationsException: Communications link failure错误的问题

    一.背景 最近在家里捣鼓一个公司自己搭建的demo的时候,发现程序一启动就会出现CommunicationsException: Communications link failure错误,经过一番排 ...

  3. C# Lamda中类似于SQL 中的 In 功能

    首先,在程序中接受一个数组 例如:int[] s=[1,2,3]; 在Lamda表达式中使用如下: db.userinfo.where(u=>s.Contains(u.id)); 等同于sql语 ...

  4. mongodb安装、启动、远程连接

    1.现在mongodb安装包 mongodb-linux-x86_64-3.0.6.tgz 2.解压缩安装包 tar zxvf  mongodb-linux-x86_64-3.0.6.tgz /opt ...

  5. 【Java EE 学习 55】【酒店会员管理系统项目总结】

    本酒店会员管理系统使用了SSH框架和传值播客提供的协同OA静态页面. 项目地址:https://github.com/kdyzm/HotelMembersManagement 一.需求分析 酒店会员管 ...

  6. 3.View绘制分析笔记之onLayout

    上一篇文章我们了解了View的onMeasure,那么今天我们继续来学习Android View绘制三部曲的第二步,onLayout,布局. ViewRootImpl#performLayout pr ...

  7. CVE-2015-7645 analyze and exploit

    Hack team之后adobe和google合作对flash进行了大改,一度提高了flash的利用门槛,CVE-2015-7645作为第一个突破这些限制的漏洞利用方式,可以作为vetect利用方式之 ...

  8. JavaScript高级程序设计-(3) 变量、作用域和内存问题

    传递参数 ECMAScript所有函数参数都是按值传递的,即使对象在函数内部修改了参数的值,原始的引用任然不变,局部对象在函数执行完毕后被销毁

  9. Good Bye 2016 - A

    题目链接:http://codeforces.com/contest/750/problem/A 题意:有n场比赛要打,第i场比赛需要花i*5分钟来完成,比赛从20:00开始.然后新年派对24:00开 ...

  10. iOS CoreData primitive accessor

    Given an entity with an attribute firstName, Core Data automatically generates firstName, setFirstNa ...