📄 comcontrol.h
字号:
// ComControl.h
#ifndef ComControl_H
#define ComControl_H
//串口消息
#define WM_COM WM_USER+400
#define COM_THRESHOLD 1
#define COM_EMPTY 2
#define COM_ERR 3
//串口线程函数
UINT ComThreadProc(LPVOID para);
// 类CComControl
class CComControl:public CObject
{
friend UINT ComThreadProc(LPVOID para);
public:
//公共数据成员
CString m_szPortName; //串口名
long m_lBaudRate; //波特率
int m_nParity; //校验方式
//公共成员函数
DWORD BytesInQue() //返回缓冲区字节数
{
return m_cbInQue;
}
DWORD BytesOutQue()
{
return m_cbOutQue;
}
bool PortOpened()
{
return m_hCom != INVALID_HANDLE_VALUE;
}
//打开串口&关闭串口
bool OpenPort();
void ClosePort();
//设置串口参数
void SetParam(); //通过对话框设置串口参数
void SetParam(const char* szPortName, long lBaudRate, int nParity);
//设置越限值,用来弹出WM_COMTHRESHOLD消息
void SetThreshold(DWORD nThreshold);
//发送&接收
bool Send(BYTE* pBuff, DWORD dwBytesSend);
bool Receive(BYTE* pBuff, DWORD dwBytesRead);
bool Receive(BYTE* pBuff, DWORD dwBytesRead, DWORD& dwBytesReaded);
void ClearInOut();
//构造&析构
CComControl(HWND hOwner);
~CComControl();
private:
HWND m_hOwner; //所有者窗口句柄
HANDLE m_hCom; //端口句柄
DWORD m_cbInQue; //输入缓冲字节数
DWORD m_cbOutQue; //输出缓冲字节数
OVERLAPPED m_ovRead; //用于接收的数据OVERLAPPED结构
OVERLAPPED m_ovWrite; //用于发送的数据OVERLAPPED结构
CRITICAL_SECTION m_csWmThreshold;
DWORD m_nThresHold; //确定收到多少字节后发WM_COMTHRESHOLD消息
DWORD m_bCanInterrupt; //确认上一次的WM_COMTHRESHOLD消息已处理完
CWinThread* m_pThread; //串口线程
HANDLE m_hExit; //用于终止串口线程
//私有成员函数
void InitCom();
//接收操作后复归m_cbInQue和m_cbOutQue
void ResetBytes();
bool _fastcall IsWindowsNT();
};
#endif // ComControl_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -