使用.net的SerialPort串口监控控件接收串口数据

更新时间:2024-06-25 06:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

前述:

在一个项目中,需要从串口通信的磁卡读卡器中读取刷卡的卡号,以便后续的业务操作。该刷卡 器的型号为:SMR-RU2,使用USB接入电脑,通过USB转串口,Windows会根据USB口分配器固定的串口号。本人使用了.net中自带的

SerialPort串口监控控件来读取磁卡读卡器所读取的卡号,下面讲述具体细节。 使用SerialPort接受串口信号:

首先在创建一个From,并且在工具箱中拖入SerialPort控件,在这里我命名为mySerialPort,并拖进一个TextBox,一遍显示信号数据。 接着初始化SerialPort控件,代码如下:

///

private void InitMySerialPort(String portName) 2

{ 3

if (mySerialPort != null) 4

{ 5

mySerialPort.PortName = portName;//端口号,这里可以6

电脑已经连接的COM口,如COM1; 7

mySerialPort.DataBits = 8;//设置每个字节的数据位,在8

这里我设置为8位,可以为7位 9

mySerialPort.DiscardNull = false; 10

mySerialPort.DtrEnable = false; 11

mySerialPort.Handshake = Handshake.None; 12

mySerialPort.Parity = Parity.None; 13

mySerialPort.ParityReplace = Convert.ToByte(\14

mySerialPort.RtsEnable = false; 15

mySerialPort.StopBits = StopBits.One; 16

} 17

if (!mySerialPort.IsOpen) 18

{ 19

mySerialPort.Open();//打开端口,进行监控 20

} 21

mySerialPort.DataReceived += new 22

SerialDataReceivedEventHandler(serialPort_DataReceived);//这个事件23

为最关键点,一旦端口 收到信号,就会触发该事件,这个事件就是真正读取信号,以便做接下的业务。 }

最后加上接受信号的事件:

public void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) 1 { 2

3 string s = \

4 int count = mySerialPort.BytesToRead; 5

6 byte[] data = new byte[count]; 7 mySerialPort.Read(data, 0, count); 8

9 foreach (byte item in data) 10 { 11 s += Convert.ToChar(item); 12 } 13 14 if (this.InvokeRequired)//由于是非创建线程访问 17 18 { 19 this.Invoke(new MethodInvoker(delegate 20 { this.textBox1.Text = s; })); 21 } 22 else 23 { 24 this.textBox1.Text = s; } }

本文来源:https://www.bwwdw.com/article/15x3.html

Top