Winform 串口通讯之读卡器
老板给我的第一个硬件就是一个读卡器,
说让我做一下试试,于是从网上查了查就写了出来,相当的简单。
但是后来还有一个地磅的串口通讯,我整整搞了一天。
在窗体类的构造函数中写入
Form.CheckForIllegalCrossThreadCalls = false;
可以在线程外更新窗体,这样就可以一直接收数据,一直更新ui了。
打开串口按钮:
//实例化
SerialPort Myport = new SerialPort();
//设置串口端口
Myport.PortName = cbxPortName.Text;
//设置比特率
Myport.BaudRate = Convert.ToInt32(cmbbaud.Text);
//设置数据位
Myport.DataBits = Convert.ToInt32(cmbBits.Text);
//根据选择的数据,设置停止位
//if (cmbStop.SelectedIndex == 0)
// Myport.StopBits = StopBits.None;
if (cmbStop.SelectedIndex == )
Myport.StopBits = StopBits.One;
if (cmbStop.SelectedIndex == )
Myport.StopBits = StopBits.OnePointFive;
if (cmbStop.SelectedIndex == )
Myport.StopBits = StopBits.Two; //根据选择的数据,设置奇偶校验位
if (cmbParity.SelectedIndex == )
Myport.Parity = Parity.Even;
if (cmbParity.SelectedIndex == )
Myport.Parity = Parity.Mark;
if (cmbParity.SelectedIndex == )
Myport.Parity = Parity.None;
if (cmbParity.SelectedIndex == )
Myport.Parity = Parity.Odd;
if (cmbParity.SelectedIndex == )
Myport.Parity = Parity.Space; //此委托应该是异步获取数据的触发事件,即是:当有串口有数据传过来时触发
Myport.DataReceived += new SerialDataReceivedEventHandler(port1_DataReceived);//DataReceived事件委托
//打开串口的方法
try
{
Myport.Open();
if (Myport.IsOpen)
{
MessageBox.Show("串口已打开");
}
else
{
MessageBox.Show("串口未能打开");
}
}
catch (Exception ex)
{
MessageBox.Show("串口未能打开"+ex.ToString());
}
关闭就使用 Myport.Close(); 在读卡器的串口通讯中是不会有问题的
DataReceived事件委托的方法
private void port1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
string currentline = "";
//循环接收串口中的数据
while (Myport.BytesToRead > )
{
char ch = (char)Myport.ReadByte();
currentline += ch.ToString();
}
//在这里对接收到的数据进行显示
//如果不在窗体加载的事件里写上:Form.CheckForIllegalCrossThreadCalls = false; 就会报错)
this.txtReceive.Text = currentline;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
Winform 串口通讯之读卡器的更多相关文章
- Winform 串口通讯之地磅
继上次的读卡之后,要做一个地磅的读取. 下面是我在读卡Demo上改的读取地磅的. 地磅是一直向串口发送数据的,所以需要截取数据来一直判断数据是否合法,然后计算出结果. 其中遇到了一个小问题,文末有介绍 ...
- WinForm—串口通讯
ialPort(串行端口资源) 常用属性: BaudRate 此串行端口上要使用的波特率 DataBits 每发送/接收一个字节的数据位数目 DtrEnable 在通讯过程中是否启用数据终端就绪(St ...
- C#串口通讯
本文提供一个用C#实现串口通讯实例,亲自编写,亲测可用! 开发环境:VS2008+.net FrameWork3.5(实际上2.0应该也可以) 第一步 创建一个WinForm窗体,拉入一些界面元素 重 ...
- C#串口通讯概念以及简单实现
最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...
- 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现
目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...
- C#串口通讯实例
本文参考<C#网络通信程序设计>(张晓明 编著) 程序界面如下图: 参数设置界面代码如下: using System; using System.Collections.Generic; ...
- delphi之动态库调用和串口通讯
串口通讯: Spcomm 控件属性: CommName :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...
- 用SPCOMM 在 Delphi中实现串口通讯 转
用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...
- 西门子plc串口通讯方式
西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...
随机推荐
- asp.net 调用post方法并获取返回值
/// <summary> /// http协议 post数据 接受返回结果 /// </summary> /// <param ...
- C# Json字符串反序列化
using DevComponents.DotNetBar; using MyControl; using Newtonsoft.Json; using System; using System.Co ...
- 在JS数组指定位置插入元素
很多与数组有关的任务听起来很简单,但实际情况并不总是如此,而开发人员在很多时候也用不到他.最近我碰到了这样一个需求: 将一个元素插入到现有数组的特定索引处.听起来很容易和常见,但需要一点时间来研究它. ...
- 已知可生成0~4的rand5(),实现生成0~6的rand7()
若已知生成0~6的rand7(),求生成0~4的rand5(),则一个方法就是不断生成0~7的数,直到这个数满足0~4就返回. int rand5(){ int res; do{ res = rand ...
- 01-Coredump核心转存&&Linux程序地址分析【转】
转自:http://www.itwendao.com/article/detail/404132.html 目录(?)[-] 一Core Dump核心转存 二Linux程序地址分析 一Core Dum ...
- sleep允许休眠, delay不允许
在Linux Driver开发中,经常要用到延迟函数:msleep,mdelay/udelay. 虽然msleep和mdelay都有延迟的作用,但他们是有区别的. 1.)对于模块本身 mdelay是忙 ...
- window.print打印方法实现
vue中使用window.print打印效果 项目要求 打印每页有10行表格,如果接口数据没有十个显示10行 效果图 第一页 第二页 子组件 <template> <div> ...
- 转载:Github项目解析(七)-->防止按钮重复点击
不错的东西,记录下... http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/qq_23547831/article/deta ...
- python3中文转码方法
python3中的转码,必须是byte类型的,str类型的会返回未定义方法. 示例代码如下 doc = pq(start_html.content) print("orig text=&qu ...
- Linux密码策略-密码长度-密码复杂度
1.设置密码长度 vim /etc/pam.d/system-authpassword requisite pam_cracklib.so try_first_pass retry=3 minlen= ...