Ass register class for modbus comms, without hw addresses yet
This commit is contained in:
parent
80bde0bdb5
commit
0857a26f0b
19
Modbus/inc/ModbusRegister.h
Normal file
19
Modbus/inc/ModbusRegister.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#ifndef MODBUSREGISTER_H_
|
||||||
|
#define MODBUSREGISTER_H_
|
||||||
|
|
||||||
|
#include "ModbusLeader.h"
|
||||||
|
|
||||||
|
class ModbusRegister {
|
||||||
|
public:
|
||||||
|
ModbusRegister(ModbusMaster *master, int address, bool holdingRegister = true);
|
||||||
|
ModbusRegister(const ModbusRegister &) = delete;
|
||||||
|
virtual ~ModbusRegister();
|
||||||
|
int read();
|
||||||
|
void write(int value);
|
||||||
|
private:
|
||||||
|
ModbusMaster *m;
|
||||||
|
int addr;
|
||||||
|
bool hr;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MODBUSREGISTER_H_ */
|
||||||
27
Modbus/src/ModbusRegister.cpp
Normal file
27
Modbus/src/ModbusRegister.cpp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#include "ModbusRegister.h"
|
||||||
|
|
||||||
|
ModbusRegister::ModbusRegister(ModbusMaster *master, int address, bool holdingRegister)
|
||||||
|
:m(master), addr(address), hr(holdingRegister) {
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ModbusRegister::~ModbusRegister() {
|
||||||
|
// TODO Auto-generated destructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
int ModbusRegister::read() {
|
||||||
|
uint8_t result = hr ? m->readHoldingRegisters(addr, 1) : m->readInputRegisters(addr, 1) ;
|
||||||
|
// check if we were able to read
|
||||||
|
if (result == m->ku8MBSuccess) {
|
||||||
|
return m->getResponseBuffer(0);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModbusRegister::write(int value)
|
||||||
|
{
|
||||||
|
// write only if not
|
||||||
|
if(hr) m->writeSingleRegister(addr, value); // not checking if write succeeds
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user