📄 cecomm.h
字号:
//////////////////////////////////////////////////////////////////////
// CEComm.h: interface for the CCEComm class.
//////////////////////////////////////////////////////////////////////
//
//使用时利用该类实例化一对象,首先定义一个静态私有函数作为回调函数初始化
//m_OnSeriesRead成员变量,然后打开串口,发送时调用WritePort方法,读取自动完成,
//SetSeriesTimeouts方法用于设置串口读取写超时,结束时调用ClosePort方法
//
//example:
//
//CCEComm m_CEComm; //定义串口类
//
//static void CLASS::OnSeriesRead(CWnd* pWnd,BYTE* buf,int bufLen); //定义读串口回调函数
//{
// CDlg *pDlg = (CDlg *)pWnd;
// CEdit * pEdit = (CEdit*)pDlg->GetDlgItem(IDC_EDIT);
//
// CString strRecv = (char*)buf;
// CString strOld;
// pEdit->GetWindowText(strOld);
// pEdit->SetWindowText(strOld + strRecv);
//
// delete[] buf;
//}
//
//m_CEComm.m_OnSeriesRead = OnSeriesRead;
//
//
//
//////////////////////////////////////////////////////////////////////
#pragma once
//定义串口接收数据函数类型
typedef void (CALLBACK* ONSERIESREAD)(CWnd* pWnd,BYTE* buf,int bufLen);
//定义向写线程发送的消息常量
const CM_THREADCOMMWRITE = WM_USER+110;
//CE串口通讯类
class CCEComm
{
public:
CCEComm();
virtual ~CCEComm();
public:
//打开串口
//设置串口参数
BOOL GetSeriesState(DCB* pCommParam);
BOOL SetSeriesState(DCB* pCommParam);
void ConfigPort();
//关闭串口
void ClosePort();
void CloseWrite();
void CloseRead();
//设置串口读取、写入超时
BOOL SetSeriesTimeouts(COMMTIMEOUTS* pCommTimeOuts);
//向串口写入数据
BOOL SendPort(const BYTE *buf,int bufLen);
BOOL SendPort(LPCTSTR szSend);
BOOL SendPortU(LPCTSTR szSend);
//设置串口回调函数
void SetPortReceive(CWnd* pWnd,ONSERIESREAD proc);
void SetCloseDelayTime(UINT t);
private:
//串口读线程函数
static DWORD WINAPI ReadThreadFunc(LPVOID lparam);
//串口写线程函数
static DWORD WINAPI WriteThreadFunc(LPVOID lparam);
//向串口写入数据
static BOOL WritePort(HANDLE hComm,const BYTE *buf,DWORD bufLen);
private:
//已打开的串口句柄
HANDLE m_hComm;
CWnd* m_pPortOwner;
BYTE m_nPort;
//读写线程句柄
HANDLE m_hReadThread;
HANDLE m_hWriteThread;
//读写线程ID标识
DWORD m_dwReadThreadID;
DWORD m_dwWriteThreadID;
//读写线程退出事件
HANDLE m_hReadCloseEvent;
HANDLE m_hWriteCloseEvent;
UINT m_nCloseDelayTime;
public:
virtual BOOL OpenPort(BYTE portNo= 1,DWORD baud = 9600,BYTE parity= NOPARITY,BYTE databits = 8,BYTE stopbits = ONESTOPBIT,DWORD maxblock = 512);
ONSERIESREAD m_OnSeriesRead; //串口读取回调函数
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -