⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialport.h

📁 串口传输数据库函数
💻 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 + -