Fix lock on MODBUS
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user