try to work around timeouts

This commit is contained in:
Javier Peletier
2020-12-16 21:47:55 +01:00
parent 9c7b5313e3
commit d9edc624fe
5 changed files with 64 additions and 49 deletions
+10 -5
View File
@@ -36,11 +36,6 @@ func New(config *Config) (Modbus, error) {
handler.StopBits = config.StopBits
handler.Timeout = config.Timeout
err := handler.Connect()
if err != nil {
return nil, err
}
return &modbus{
handler: handler,
client: gmodbus.NewClient(handler),
@@ -55,6 +50,11 @@ func (mb *modbus) ReadRegister(slaveID byte, address uint16, quantity uint16) (r
mb.lock.Lock()
defer mb.lock.Unlock()
mb.handler.SlaveId = slaveID
err = mb.handler.Connect()
if err != nil {
return nil, err
}
defer mb.handler.Close()
results, err = mb.client.ReadHoldingRegisters(address-1, quantity)
return results, err
@@ -64,6 +64,11 @@ func (mb *modbus) WriteRegister(slaveID byte, address uint16, value uint16) (res
mb.lock.Lock()
defer mb.lock.Unlock()
mb.handler.SlaveId = slaveID
err = mb.handler.Connect()
if err != nil {
return nil, err
}
defer mb.handler.Close()
results, err = mb.client.WriteSingleRegister(address-1, value)
return results, err