📄 commport.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 + -