#ifndef GPIODEVICE_H #define GPIODEVICE_H #include "serial.h" #include "public.h" #include "smutex.h" #define GPIO_SUCCESS 0 // command succeeded #define GPIO_NOT_OPEN -1 // command succeeded #define GPIO_HARDWARE_ERROR -2 // command failed because of hardware error #define GPIO_TIMEOUT -3 // wait for user interaction timed out #define GPIO_PARA_ERR -4 // #define SIUSTX 0X1B #define SIUID 0X2A #define STX_RET 0X02 #define ETX 0x03 #define NAK 0x15 #define YYBSTX 0X1B #define YYBID 0X2D class GPIODevice { public: GPIODevice(); ~GPIODevice(); int Init(); int OpenSIU(const char* sPort, int iBps); int OpenYYB(const char* sPort, int iBps); int OpenLCK(const char* sPort, int iBps); int Close(); int SetLight(int iIndex, char* sCmd, int iState); int GetFirmware(char* sOut); int GetStatus( short & dwState); bool IsOpen(){return m_SerSIU.IsOpen();}; int RestartPower(int nTimeToPowerOff, int nPowerOffDuration ); int GetSIUSta(BYTE* sSta); int GetYYBSta(BYTE* sSta); protected: SSerial m_SerSIU; SSerial m_SerYYB; SSerial m_SerLCK; int ExecuteSIU(char * pSend, int iLength, char* sRecv, int& iRecv, int iTimeOut); int ExecuteYYB(char * pSend, int iLength, char* sRecv, int& iRecv, int iTimeOut); }; #endif // GPIODEVICE_H