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

📄 serialport.h

📁 符合移动协议的见空系统,很有使用简直,希望多下载
💻 H
字号:
#ifndef SERIALPORT_H
#define SERIALPORT_H

#include <Classes.hpp>
#include "includes.h"
#include <syncobjs.hpp>
#include "stdio.h"

#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.  

//class TMonitorThread;

void Uart1RX(INT8U rcv_data);

class CSerialPort
{														 
public:
	int m_nWriteSize; 
	void ClosePort();
	// contruction and destruction
	CSerialPort();
	virtual		~CSerialPort();

	// port initialisation											
	BOOL		InitPort(UINT portnr = 1, UINT baud = 19200, char parity = 'N', UINT databits = 8, UINT stopbits = 1, DWORD dwCommEvents = EV_RXCHAR, UINT writebuffersize = 1024);
	HANDLE				m_hComm;

	// start/stop comm watching
	BOOL		StartMonitoring();
	BOOL		RestartMonitoring();
	BOOL		StopMonitoring();

	DWORD		GetWriteBufferSize();
	DWORD		GetCommEvents();
	DCB			GetDCB();

	void		WriteToPort(char* string);
	void		WriteToPort(char* string,int n);
	void		WriteToPort(LPCTSTR string);
	void		WriteToPort(LPCTSTR string,int n);
  void    SerialExecute();
  void __fastcall StartThread();

public:
	// protected memberfunctions
	void		ProcessErrorMessage(char* ErrorText);
	UINT	CommThread(LPVOID pParam);
	void	ReceiveChar(COMSTAT comstat);
	void	WriteChar();

	// synchronisation objects
	CRITICAL_SECTION	m_csCommunicationSync;
	BOOL				m_bThreadAlive;
  //TMonitorThread  *m_Thread;
	// handles
	HANDLE				m_hWriteEvent;
	HANDLE				m_hShutdownEvent;
  HANDLE        m_hEvent;
  HANDLE	      mhSubThread;
	// 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_hEventArray[3];

	// structures
	OVERLAPPED			m_ov;
	COMMTIMEOUTS		m_CommTimeouts;
	DCB					m_dcb;

	// misc
	UINT				m_nPortNr;
	char*				m_szWriteBuffer;
	DWORD				m_dwCommEvents;
	DWORD				m_nWriteBufferSize;
};

DWORD WINAPI StartSerialThread(LPVOID pParam);
typedef void (CSerialPort::*_PtrClassFunc)();

/*class TMonitorThread : public TThread  //定义线程类
{
public:
        void __fastcall Execute();
        CSerialPort  *m_Port;
        void SetPort(CSerialPort *pPort){m_Port = pPort;}
        __fastcall TMonitorThread(bool CreateSuspended, CSerialPort *port);
};*/

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -