📄 ceserialcomm.h
字号:
/*************************************************************************
CeSerialComm.h: interface for the CCeSerialComm class.
作 者: Raymond
创建时间: 2006.04.19
作 用: 封装串口API
*************************************************************************/
#if !defined(AFX_CESERIALCOMM_H__351D63F9_4470_4763_AA12_D4CCCDD34433__INCLUDED_)
#define AFX_CESERIALCOMM_H__351D63F9_4470_4763_AA12_D4CCCDD34433__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
const UINT MAX_MSG_LEN = 1024;
class CCeSerialComm
{
public:
CCeSerialComm();
virtual ~CCeSerialComm();
//根据指定参数初始化一个串口为可用。
BOOL InitComm(LPCTSTR lpszPort, UINT uRate, UINT uTimeOut=0);
//打开指定的串口
BOOL OpenComm(LPCTSTR lpszPort);
//关闭串行口
BOOL CloseComm();
//判断串口是否打开
BOOL IsCommOpened();
//返回超时结构
BOOL GetCommTimeOut(LPCOMMTIMEOUTS lpCommTimeouts);
//设置超时
BOOL SetCommTimeOut(LPCOMMTIMEOUTS lpCommTimeouts);
//返回串行口配置
BOOL GetCommStates(LPDCB lpDCB);
//设置串行口配置
BOOL SetCommStates(LPDCB lpDCB);
//设置串行口缓冲区
BOOL SetupCeComm(DWORD dwInQueue, DWORD dwOutQueue);
//清除串行口数据
BOOL PurgeCeComm(DWORD dwFlags);
//设置与串行口相关的事件
BOOL SetCommMasks(DWORD dwEvtMsk);
//获得与串行口相关的事件
BOOL GetCommMasks(LPDWORD lpEvtMask);
//等待事件发生
BOOL WaitCommEvents(LPDWORD lpEvtMask);
//读串口数据
BOOL ReadComm(BYTE *pByMsg, DWORD dwNumberOfBytesToRead, LPDWORD lpNumOfByRead, DWORD dwTimeOut=0);
//读指定长度的数据
BOOL Read(BYTE *pByMsg, DWORD dwLen, LPDWORD lpdwReadLen, DWORD dwTimeOut=0);
BOOL ReadNoEvent(BYTE *pByMsg, DWORD dwLen, LPDWORD lpdwReadLen, DWORD dwTimeOut=0);
//读所有能读的数据
BOOL Recv(BYTE *pByMsg, DWORD &dwLen, DWORD dwTimeOut=0);
//读出一个帧的数据
int ReadAframe(BYTE *pByMsg, LPDWORD lpdwReadLen, DWORD dwTimeOut = 0);
//发送指定长度的数据
BOOL Write(BYTE *pByMsg, DWORD dwLen, LPDWORD lpdwWriteLen, DWORD dwTimeOut=0);
//向串口发送数据
BOOL WriteComm(BYTE *pByMsg, DWORD dwNumOfByToWrite, LPDWORD lpNumOfByWritten, DWORD dwTimeOut=0);
//恢复指定通信设备的字符传输,并设置传输线路为不可中断状态
BOOL ClearCommBreaks();
//获得通信错误数据,并报告指定通信设备的当前状态。
BOOL ClearCommErrors(LPDWORD lpErrors, LPCOMSTAT lpStat);
//返回最后的错误描述
CString GetLastErrorDisc();
private:
//串口句柄
HANDLE m_hComm;
//波特率
UINT m_uRate;
//串行口
CString m_strPort;
//错误描述
CString m_strError;
};
#endif // !defined(AFX_CESERIALCOMM_H__351D63F9_4470_4763_AA12_D4CCCDD34433__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -