Fix lock on MODBUS

This commit is contained in:
Emanuele Trabattoni
2025-07-22 11:15:57 +02:00
parent 146a2b558b
commit 16bb029e93
5 changed files with 21 additions and 8 deletions

View File

@@ -22,6 +22,7 @@ namespace drivers
}
while (retries++ < maxRetries)
{
auto lock = m_bus.getLock();
if (m_bus.readHoldingRegisters(m_address, REG_TEMP + ch, 1, rawT) && !rawT.empty())
{
return rawT.front() / 10.0f;
@@ -40,6 +41,7 @@ namespace drivers
std::vector<float> out;
while (retries++ < maxRetries)
{
auto lock = m_bus.getLock();
if (m_bus.readHoldingRegisters(m_address, REG_TEMP, getNum(), rawT) && !rawT.empty())
{
out.reserve(rawT.size());
@@ -67,6 +69,7 @@ namespace drivers
{ // convert to decimal degreees to register value
while (retries++ < maxRetries)
{
auto lock = m_bus.getLock();
if (m_bus.writeRegister(m_address, REG_TEMPCORR + channel, v*10))
{
channel++;
@@ -88,6 +91,7 @@ namespace drivers
while (retries++ < maxRetries)
{
auto lock = m_bus.getLock();
if (m_bus.readHoldingRegisters(m_address, REG_TEMPCORR, getNum(), rawV))
{
out.reserve(rawV.size());
@@ -114,6 +118,7 @@ namespace drivers
std::vector<uint16_t> rawT;
while (retries++ < maxRetries)
{
auto lock = m_bus.getLock();
if (m_bus.readHoldingRegisters(m_address, REG_TEMP, T_MAX, rawT))
{
for (auto v : rawT)