最近做了一个串口通信的程序,PC到PC的通信,为之后的单片机和PC通信做点准备。很简单的小东西,就是实现了一下串口的通信连接、异步收发数据。虽然简单,还是遇到了些小问题,总结一下,供以后借鉴吧。
一、整体架构:
a) 全局变量
- 使用HANDLE m_hComm保存打开的端口句柄;
- BOOL m_bConnected来标示当前端口的状态,即是否已经连接成功;
- CWinThread* m_pThread来保存之后要开启的异步读取辅助线程;
- int nPort保存连接的端口号;
- 为了进行异步操作,还要给读取和写入分别定义一个OVERLAPPED结构变量,OVERLAPPED m_ovRead, m_ovWrite;
- 最后还要定义一个消息事件HANDLE m_hPostEvent,用于线程向窗体通知数据的到达;
b)函数概述:
- BOOL ConfigPort(); //配置端口
- BOOL ConnectToPort(int nPort); //连接到端口
- BOOL DisconnectToPort(); //从端口断开
- DWORD WriteComm(char *buff, DWORD dwCount); //向端口写入
- DWORD ReadComm(char *buff, DWORD dwCount); //从端口读出
- UINT thCommProc(LPVOID pParam); //全局函数,是一个线程的执行体