老板给我的第一个硬件就是一个读卡器,

说让我做一下试试,于是从网上查了查就写了出来,相当的简单。

但是后来还有一个地磅的串口通讯,我整整搞了一天。

在窗体类的构造函数中写入

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 串口通讯之读卡器的更多相关文章

  1. Winform 串口通讯之地磅

    继上次的读卡之后,要做一个地磅的读取. 下面是我在读卡Demo上改的读取地磅的. 地磅是一直向串口发送数据的,所以需要截取数据来一直判断数据是否合法,然后计算出结果. 其中遇到了一个小问题,文末有介绍 ...

  2. WinForm—串口通讯

    ialPort(串行端口资源) 常用属性: BaudRate 此串行端口上要使用的波特率 DataBits 每发送/接收一个字节的数据位数目 DtrEnable 在通讯过程中是否启用数据终端就绪(St ...

  3. C#串口通讯

    本文提供一个用C#实现串口通讯实例,亲自编写,亲测可用! 开发环境:VS2008+.net FrameWork3.5(实际上2.0应该也可以) 第一步 创建一个WinForm窗体,拉入一些界面元素 重 ...

  4. C#串口通讯概念以及简单实现

    最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...

  5. 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现

    目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...

  6. C#串口通讯实例

    本文参考<C#网络通信程序设计>(张晓明  编著) 程序界面如下图: 参数设置界面代码如下: using System; using System.Collections.Generic; ...

  7. delphi之动态库调用和串口通讯

    串口通讯: Spcomm 控件属性: CommName  :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...

  8. 用SPCOMM 在 Delphi中实现串口通讯 转

      用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...

  9. 西门子plc串口通讯方式

    西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...

随机推荐

  1. D - Doing Homework HDU - 1074 (状压dp)

    题目链接:https://cn.vjudge.net/contest/68966#problem/D 具体思路:我们可以把每个情况都枚举出来,然后用递归的形式求出最终的情况. 比如说 我们要求  10 ...

  2. Q - Phalanx

    题目链接:https://vjudge.net/contest/68966#problem/Q 分析:这里的对称并不是指的是关于原矩阵(也就是最大的那一个)主对角线对称,而是对于每一个小的矩阵来说,当 ...

  3. Mysql注入root权限直接写一句话马

    首先我们的找到一个有注入的站:这里我用自己搭建的环境表示:大家不要乱来 http://localhost/pentest/sql/sql_injection_get.php?id=1 发现是root权 ...

  4. sql_injection之基本get注入

    1.代码篇 <?php error_reporting(0); include("../conn.php"); if(isset($_GET['id'])){ $id=$_G ...

  5. 使用转义防御XSS

    使用转义防御XSS 在输出的时候防御XSS即对用户输入进行转义,XSS的问题本质上还是代码注入,HTML或者javascript的代码注入,即混淆了用户输入的数据和代码.而解决这个问题,就需要根据用户 ...

  6. 通过PDB文件实现非嵌入式的c++反射

    上一篇blog我阐述了一种实现非嵌入式的反射的基本思路.相比于通过宏和模板实现,这种非嵌入的反射的优点是不需要写额外的代码来记录meta信息. 首先,为了在c++中实现反射系统,我认为需要解决以下两个 ...

  7. Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()【转】

    转自:http://blog.csdn.net/droidphone/article/details/8104433 我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子 ...

  8. souce insight出错 There was an error opening project

    souce insight出错 There was an error opening project: "...": Options->Preferences->Fol ...

  9. dstat 服务器性能查看命令【转】

    一. 安装和简解 # yum -y install dstat# dstat CPU状态:CPU的使用率.这项报告更有趣的部分是显示了用户,系统和空闲部分,这更好地分析了CPU当前的使用状况.如果你看 ...

  10. Flask--wtforms快速使用和表单验证(附示例)

    一.Form类 表单提供WTForms中最高级别的API.它们包含您的字段定义,委托验证,获取输入,聚合错误,并且通常用作将所有内容组合在一起的粘合剂. class wtforms.form.Form ...