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

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

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

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

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. python练习-Socket实现远程cmd命令

    需求:基于tcp的套接字实现远程执行命令的操作 代码示例: # 编辑者:闫龙 #Client端部分 import socket #导入骚凯特模块 CmdObj = socket.socket(sock ...

  2. Django 创建第一个Project — Django学习(二)

    检查django If Django is installed, you should see the version of your installation. If it isn’t, you’l ...

  3. [转]GCC常用参数详解

    简介gcc and g++现在是gnu中最主要和最流行的c & c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步:1.预处理,生成.i的文件[预处理器cpp]2.将预处理后 ...

  4. 2017-2018-2 20179205《网络攻防技术与实践》第十一周作业 SQL注入攻击与实践

    <网络攻防技术与实践>第十一周作业 SQL注入攻击与实践 1.研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 缓冲区溢出原理   在计算机内部,输入数据通常被存放在一个临时空间内, ...

  5. Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化

    ---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1.  初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...

  6. MySQL分布式集群之MyCAT(二)【转】

    在第一部分,有简单的介绍MyCAT的搭建和配置文件的基本情况,这一篇详细介绍schema的一些具体参数,以及实际作用        首先贴上自己测试用的schema文件,双引号之前的反斜杠不会消除,姑 ...

  7. URIEncoding与useBodyEncodingForURI 在tomcat中文乱码处理上的区别

    大家知道tomcat5.0开始,对网页的中文字符的post或者get,经常会出现乱码现象. 具体是因为Tomcat默认是按ISO-8859-1进行URL解码,ISO-8859-1并未包括中文字符,这样 ...

  8. git本地分支和远程分支改名

    #1 将本地分支进行改名 git branch -m old_branch new_branch #2 将远程分支的老分支删除 git push origin :old_branch #3 将改名后的 ...

  9. 数据库-python操作mysql(pymsql)

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同 一:安装pymysql pip3 install pymysql 二:使用pytmysql # -*- codin ...

  10. phpStudy配置https

    phpStudy配置https 1.打开vhosts-conf配置文件 2.在配置文件中增加如下内容 server { listen 443; server_name tam.gogugong.com ...