#ifndef IOMODULESINTERFACE_H #define IOMODULESINTERFACE_H #include "SeaMAX.h" #include #include #include #define IO_MODULES_REFRESH_INTERVAL 300 //ms #define IO_COUNT 128 //4 modules of 32 bits class CIOModulesInterface : public QObject { Q_OBJECT public: enum eModulesSlaveIDDefs { INPUTS_MODULE_1_SLAVE_ID = 1, INPUTS_MODULE_2_SLAVE_ID = 2, INPUTS_MODULE_3_SLAVE_ID = 3, INPUTS_MODULE_4_SLAVE_ID = 4, OUTPUTS_MODULE_1_SLAVE_ID = 5, OUTPUTS_MODULE_2_SLAVE_ID = 6, OUTPUTS_MODULE_3_SLAVE_ID = 7, OUTPUTS_MODULE_4_SLAVE_ID = 8 }; CIOModulesInterface(); ~CIOModulesInterface(); int OpenIOModules(QString IPAddress); int CloseIOModules(); int SetOutputs(QBitArray Outputs); QBitArray GetInputStates(); QBitArray GetOutputStates(); int ResetOutputs(); private: SM_HANDLE hndl; // QTimer *mIOModulesQueryTimer; unsigned char mInputsBuffer[16]; unsigned char mOutputsBuffer[16]; unsigned char mOutputsStatebuffer[16]; int ReadInputModules(); int WriteOutputModules(); int ReadOutputStates(); int DoAllIOTransactions(); QBitArray CharBufferToBitArray(unsigned char *buf, int size_in_bytes); public slots: void IOModulesQueryTimerExpired(); }; #endif // IOMODULESINTERFACE_H