📄 serialport.h
字号:
//默认设置
#define CPSP_HWSET_DFTDATABITS 8 //串口默认数据位
#define CPSP_HWSET_DFTSTOPBITS ONESTOPBIT //串口默认停止位
#define CPSP_HWSET_DFTPARITY NOPARITY //串口默认校验位
#define CPSP_HWSET_DFTINTERVTMOUT 0 //串口默认字节接收间隔
#define CPSP_HWSET_DFTBUFSIZE 1024 //串口默认缓冲区
//接收缓冲区
#define CPSP_MAXBUFSIZE_RECV 64 //串口最大接收缓冲区大小
//串口超时
#define CPSP_TIMEOUT_RECV 600 //串口接收超时时间
/*** 串口接收缓冲区 ***/
struct CpSpCycBufRecv
{
UCHAR ucarrBuf[CPSP_MAXBUFSIZE_RECV];
int iBufSize;
int iWrtPt;
int iRdPt;
};
//串口接收线程
UINT ThdCpSpReceiving(LPVOID pParam);
class SerialPort
{
public:
CpSpCycBufRecv mstcCycBufSpRecv; //接收循环缓冲区,用于数据帧和应答帧的接收,不用信号量同步
//
BOOL mbRcvEnable; //接收允许,用于控制线程结束
HANDLE mhEvtThdCpSpRecv; //串口占用事件,用于控制线程结束
SerialPort();
virtual ~SerialPort();
BOOL Open(LPCTSTR lpstrName,
DWORD dwBaudRate=CPSP_HWSET_DFTBAUDRATE,
UCHAR ucDataBits=CPSP_HWSET_DFTDATABITS,
UCHAR ucStopBits=CPSP_HWSET_DFTSTOPBITS,
UCHAR ucParity=CPSP_HWSET_DFTPARITY,
DWORD dwRdIntervTmout=CPSP_HWSET_DFTINTERVTMOUT,
DWORD dwBufSize=CPSP_HWSET_DFTBUFSIZE);
void Close(void);
BOOL StartReceive(void);
BOOL Send(UCHAR ucarrBuf[], DWORD dwSndLn, LPDWORD pdwSndLnAct=NULL);
BOOL Receive(UCHAR ucarrBuf[], DWORD dwRcvLn, LPDWORD pdwRcvLnAct=NULL);
BOOL IsOpen(void);
private:
HANDLE mhCom;
//以下变量用户串口接收
OVERLAPPED mstcOvLpRecv;
UCHAR* mpucBufRecv; //串口接收缓冲区
DWORD mdwWaitRecvRslt; //等待接收事件的结果
DWORD mdwRecvLen; //接收数据长度
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -