CSerialIO-简单好用的串口控件
源码:src.rar
Demo:SerialCtrlDemo.rar
一、介绍
CSerialIO实现一个对串口读写的类,有一个线程负责处理对串口数据的读写,只需要简单调用CSerialIO提供的API就可以侦听串口的数据。
二、背景
目前网上有同步和异步的串口读写控件,需要用户去定时的或者启动一个线程去读取数据,所以我实现的这个串口读写类时已经封装了一个线程来处理读写数据,用户可以基于自己的应用来处理读写、打开和关闭串口事件。
三、如何使用
class CSerialIO{
public:
CSerialIO();
virtual ~CSerialIO();
void OpenPort(CString strPortName,CString strBaudRate);//打开串口
virtual void OnEventOpen(BOOL bSuccess); //打开串口成功与否的响应事件
void ClosePort();//关闭串口
virtual void OnEventClose(BOOL bSuccess);//关闭串口成功与否的响应事件
virtual void OnEventRead(char *inPacket,int inLength);//串口读取数据处理事件
void Write(char *outPacket,int outLength); //串口写数据
virtual void OnEventWrite(int nWritten);//串口写数据的响应事件,nWritten<0表示写出错,否则表示实际写的数据字节数。
…
};
CSerialIO 主要是提供7个API,用户的应用如果是基于窗口,可以继承该类来处理这几个事件,然后在窗口上表现出来。
四、实践结果
源码里基于CSerialIO类实现了一个demo,如图1所示,里面处理读写串口成功与否的事件,关闭串口事件,及读写事件。
图一:串口控件操作界面
五、结束语
目前很多设备还是基于串口通信的,对串口操作的场景经常是需要一直侦听串口发来的数据,根据读到的数据来决定发什么命令给设备,所以CSerialIO类很方面用户来处理以上这种场景。