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

📄 serialport.h

📁 一个串口类
💻 H
字号:
#pragma once
#include "IbmsSerialPortApi.h"
#include <list>
using namespace std;

namespace IBMS
{
class CSerialPort;

class  ISerialPortObserver
{
public:
	virtual ~ISerialPortObserver(){}
	virtual void OnSerialPortOpen(CSerialPort *pSerialPort)=0;
	virtual void OnSerialPortClose(CSerialPort *pSerialPort)=0;
	virtual void OnSerialPortSend(CSerialPort *pSerialPort, const byte *pData, size_t nDataLen)=0;
	virtual void OnSerialPortReceive(CSerialPort *pSerialPort, byte *pData, size_t nDataLen)=0;
};

class  CSerialPort
{
public:
	CSerialPort(int nPort, int nRate =9600, StopBits stopbits = TwoStopBits, 
		Parity parity =NoParity, BYTE bDataByte =8, FlowControl fc = NoFlowControl);

	virtual ~CSerialPort(void);

	virtual void Open();
	virtual void Close();
	virtual void OnReceiveData(byte *pData, size_t nDataLen);
	
	void Send(const byte *pData, size_t nDataLen);

	int GetPort() const { return m_nPort;}
	void SetPort(int newPort) { m_nPort = newPort; }
	
	int GetRate() const { return m_nRate; }
	void SetRate(int newRate) { m_nRate = newRate;}

	StopBits GetStopBits() const { return m_stopbits;}
	void SetStopBits(StopBits stopbits) { m_stopbits = stopbits; } 

	BYTE GetDataBits() const { return m_dataByte;}
	void SetDataBits(BYTE dataBits){ m_dataByte = dataBits;}
	
	Parity GetParity() const { return m_parity; }
	void SetParity(Parity parity) { m_parity = parity;}

	FlowControl GetFlowControl() const { return m_fc;}
	void SetFlowControl(FlowControl fc) { m_fc = fc;}

	void AtachPortObserver(ISerialPortObserver *pObserver);
	void DetchProtObserver(ISerialPortObserver *pObserver);

	string GetName() const ;

private:
	static void  OnReceiveData(LPVOID pSender, void *pData, DWORD nDataLen);

	HANDLE m_hSerialPort;
	int m_nPort;
	int m_nRate;
	
	StopBits m_stopbits;
	Parity m_parity;
	BYTE m_dataByte;
	FlowControl m_fc;

	typedef list<ISerialPortObserver *>  PortObserverList;

	PortObserverList m_portObservers;
};

bool operator==( const CSerialPort&  left,  const CSerialPort &right);


}

⌨️ 快捷键说明

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