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

📄 commport.h

📁 dos下串口数据传输的基类
💻 H
字号:
// CommPort.h: interface for the CCommPort class.
//
//////////////////////////////////////////////////////////////////////
#ifndef  _CLASS_CCommPort_H
#define  _CLASS_CCommPort_H
#include <dos.h>
/*--------------------------------------------------------------------
先入先出队列模板类CFifoQueue
--------------------------------------------------------------------*/
template <class T,unsigned short int MaxBuf> class CFiFoQueue
{
public:
	CFiFoQueue() {mHead=mTail=0;}
	void EmptyAll() {mHead=mTail=0;}
	void operator +=(T Tdata){Add(Tdata);}
	void AddData(T Tdata){Add(Tdata);}
	char GetData(T &Tdata)
	{
		if(mHead==mTail) return 0;
		Tdata=mData[mHead++];
		if(mHead==MaxBuf) mHead=0;
		return 1;
	}
private:
	void Add(T Tdata)
	{
		mData[mTail++]=Tdata;
		if(mTail==MaxBuf) mTail=0;
		if(mHead==mTail)
		{ 	mHead++;
			if(mHead==MaxBuf) mHead=0;
		}
	}
private:
	T mData[MaxBuf];
	unsigned short int mHead,mTail;
};
/*--------------------------------------------------------------------
端口通讯基类CCommPortBasicClass
--------------------------------------------------------------------*/
class CCommPortBasicClass  
{
protected:
	void EmptySendRecvBuffer();
	virtual void ReceiveNewChar(unsigned char ch);
	CCommPortBasicClass();
	~CCommPortBasicClass();
	void ActiveSendInterrupt();
	void OpenCommPort(unsigned short int mPortBasicAddr,unsigned char mInterruptNo,unsigned short int BaudRate,void interrupt (*PortNewIntHandle)(...));
	unsigned short int m_PortBasicAddr;//端口基地址
	unsigned char m_InterruptNo;	//端口中断号
	void interrupt (*m_PortOldIntHandle)(...);//旧的中断函数
	char m_BeSendingMark;
	CFiFoQueue<char,(unsigned short int)1024> RecvQueue;//接受数据队列。没有帧头
	CFiFoQueue<char,(unsigned short int)256> SendQueue;	//发送数据队列。
public:
	virtual int OpenPort(unsigned short tPortBasicAddr, unsigned char tInterruptIRQNo, unsigned short tBaudRate)=0;
	void PortIntHandleFunction();
	void WriteStringToBuffer(char *str, unsigned short Len=0);
	void WriteCharToBuffer(char ch);
	void WriteStringToPort(char *str, unsigned short Len=0);
	void WriteCharToPort(char ch);
	int ReadChar(char &ch);
};
#endif

⌨️ 快捷键说明

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