2017-05-19 Fred Gleason <fredg@paravelsystems.com>

* Added support for the 'GPO Set' ['GO'] RML to the Modbus driver
	in 'ripcd/modbus.cpp' and 'ripcd/modbus.h'.
This commit is contained in:
Fred Gleason
2017-05-19 19:08:39 -04:00
parent c296491149
commit 5d055932b1
4 changed files with 188 additions and 6 deletions

View File

@@ -21,8 +21,10 @@
#ifndef MODBUS_H
#define MODBUS_H
#include <queue>
#include <vector>
#include <qsignalmapper.h>
#include <qsocket.h>
#include <qtimer.h>
@@ -53,10 +55,13 @@ class Modbus : public Switcher
void readyReadData();
void errorData(int err);
void pollInputs();
void resetStateData(int line);
void watchdogData();
private:
void ProcessInputByte(char byte,int base);
void SetCoil(int line,bool state);
bool InputState(int line) const;
int modbus_istate;
int modbus_input_bytes;
std::vector<char> modbus_input_states;
@@ -68,6 +73,12 @@ class Modbus : public Switcher
uint16_t modbus_ip_port;
int modbus_gpis;
int modbus_gpos;
std::queue<int> modbus_coil_lines;
std::queue<bool> modbus_coil_states;
bool modbus_busy;
QSignalMapper *modbus_reset_mapper;
std::vector<QTimer *> modbus_reset_timers;
std::vector<bool> modbus_reset_states;
};