2222#include " ModbusClient.h"
2323
2424ModbusClient::ModbusClient () :
25- _mb(NULL )
25+ _mb(NULL ),
26+ _defaultId(0x00 )
2627{
2728}
2829
@@ -33,11 +34,12 @@ ModbusClient::~ModbusClient()
3334 }
3435}
3536
36- int ModbusClient::begin (modbus_t * mb)
37+ int ModbusClient::begin (modbus_t * mb, int defaultId )
3738{
3839 end ();
3940
4041 _mb = mb;
42+ _defaultId = defaultId;
4143 if (_mb == NULL ) {
4244 return 0 ;
4345 }
@@ -49,6 +51,8 @@ int ModbusClient::begin(modbus_t* mb)
4951 return 0 ;
5052 }
5153
54+ modbus_set_error_recovery (_mb, MODBUS_ERROR_RECOVERY_PROTOCOL);
55+
5256 return 1 ;
5357}
5458
@@ -64,7 +68,7 @@ void ModbusClient::end()
6468
6569int ModbusClient::readCoil (int address)
6670{
67- return readCoil (0x00 , address);
71+ return readCoil (_defaultId , address);
6872}
6973
7074int ModbusClient::readCoil (int id, int address)
@@ -80,7 +84,7 @@ int ModbusClient::readCoil(int id, int address)
8084
8185int ModbusClient::readCoils (int address, uint8_t values[], int nb)
8286{
83- return readCoils (0x00 , address, values, nb);
87+ return readCoils (_defaultId , address, values, nb);
8488}
8589
8690int ModbusClient::readCoils (int id, int address, uint8_t values[], int nb)
@@ -96,7 +100,7 @@ int ModbusClient::readCoils(int id, int address, uint8_t values[], int nb)
96100
97101int ModbusClient::readDiscreteInput (int address)
98102{
99- return readDiscreteInput (0x00 , address);
103+ return readDiscreteInput (_defaultId , address);
100104}
101105
102106int ModbusClient::readDiscreteInput (int id, int address)
@@ -112,7 +116,7 @@ int ModbusClient::readDiscreteInput(int id, int address)
112116
113117int ModbusClient::readDiscreteInputs (int address, uint8_t values[], int nb)
114118{
115- return readDiscreteInputs (0x00 , address, values, nb);
119+ return readDiscreteInputs (_defaultId , address, values, nb);
116120}
117121
118122int ModbusClient::readDiscreteInputs (int id, int address, uint8_t values[], int nb)
@@ -128,7 +132,7 @@ int ModbusClient::readDiscreteInputs(int id, int address, uint8_t values[], int
128132
129133long ModbusClient::readHoldingRegister (int address)
130134{
131- return readHoldingRegister (0x00 , address);
135+ return readHoldingRegister (_defaultId , address);
132136}
133137
134138long ModbusClient::readHoldingRegister (int id, int address)
@@ -144,7 +148,7 @@ long ModbusClient::readHoldingRegister(int id, int address)
144148
145149int ModbusClient::readHoldingRegisters (int address, uint16_t values[], int nb)
146150{
147- return readHoldingRegisters (0x00 , address, values, nb);
151+ return readHoldingRegisters (_defaultId , address, values, nb);
148152}
149153
150154int ModbusClient::readHoldingRegisters (int id, int address, uint16_t values[], int nb)
@@ -160,7 +164,7 @@ int ModbusClient::readHoldingRegisters(int id, int address, uint16_t values[], i
160164
161165long ModbusClient::readInputRegister (int address)
162166{
163- return readInputRegister (0x00 , address);
167+ return readInputRegister (_defaultId , address);
164168}
165169
166170long ModbusClient::readInputRegister (int id, int address)
@@ -176,7 +180,7 @@ long ModbusClient::readInputRegister(int id, int address)
176180
177181int ModbusClient::readInputRegisters (int address, uint16_t values[], int nb)
178182{
179- return readInputRegisters (0x00 , address, values, nb);
183+ return readInputRegisters (_defaultId , address, values, nb);
180184}
181185
182186int ModbusClient::readInputRegisters (int id, int address, uint16_t values[], int nb)
@@ -192,7 +196,7 @@ int ModbusClient::readInputRegisters(int id, int address, uint16_t values[], int
192196
193197int ModbusClient::writeCoil (int address, uint8_t value)
194198{
195- return writeCoil (0x00 , address, value);
199+ return writeCoil (_defaultId , address, value);
196200}
197201
198202int ModbusClient::writeCoil (int id, int address, uint8_t value)
@@ -208,7 +212,7 @@ int ModbusClient::writeCoil(int id, int address, uint8_t value)
208212
209213int ModbusClient::writeCoils (int address, const uint8_t values[], int nb)
210214{
211- return writeCoils (0x00 , address, values, nb);
215+ return writeCoils (_defaultId , address, values, nb);
212216}
213217
214218int ModbusClient::writeCoils (int id, int address, const uint8_t values[], int nb)
@@ -224,7 +228,7 @@ int ModbusClient::writeCoils(int id, int address, const uint8_t values[], int nb
224228
225229int ModbusClient::writeHoldingRegister (int address, uint16_t value)
226230{
227- return writeHoldingRegister (0x00 , address, value);
231+ return writeHoldingRegister (_defaultId , address, value);
228232}
229233
230234int ModbusClient::writeHoldingRegister (int id, int address, uint16_t value)
@@ -240,7 +244,7 @@ int ModbusClient::writeHoldingRegister(int id, int address, uint16_t value)
240244
241245int ModbusClient::writeHoldingRegisters (int address, const uint16_t values[], int nb)
242246{
243- return writeHoldingRegisters (0x00 , address, values, nb);
247+ return writeHoldingRegisters (_defaultId , address, values, nb);
244248}
245249
246250int ModbusClient::writeHoldingRegisters (int id, int address, const uint16_t values[], int nb)
@@ -256,7 +260,7 @@ int ModbusClient::writeHoldingRegisters(int id, int address, const uint16_t valu
256260
257261int ModbusClient::maskWriteRegister (int address, uint16_t andMask, uint16_t orMask)
258262{
259- return maskWriteRegister (0x00 , address, andMask, orMask);
263+ return maskWriteRegister (_defaultId , address, andMask, orMask);
260264}
261265
262266int ModbusClient::maskWriteRegister (int id, int address, uint16_t andMask, uint16_t orMask)
@@ -272,7 +276,7 @@ int ModbusClient::maskWriteRegister(int id, int address, uint16_t andMask, uint1
272276
273277int ModbusClient::writeAndReadRegisters (int writeAddress, const uint16_t writeValues[], int writeNb, int readAddress, uint16_t readValues[], int readNb)
274278{
275- return writeAndReadRegisters (0x00 , writeAddress, writeValues, writeNb, readAddress, readValues, readNb);
279+ return writeAndReadRegisters (_defaultId , writeAddress, writeValues, writeNb, readAddress, readValues, readNb);
276280}
277281
278282int ModbusClient::writeAndReadRegisters (int id, int writeAddress, const uint16_t writeValues[], int writeNb, int readAddress, uint16_t readValues[], int readNb)
0 commit comments