| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // SerialClass.h: interface for the SSerial class.
- //
- //////////////////////////////////////////////////////////////////////
- #if !defined(_SERIALCLASS_SUNEW_20170608_INCLUDED_)
- #define _SERIALCLASS_SUNEW_20170608_INCLUDED_
- #include "define.h"
- #include "stdlib.h"
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <stdio.h>
- #include <time.h>
- #include <fcntl.h>
- typedef enum
- {
- Parity_NO, //无校验位
- Parity_ODD, //奇校验
- Parity_EVEN //偶校验
- }Parity; //奇偶校验
- typedef enum
- {
- Flow_NO, //无流控
- Flow_XONOFF, //XONOFF校验
- Flow_CTS, //硬件校验
- Flow_DSR //硬件校验
- }FlowCtl; //流控
- //串口类
- MYEXPORTCLASS SSerial
- {
- public:
- //串口操作类,初始化
- SSerial ( void );
- ~SSerial ( void );
- //端口(如COM3,ttymxc3),波特率(如9600)
- virtual bool Open ( const char* sPort, const int iBaut );
- virtual bool IsOpen ();
- //数据位 停止位 校验位 流控
- void SetCtrl (int iDataBit = 8, int iStopBit = 1, Parity ParityBit = Parity_NO, FlowCtl iFlow = Flow_NO);
- virtual void Close ();
- virtual void Flush();//清除缓存
- //发送数据,返回已发长度,-1失败
- int Send (const char *data, int datalen , int timeout = 0 );
- //接收数据,返回已收长度,-1失败
- int Receive (char *data, int datalen, int timeout = 0 );
- protected:
- //发送数据,返回已发长度,-1失败
- virtual int SendOnce (const char *data, int datalen, int iTimeout);
- //接收数据,返回已收长度,-1失败
- virtual int ReceiveOnce (char *data, int datalen, int iTimeout);
- private:
- #ifdef WIN32
- HANDLE m_hCom;
- #else
- int m_hCom; //handle
- #endif
- //设置超时,单位毫秒
- void SetTimeout(unsigned int millisec);
- int m_nBaut; //baudrate
- char m_cDataBit; //data bits, 5, 6, 7, 8
- char m_cStopBit; //stop bits, 1, 2
- Parity m_cParityBit; //parity 0: none, 1: odd, 2: even
- FlowCtl m_cFlow; //flow control, 0: none, 1: hardware, 2: software
- };
- #endif // !defined(_SERIALCLASS_SUNEW_20170608_INCLUDED_)
|