Fix lock on MODBUS
This commit is contained in:
@@ -76,6 +76,7 @@ namespace drivers
|
||||
{
|
||||
std::vector<uint16_t> value;
|
||||
delayRequest();
|
||||
auto lock = m_bus.getLock();
|
||||
m_bus.readHoldingRegisters(m_address, REG_Regset, 2, value);
|
||||
if (value.empty())
|
||||
return UINT8_MAX;
|
||||
@@ -86,6 +87,7 @@ namespace drivers
|
||||
{
|
||||
std::vector<uint16_t> value;
|
||||
delayRequest();
|
||||
auto lock = m_bus.getLock();
|
||||
m_bus.readHoldingRegisters(m_address, REG_PartCount, 2, value);
|
||||
if (value.empty())
|
||||
return UINT16_MAX;
|
||||
@@ -103,6 +105,7 @@ namespace drivers
|
||||
{
|
||||
bool ok(true);
|
||||
delayRequest();
|
||||
auto lock = m_bus.getLock();
|
||||
LOG_WARN("Powermeter Counter STOP");
|
||||
ok &= m_bus.writeRegisters(m_address, REG_PartCount, {nullVal, stopAll});
|
||||
delayRequest();
|
||||
@@ -126,6 +129,7 @@ namespace drivers
|
||||
while (retries++ < maxRetries)
|
||||
{
|
||||
delayRequest();
|
||||
auto lock = m_bus.getLock();
|
||||
if (m_bus.readHoldingRegisters(m_address, reg, dataWords, values) && values.size() == dataWords)
|
||||
{
|
||||
floatval_t fv; // potrebbe essere il contrario, vedremo
|
||||
|
||||
Reference in New Issue
Block a user