Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

62 строки
1.3 KiB

  1. #ifndef IOMODULESINTERFACE_H
  2. #define IOMODULESINTERFACE_H
  3. #include "SeaMAX.h"
  4. #include <QTimer>
  5. #include <QObject>
  6. #include <QBitArray>
  7. #define IO_MODULES_REFRESH_INTERVAL 300 //ms
  8. #define IO_COUNT 128 //4 modules of 32 bits
  9. class CIOModulesInterface : public QObject
  10. {
  11. Q_OBJECT
  12. public:
  13. enum eModulesSlaveIDDefs
  14. {
  15. INPUTS_MODULE_1_SLAVE_ID = 1,
  16. INPUTS_MODULE_2_SLAVE_ID = 2,
  17. INPUTS_MODULE_3_SLAVE_ID = 3,
  18. INPUTS_MODULE_4_SLAVE_ID = 4,
  19. OUTPUTS_MODULE_1_SLAVE_ID = 5,
  20. OUTPUTS_MODULE_2_SLAVE_ID = 6,
  21. OUTPUTS_MODULE_3_SLAVE_ID = 7,
  22. OUTPUTS_MODULE_4_SLAVE_ID = 8
  23. };
  24. CIOModulesInterface();
  25. ~CIOModulesInterface();
  26. int OpenIOModules();
  27. int CloseIOModules();
  28. int SetOutputs(QBitArray Outputs);
  29. QBitArray GetInputStates();
  30. QBitArray GetOutputStates();
  31. int ResetOutputs();
  32. private:
  33. SM_HANDLE hndl;
  34. // QTimer *mIOModulesQueryTimer;
  35. unsigned char mInputsBuffer[16];
  36. unsigned char mOutputsBuffer[16];
  37. unsigned char mOutputsStatebuffer[16];
  38. int ReadInputModules();
  39. int WriteOutputModules();
  40. int ReadOutputStates();
  41. int DoAllIOTransactions();
  42. QBitArray CharBufferToBitArray(unsigned char *buf, int size_in_bytes);
  43. public slots:
  44. void IOModulesQueryTimerExpired();
  45. };
  46. #endif // IOMODULESINTERFACE_H