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

📄 serialcom.h

📁 一个含串口访问功能的小测试程序
💻 H
字号:
// SerialCom.h: interface for the CSerialCom class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SERIALCOM_H__41E441F1_BB8F_43F9_9578_0193A41EA569__INCLUDED_)
#define AFX_SERIALCOM_H__41E441F1_BB8F_43F9_9578_0193A41EA569__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


const int  CRC_CHECKSUM	 = 0;
const int  BCC_CHECKSUM	 = 1;
const int  LRC_CHECKSUM  =  2;
const UINT  MAXBLOCK  =	2048;
const UINT  XON		  =	0x11;
const UINT  XOFF	  =	0x13;
const UINT  INITTIMER = 1003;
const UINT  BYTENUMBER = 256;

UINT CommProc(LPVOID pParam);
UINT ReadSerialThread(LPVOID pParam);

class CSerialCom : public CObject  
{
public:
	CSerialCom();
	virtual ~CSerialCom();
public:

	volatile BOOL m_bConnected; //连接标志 FALSE -- 串口关闭,TRUE -- 串口打开
	volatile BOOL m_bSerialSelected;
	volatile HANDLE m_hCom;     // 串行口句柄

	HTREEITEM  hItemSerial;
public:
	unsigned char RecvBuf[256];
	unsigned char SendBuf[256];
	unsigned char tmpRecvBuf[256];

public:
	CString  m_sPort;          //端口号
	UINT     m_nBaud;          //波特率
	UINT     m_nDataBits;      //数据位
	UINT     m_nStopBits;      //停止位
	UINT     m_nParity;        //校验位
	UINT     m_nFlowCtrl;      //流控制
	UINT	 m_nRespond_TimeOut;
	COMMTIMEOUTS ComTimeOuts;  //超时结构
	int		 m_nProtocol;      //协议
public:
	BOOL CalculateChecksum(unsigned char * pByte, int nNumberOfBytes,
 							   				   unsigned short *pChecksum, int nChecksumMode /* = BCC_CHECKSUM */);

	void CalculateBCC(unsigned char * pByte, int nNumberOfBytes, unsigned short *pChecksum);
	void CalculateCRC(unsigned char *pByte, int nNumberOfBytes, unsigned short *pChecksum);
	void CalculateLRC(unsigned char *pByte, int nNumberOfBytes, unsigned short *pChecksum);
	BOOL ConfigConnection(HANDLE m_hCom);            // 配置连接参数
	BOOL OpenConnection();			   // 打开参数
	BOOL CloseConnection();			   // 关闭连接
    DWORD ReadComm(HANDLE m_hCom,unsigned char *buf,DWORD dwLength); //读串口数据
	DWORD WriteComm(HANDLE m_hCom,unsigned char *buf,DWORD dwLength);//发送串口数据
protected:
    CWinThread* m_pThread;          // 监视串口的线程
	CWinThread* m_pReadSerialThread;

public:
	OVERLAPPED m_osRead, m_osWrite; // 用于重叠读/写
	volatile HANDLE m_hPostMsgEvent;   // 用于同步读线程的事件对象
	volatile HANDLE m_hReadSerialEvent;// 用于通知读线程的事件对象
	
protected:
	public:
};

#endif // !defined(AFX_SERIALCOM_H__41E441F1_BB8F_43F9_9578_0193A41EA569__INCLUDED_)

⌨️ 快捷键说明

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