C# 串口读取(事件驱动)
来源:互联网 发布:ecel表格数据有效性 编辑:程序博客网 时间:2024/06/05 17:48
网上有一个JustinIO类,是针对于串口操作写的类.工作需要我得用串口把读卡机的信息拿取出来.开始用这个类写是无非用一个while循环调用JustinIO的Read方法.但这样写发现系统架构上不是很好.于是我在原来的JustinIO类中加入了ReadEvent事件.也就是把JustinIO类封装成一个由事件驱动的类(当串口有数据入时会触发ReadEvent事件).具体如下:
public delegate void ReadEventHandler( object sender, byte [] Buffer );
class CommPort {
//声明事件
public event ReadEventHandler ReadEvent;
public bool Done = true;
...
... //由于JustinIO类网络可以下载,它原有的代码我会省略
public void Open()
{
.....
Thread th = new Thread( new ThreadStart( Execut ));
th.Start();
}
private void Execut()
{
while ( Done )
{
byte [] Buffer = this.Read( 128 );
if ( Buffer.Length > 0 )
{
OnReadEvent( Buffer );
}
}
}
private void OnReadEvent( byte [] Buffer )
{
if ( ReadEvent != null )
{
ReadEvent( this , Buffer );
}
}
public void Close()
{
Done = false;
if (hComm!=INVALID_HANDLE_VALUE)
{
CloseHandle(hComm);
}
}
}
就是样已经为JustinIO类添加了一个事件.
在调用方只要绑定这人事件就可以了.
private CommPort commPort;
private void Init()
{
commPort = new CommPort();
commPort.PortNum = "COM1";
commPort.BaudRate = 9600;
commPort.ByteSize = 8;
commPort.Parity = 0;
commPort.StopBits = 0;//1;
commPort.ReadTimeout = 2000;
try
{
if ( commPort.Opened )
commPort.Close();
commPort.Open();
if ( commPort.Opened )
{
commPort.ReadEvent += new ReadEventHandler( OnRead );
}
}
catch( Exception ex )
{
MessageBox.Show(ex.Message);
}
}
public void OnRead( object sender , byte [] Buffer )
{
MessageBox.Show( System.Text.Encoding.ASCII.GetString(Buffer ) );
}
这样做对于调用层来说再清楚不过了.我不需要知道它怎么读,只需要知道它读到信息时会触发OnRead函数.
- C# 串口读取(事件驱动)
- c#读取串口
- C#读取计算机串口
- C#基于事件驱动的多串口多线程串口通讯软件架构设计
- C#基于事件驱动的多串口多线程串口通讯软件架构设计
- C# 串口事件委托
- C# 简单的串口读取
- c# 串口读取GPS信息
- C# 事件驱动机制
- C# 事件驱动基础
- C#读取计算机串口号的方法
- 【.Net码农】C#读取计算机串口
- C#读取RS232串口扫描枪
- C# 监听串口数据并触发事件
- C#中串口接收数据触发事件
- c# 读取串口——如何全部读取
- c# 读取串口——如何全部读取
- 请教串口编程:如何实现信号驱动事件
- 佛祖说出的爱情箴言
- 殊途同归 四个程序员的一天
- 鼠标放到图片上,图片慢慢变清淅
- 谈谈我对攻读计算机研究生的看法(转贴)
- 学C++不得不看的一篇文章
- C# 串口读取(事件驱动)
- 30岁开始实现我的程序员梦(ZT)
- 我为什么是最出色的球员(乔丹)
- System.Collections-Array,Arraylist,HashTable和SortedList
- 可口可乐公司总裁前唐纳德·基奥在艾默里大学毕业典礼上的讲话
- 新开,先祝大家想啥就会有啥。
- Java初学者宝典
- Key to Oral English Breakthrough: Imitate and Repeat
- QQ HTTP代理IP