📄 ccomm.h
字号:
#ifndef __CCOMM_H__
#define __CCOMM_H__
#define USECOMM // yes, we need the COMM API
#define MAXBLOCK 256
#define READ_BUFFER_SIZE 1024
#define ASCII_XON 0x11
#define ASCII_XOFF 0x13
class CComm;
DWORD FAR PASCAL CommWatchProc(CComm* pCommObject);
typedef void(* CommCallBackFunc)(BYTE* pContent,UINT uSize,LPVOID lpUserInstance);
class CComm
{
friend DWORD FAR PASCAL CommWatchProc(CComm* pCommObject);
friend DWORD FAR PASCAL WriteThreadProc(CComm* pCommObject);
friend DWORD FAR PASCAL ReadThreadProc(CComm* pCommObject);
protected:
HANDLE m_hComm;
OVERLAPPED m_WriteOS;
OVERLAPPED m_ReadOS;
int m_nPort;
BOOL m_bConnected;
BOOL m_bDisplayError;
int m_nBaudRate;
int m_nInputBufferSize;
int m_nOutputBufferSize;
DWORD m_dwThreadID;
HANDLE m_hThread;
CommCallBackFunc m_pCallBackFunc;
LPVOID m_lpUserInstance;
HANDLE m_hWriteThread;
DWORD m_dwWriteThreadID;
HANDLE m_hReadThread;
DWORD m_dwReadThreadID;
HANDLE m_hQuitEvent;
HANDLE m_hWriteEvent;
HANDLE m_hCTSEvent;
HANDLE m_hReadEvent;
UINT m_uMiniBlockSize;
UINT m_uBlockSize;
CMultiplex * m_pMultiplex;
CDemultiplex * m_pDemultiplex;
CByteBuffer m_InputBuffer;
public:
CComm(CommCallBackFunc pCallBackFunc=NULL,
CMultiplex * pMultiplex=NULL,
CDemultiplex * pDemultiplex=NULL,
int nBaudRate=9600,
int nInputBufferSize=4096,
int nOutputBufferSize=4096,
BOOL bDisplayError=FALSE);
virtual ~CComm(){CloseConnection();}
BOOL WriteCommBlock(BYTE* lpByte , DWORD dwBytesToWrite);
BOOL OpenComm(int nPortNumber=2,LPVOID lpUserInstance=NULL);
BOOL SetRate(int nBaudRate);
BOOL CloseConnection();
private:
BOOL CreateTTYInfo();
int ReadCommBlock(LPSTR lpszBlock, int nMaxLength );
BOOL OpenConnection();
BOOL SetupConnection();
};
inline BOOL CComm::SetRate(int nBaudRate)
{
if(m_bConnected)
return FALSE;
m_nBaudRate=nBaudRate;
return TRUE;
}
#endif//__CCOMM_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -