📄 serialport.h
字号:
// SerialPort.h: interface for the CSerialPort class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SERIALPORT_H__81030EE2_4120_4CC4_831B_9CA41879A62E__INCLUDED_)
#define AFX_SERIALPORT_H__81030EE2_4120_4CC4_831B_9CA41879A62E__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define WM_COMM_BREAK_DETECTED WM_USER+1 // A break was detected on input.
#define WM_COMM_CTS_DETECTED WM_USER+2 // The CTS (clear-to-send) signal changed state.
#define WM_COMM_DSR_DETECTED WM_USER+3 // The DSR (data-set-ready) signal changed state.
#define WM_COMM_ERR_DETECTED WM_USER+4 // A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY.
#define WM_COMM_RING_DETECTED WM_USER+5 // A ring indicator was detected.
#define WM_COMM_RLSD_DETECTED WM_USER+6 // The RLSD (receive-line-signal-detect) signal changed state.
#define WM_COMM_RXCHAR WM_USER+7 // A character was received and placed in the input buffer.
#define WM_COMM_RXFLAG_DETECTED WM_USER+8 // The event character was received and placed in the input buffer.
#define WM_COMM_TXEMPTY_DETECTED WM_USER+9 // The last character in the output buffer was sent.
//HANDLE hEventArray[2];
//CString m_Respond;
//CString m_Result;
class CSerialPort
{
private:
public:
// static char m_Result[150]; //
// static char m_Respond[150]; //
int i_timeout;
HANDLE m_hComm;
CWinThread* m_Thread;
BOOL m_bThreadAlive;
int m_stopflag;
int m_nWriteSize;
unsigned char * m_RxBuff;
BOOL StopMonitoring();
BOOL RestartMonitoring();
BOOL StartMonitoring();
void WriteToPort(char* string);
void WriteToPort(char* string,int n);
static void WriteChar(CSerialPort * port);
static void ReceiveChar(CSerialPort * port,COMSTAT comstat);
void ProcessErrorMessage(char * ErrorText);
BOOL InitPort(CWnd* pPortOwner,UINT portnr,
UINT baud,char parity,UINT databits,
UINT stopsbits,DWORD dwCommEvents,
UINT nBufferSize);
DWORD GetWriteBufferSize();
DCB GetDCB();
DWORD GetCommEvents();
CSerialPort();
BOOL IsNT();
void Close();
//DEL LPSTR GetErrorMessage(VOID) { return m_lpszErrorMessage; }
//HANDLE hEventArray[2];
static LONG OnCommunication(unsigned char ch,int port);
~CSerialPort(){Close();}
// virtual ~CSerialPort();
protected:
static UINT CommThread(LPVOID pParam);
OVERLAPPED m_ov; // A structure that contains informations which are
// used for asynchronous input and output operations
HANDLE m_hEventArray[3];
// Event array.
// One element is used for each event. There are two event handles for each port.
// A Write event and a receive character event which is located in the overlapped structure (m_ov.hEvent).
// There is a general shutdown when the port is closed.
HANDLE m_hWriteEvent;
HANDLE m_hShutdownEvent;
// BOOL m_bThreadAlive;
CRITICAL_SECTION m_csCommunicationSync;
COMMTIMEOUTS m_CommTimeouts;
DCB m_dcb;
// owner window
CWnd* m_pOwner;
UINT m_nPortNr;
char* m_szWriteBuffer;
DWORD m_dwCommEvents;
DWORD m_nWriteBufferSize;
// DECLARE_MESSAGE_MAP();
};
#endif // !defined(AFX_SERIALPORT_H__81030EE2_4120_4CC4_831B_9CA41879A62E__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -