⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comcontrol.h

📁 MODBUS主、子站规约模拟程序。可以做为MODBUS规约测试的工具
💻 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 + -