//程序设计:段利庆 QQ:14035344
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
namespace MyMailSample
{
public partial class FrmComm : Form
{
//定义模块级串口对象
public SerialPort SpCom1 = new SerialPort("COM1", 4800, Parity.None, 8, StopBits.One);
public FrmComm()
{
InitializeComponent();
//添加串口接收事件方法
this.SpCom1.DataReceived += new SerialDataReceivedEventHandler(SpCom1_DataReceived);
}
//接收事件方法定义
void SpCom1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//throw new Exception("The method or operation is not implemented.");
byte[] b = new byte[4];
//SpCom1.Read(b, 0, 1);
//MessageBox.Show(b[0].ToString());
}
private void FrmComm_Load(object sender, EventArgs e)
{
//打开串口
SpCom1.Open();
}
private void FrmComm_FormClosed(object sender, FormClosedEventArgs e)
{
//关闭串口
SpCom1.Close();
}
private void butSend_Click(object sender, EventArgs e)
{
byte[] b = new byte[4]; //{ 0,0,0,0};
b[0] = 1;
b[1] = 240;
b[2] = 0;
b[3] = 0;
//发送读卡指令
SpCom1.Write(b, 0, 4);
}
private void butReceive_Click(object sender, EventArgs e)
{
byte[] b = new byte[4];
if (SpCom1.BytesToRead < 4)
{
MessageBox.Show("接收缓冲数据小于4");
//取走剩余的接收缓冲区数据
SpCom1.Read(b, 0, SpCom1.BytesToRead);
return;
}
SpCom1.Read(b, 0, 3);
textBox1.Text = b[0].ToString() + " " + b[1].ToString() + " " + b[2].ToString() + " " + b[3].ToString();
}
private void butBeep_Click(object sender, EventArgs e)
{
byte[] b = new byte[4]; //{ 0,0,0,0};
b[0] = 1;
b[1] = 243;
b[2] = 0;
b[3] = 0;
//读卡器 3短音提示
SpCom1.Write(b, 0, 4);
}
private void butReadCard_Click(object sender, EventArgs e)
{
butSend_Click(sender, e);
//采用单线程保护延时,防止其他事件在处理结束前 插入其中(主要针对 串口读写的操作 方法)
Thread.Sleep(1000);
butReceive_Click(sender, e);
}
private void butReceives_Click(object sender, EventArgs e)
{
Int32 len;
len = SpCom1.BytesToRead;
if (len ==0)
{
MessageBox.Show("接收缓冲无数据");
return;
}
byte[] b = new byte[len];
SpCom1.Read(b, 0, len);
string s = "";
for (int i = 0; i < len; i++)
{
s = s + b[i].ToString("X2") + " ";
}
textBox1.Text = s;
}
}
}