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

📄 commport.h

📁 基于周立功的lpc213x的源码
💻 H
字号:


// This class is exported from the CommPort.dll
class CCommPort {
public:
 	  CCommPort();
 	  ~CCommPort();
public:
        //事件设置
	typedef enum
	{
		EEventNone  = -1,		// 未触发事件
		EEventBreak = EV_BREAK,		// 检测到输入中止
		EEventCTS   = EV_CTS,		// CTS变
		EEventDSR   = EV_DSR,		// DSR变
		EEventError = EV_ERR,		// 发生了线路状态错误
		EEventRing  = EV_RING,		// 检测到振铃
		EEventRLSD  = EV_RLSD,		// RLSD信号改变状态
		EEventRecv  = EV_RXCHAR,	// 接收到一个字符,并放入输入缓冲区
		EEventRcvEv = EV_RXFLAG,	// 接收到事件字符
		EEventSend  = EV_TXEMPTY,	// 输出缓冲区最后一个字符发送出去
	}
	EEvent;



	// 波特率设置
	typedef enum
	{
		EBaudUnknown = -1,		 //未知
		EBaud110     = CBR_110,		// 110 bits/s
		EBaud300     = CBR_300,		// 300 bits/s
		EBaud600     = CBR_600,		// 600 bits/s
		EBaud1200    = CBR_1200,	// 1200 bits/
		EBaud2400    = CBR_2400,	// 2400 bits/s
		EBaud4800    = CBR_4800,	// 4800 bits/s
		EBaud9600    = CBR_9600,	// 9600 bits/s
		EBaud14400   = CBR_14400,	// 14400 bits/s
                EBaud19200   = CBR_19200,	// 19200 bits/sec
		EBaud38400   = CBR_38400,	// 38400 bits/sec
		EBaud56000   = CBR_56000,	// 56000 bits/sec
		EBaud57600   = CBR_57600,	// 57600 bits/sec
		EBaud115200  = CBR_115200,	// 115200 bits/sec
		EBaud128000  = CBR_128000,	// 128000 bits/sec
		EBaud256000  = CBR_256000,	// 256000 bits/sec

	}
	EBaudrate;

	// 数据位(5-8)
	typedef enum
	{
		EDataUnknown = -1,			// Unknown
		EData5       =  5,			// 5 bits per byte
		EData6       =  6,			// 6 bits per byte
		EData7       =  7,			// 7 bits per byte
		EData8       =  8			// 8 bits per byte (default)
	}
	EDataBits;

	// 奇偶较验
	typedef enum
	{
		EParUnknown = -1,		// 未知
		EParNone    = NOPARITY,		// 无校验
		EParOdd     = ODDPARITY,	// 奇校验
		EParEven    = EVENPARITY,	// 偶校验
		EParMark    = MARKPARITY,	// 标号校验
		EParSpace   = SPACEPARITY	// 空格校验
	}
	EParity;

	// 停止位
	typedef enum
	{
		EStopUnknown = -1,		 // 未知
		EStop1       = ONESTOPBIT,	// 1 stopbit (default)
		EStop1_5     = ONE5STOPBITS,    // 1.5 stopbit
		EStop2       = TWOSTOPBITS	// 2 stopbits
	}
	EStopBits;

	// 握手信号
	typedef enum
	{
		EHandshakeUnknown		= -1,	// 未知
		EHandshakeOff			=  0,	// 无
		EHandshakeHardware		=  1,	// 硬件握手
		EHandshakeSoftware		=  2	// 软件握手
	}
	EHandshake;

	// 超时设置
	typedef enum
	{
		EReadTimeoutUnknown	 = -1,	// 未知
		EReadTimeoutNonblocking	=  0,	// 总是立即返回
		EReadTimeoutBlocking	=  1	//
	}
	EReadTimeout;


	// 串口状态
	typedef enum
	{
		EPortUnknownError = -1,		// Unknown error occurred
		EPortAvailable    =  0,		// Port is available
		EPortNotAvailable =  1,		// Port is not present
		EPortInUse        =  2		// Port is in use

	}
	EPort;


  //----------------------------------------------------------------------------
 public:
  //----------------------------------------------------------------------------
  int  OpenPort (int nDataBit=EData8,int nStopBit=EStop1,int nParity=EParNone);
  //----------------------------------------------------------------------------
  void  ClosePort (BOOL bR = TRUE);
  //----------------------------------------------------------------------------
  BOOL  SetCommBaud(int baud);
  //-----------------------------------------------------------------------------
  BOOL  SetCommPort(int port);
  //-----------------------------------------------------------------------------
  BOOL  SetFrameHead(int nHead);
 //-----------------------------------------------------------------------------
  int  SendOrder(BYTE* pOrderBuff,BYTE* pAckBuff,int nTimeOuts);
  //-----------------------------------------------------------------------------
  int  SendData(BYTE* pOrderBuff,BYTE* pAckBuff,int nSendLen,int nTimeOuts,
                                int nRcv,BYTE cEnd, BOOL bIfRcv);
  //-----------------------------------------------------------------------------
  int ReadBlock(BYTE* pAckBuff,int nLen,int nTimeOuts);
  //-----------------------------------------------------------------------------
  HANDLE GetCommHandle(void);
  //----------------------------------------------------------------------------
  BOOL SetDTR();
  //----------------------------------------------------------------------------
  BOOL ClrDTR();
  //----------------------------------------------------------------------------
  BOOL SetRTS();
  //----------------------------------------------------------------------------
  BOOL ClrRTS();
  //----------------------------------------------------------------------------
  int CommWatch(int &nLen,BYTE* pBuff);


private:

  int   Setup (EBaudrate eBaudrate = EBaud9600,
						EDataBits eDataBits = EData8,
						EParity   eParity= EParNone,
						EStopBits eStopBits =EStop1 );
  //----------------------------------------------------------------------------
   int  SetupReadTimeouts (int nBlockRead);
  //---------------------------------------------------------------------------
   int  SetMask (DWORD dwMask = EV_RXCHAR);
  //----------------------------------------------------------------------------
   int  Flush (void);
   //---------------------------------------------------------------------------
   int  Write (BYTE* pData, size_t iLen, DWORD* pdwWritten = 0, LPOVERLAPPED lpOverlapped = 0, DWORD dwTimeout = INFINITE);
  //----------------------------------------------------------------------------
   int  Read (BYTE* pData, size_t iLen, DWORD* pdwRead = 0, LPOVERLAPPED lpOverlapped = 0, DWORD dwTimeout = INFINITE);
  //-----------------------------------------------------------------------------
   int  WaitEvent (BYTE* Buff,int nTimeOuts);
  //----------------------------------------------------------------------------
   int Wait_Cnt(BYTE* Buff,int nTimeOuts,int nRcvCnt);
  //----------------------------------------------------------------------------
   int Wait_Byte(BYTE* Buff,int nTimeOuts,BYTE cEndByte);


private:
 	HANDLE	hComm;
	EEvent	m_eEvent;
        HANDLE	m_hevtOverlapped;
        int nFrameHead;
        DCB  m_dcb;
        LPCTSTR lpszPort;	//端口
        EBaudrate eBaudrates;	//波特率
	int ErrorTimes;		//Error Thresholds
        int nFrameNum;          //每帧所传字节个数
        int nTimePerByte;
  
};

⌨️ 快捷键说明

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