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

📄 serialportctrl.h

📁 自己写的VC++串口通信代码
💻 H
字号:
// SerialPortCtrl.h: interface for the CComOpAT class.
//
//////////////////////////////////////////////////////////////////////

#ifndef __SERIALPORTCTRL_H__
#define __SERIALPORTCTRL_H__

typedef unsigned char DTOUTB;			//输出缓冲区数据类型
typedef const unsigned char* DTOUT;		//输出缓冲区数据类型
typedef unsigned char DTIN;		//输入缓冲区数据类型,
								//在主线程中分配堆内存,字符数组

const DWORD INBUFSZ  = 4096;	//默认输入缓冲区大小
const DWORD OUTBUFSZ = 512;		//默认输出缓冲区大小

//由监视线程向主线程发出的消息
#define WK_EVT_SPIN WM_USER+7

//****************串口操作类使用方法*******************//

//1.类构造时,并未打开任何端口,要使用,必须调用OpenCom函数,并指定要打开的端口号.

//2.端口刚打开时,使用默认的参数进行端口设置,
//  可在端口打开后,事先填充类成员,再调用SetCom进行端口设置.

//3.ReadCom的参数pinbuf应是一个字符数组名.

//4.类文件中,已经初步实现了端口监视线程,但需在主线程中启动或停止,
//  还需在主线程中定义一个COMWATINFO的全局变量,以便主线程与监视线程共享.

//5.主线程应建立一个消息处理函数,接收由监视线程向主线程发出的EV_COMREADIN消息,
//  并进行相应或所需的处理.

//****************串口操作类使用方法*******************//
class CSerialPortCtrl
{
public:
	bool OpenCom(LPCTSTR port = "COM1");				//打开指定端口,默认为COM1
	bool SetCom();										//设置端口
	DWORD ReadCom(DTIN* pinbuf = NULL,DWORD toread = INBUFSZ);	//读取端口
	DWORD WriteCom(DTOUT outbuf,DWORD towrite);			//写入端口
	bool CloseCom();				//关闭端口
public:
	HANDLE			m_hCom;			//端口句柄
	CString			m_strPort;		//端口名称

	DTIN*			m_cInBuf;
	DWORD			m_InBufSz;		//输入缓冲大小
	DWORD			m_OutBufSz;		//输出缓冲大小

	bool			m_bComOpen;		//端口是否处于打开状态,跟踪m_hCom的有效性
	DWORD			m_dwEvt;		//通信事件掩膜

	DCB				m_Dcb;			//端口设备控制块
	COMMTIMEOUTS	m_ComTimeOuts;	//超时结构

	OVERLAPPED		m_OLRead;		//异步(重叠)I状态结构
	OVERLAPPED		m_OLWrite;		//异步(重叠)O状态结构
public:
	CSerialPortCtrl();						//构造函数
	virtual ~CSerialPortCtrl();			//析构函数
protected:
	bool WriteComByte(DTOUTB uc);
};

typedef struct _SPWATCHINFO
{
	HWND hParent;					//含有界面的主线程窗口句柄
	CSerialPortCtrl* pSP;				//端口操作类的指针
	HANDLE hEvt;					//同步事件
//	DWORD dwlen;					//端口中的数据字节数
//	DWORD dwEvtMask;	//端口的事件掩膜,可由主线程判断并进行相应操作
} SPWATCHINFO;

//端口监视线程
UINT SPWatcher(LPVOID SPWatInfo);

#endif // !defined(__SERIALPORTCTRL_H__)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -