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