?? 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 + -