/************************************************************************/ /* Copyright (C), 2016-2020, [Home], 保留所有权利; /* 模 块 名:同步串口模块; /* 描 述:; /* /* 版 本:[V]; /* 作 者:[Home]; /* 日 期:[12/20/2017]; /* /* /* 注 意:; /* /* 修改记录:[Home]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /************************************************************************/ #ifndef __SYN_SERIAL__ #define __SYN_SERIAL__ #pragma once #define MAX_PORT_LEN 10 class CSynSerial { public: CSynSerial(void); virtual ~CSynSerial(void); private: DCB m_dcb; HANDLE m_hSerialPort; COMMTIMEOUTS m_cts; OVERLAPPED m_wrOverlapped; // 串口号(1~255); TCHAR m_szSerialPort[MAX_PORT_LEN]; // 输入缓存大小(byte); DWORD m_dwInQueue; // 输出缓存大小(byte); DWORD m_dwOutQueue; public: inline BOOL IsOpen() const { return (m_hSerialPort == NULL || m_hSerialPort == INVALID_HANDLE_VALUE) ? FALSE : TRUE; } // 打开串口; BOOL OpenSerialPort( IN CONST BYTE& byCommPort, // 串口号; IN CONST DWORD& dwBaudRate, // 波特率; IN CONST BYTE& bySize, // 数据位; IN CONST BYTE& byParity, // 校验位; IN CONST BYTE& byStopBits, // 停止位; IN CONST BYTE& byStartAddr, // 起始地址; IN CONST INT& nInterval // 间隔时间; ); // 重装打开串口; BOOL ReOpenSerialPort(); // 关闭串口; void CloseSerialPort(); // 设置串口参数; BOOL SetSerialPort( IN CONST DWORD& dwBaudRate, // 波特率; IN CONST BYTE& byByteSize, // 数据位; IN CONST BYTE& byParity, // 校验位; IN CONST BYTE& byStopBits, // 停止位; IN CONST BYTE& byStartAddr, // 起始地址; IN CONST DWORD& dwInQueue, // 输入缓存; IN CONST DWORD& dwOutQueue // 输出缓存; ); // 设置dcb参数; void SetSerialDCB(IN CONST DCB &dcb); // 设置commtimeouts参数; void SetSerialCommTimeouts(IN CONST COMMTIMEOUTS &commTimeouts); virtual DWORD WriteComm(IN BYTE *pWirteBuf, IN CONST INT32 nWriteSize); virtual DWORD ReadComm(IN BYTE *pReadBuf, IN CONST DWORD& dwReadSize, WORD timeout = 300); }; #endif // __SYN_SERIAL__