From d62fda675aa3714e462424cf7f4fc72e329acc15 Mon Sep 17 00:00:00 2001 From: trabus322 Date: Tue, 19 Mar 2024 13:02:41 +0100 Subject: [PATCH] Removed multithtreading (thanks windows) --- inc/hoymiles/dtu.h | 4 ++-- inc/hoymiles/microinverter.h | 6 +++--- inc/hoymiles/port.h | 6 +++--- inc/hoymiles/portParameters/portParametersGeneric.h | 4 ++-- src/hoymiles/dtu.cpp | 11 +++++------ src/hoymiles/microinverter.cpp | 4 ++-- src/hoymiles/port.cpp | 6 +++--- src/hoymiles/portParameters/portParametersGeneric.cpp | 6 +++--- 8 files changed, 23 insertions(+), 24 deletions(-) diff --git a/inc/hoymiles/dtu.h b/inc/hoymiles/dtu.h index b7819dd..f378735 100644 --- a/inc/hoymiles/dtu.h +++ b/inc/hoymiles/dtu.h @@ -3,7 +3,7 @@ #include #include -#include +// #include #include "microinverter.h" @@ -13,7 +13,7 @@ typedef _modbus modbus_t; class Dtu { private: std::shared_ptr modbus_context; - std::mutex modbus_context_mutex; + // std::mutex modbus_context_mutex; std::vector microinverters; diff --git a/inc/hoymiles/microinverter.h b/inc/hoymiles/microinverter.h index 3831438..2fde04e 100644 --- a/inc/hoymiles/microinverter.h +++ b/inc/hoymiles/microinverter.h @@ -3,7 +3,7 @@ #include #include -#include +// #include #include "port.h" @@ -13,12 +13,12 @@ typedef _modbus modbus_t; class Microinverter { private: std::shared_ptr modbus_context; - std::mutex *modbus_context_mutex; + // std::mutex *modbus_context_mutex; public: - Microinverter(std::shared_ptr modbus_context, std::mutex *modbus_context_mutex, long serialNumber); + Microinverter(std::shared_ptr modbus_context, long serialNumber); long serialNumber; diff --git a/inc/hoymiles/port.h b/inc/hoymiles/port.h index 44d6e19..0737df3 100644 --- a/inc/hoymiles/port.h +++ b/inc/hoymiles/port.h @@ -5,7 +5,7 @@ #include #include #include -#include +// #include #include "portParametersGeneric.h" @@ -15,7 +15,7 @@ typedef _modbus modbus_t; class Port { private: std::shared_ptr modbus_context; - std::mutex *modbus_context_mutex; + // std::mutex *modbus_context_mutex; uint16_t portStartAddress; @@ -25,7 +25,7 @@ class Port { bool currentFixed; public: - Port(std::shared_ptr modbus_context, std::mutex *modbus_context_mutex, uint16_t portStartAddress); + Port(std::shared_ptr modbus_context, uint16_t portStartAddress); std::vector> parameters; diff --git a/inc/hoymiles/portParameters/portParametersGeneric.h b/inc/hoymiles/portParameters/portParametersGeneric.h index b9578bd..0c4e895 100644 --- a/inc/hoymiles/portParameters/portParametersGeneric.h +++ b/inc/hoymiles/portParameters/portParametersGeneric.h @@ -4,7 +4,7 @@ #include #include #include -#include +// #include struct _modbus; typedef _modbus modbus_t; @@ -40,7 +40,7 @@ class PortParameter { virtual std::string getOutputValue(); - void updateValue(std::shared_ptr modbus_context, std::mutex *modbus_context_mutex, uint16_t portStartAddress); + void updateValue(std::shared_ptr modbus_context, uint16_t portStartAddress); }; class PortParameterFloat : virtual public PortParameter { diff --git a/src/hoymiles/dtu.cpp b/src/hoymiles/dtu.cpp index f247df2..7c623d1 100644 --- a/src/hoymiles/dtu.cpp +++ b/src/hoymiles/dtu.cpp @@ -17,7 +17,6 @@ Dtu::Dtu(const char *ip_address, int port) { if (modbus_connect(*this->modbus_context.get()) == -1) { std::cerr << "conn_error"; - modbus_free(*this->modbus_context.get()); this->connected = false; } else { @@ -45,10 +44,10 @@ void Dtu::populateMicroinverters() { int registerCount; registerCount = modbus_read_registers(*this->modbus_context.get(), portStartAddress + 0x0021, 1, readArray); while(registerCount != -1 && readArray[0] == 0x700) { - Port port{ this->modbus_context, &this->modbus_context_mutex, portStartAddress }; + Port port{ this->modbus_context, portStartAddress }; PortParameterMicroinverterSerialNumber portParameterMicroinverterSerialNumber{}; - portParameterMicroinverterSerialNumber.updateValue(this->modbus_context, &this->modbus_context_mutex, portStartAddress); + portParameterMicroinverterSerialNumber.updateValue(this->modbus_context, portStartAddress); long serialNumber = portParameterMicroinverterSerialNumber.getValue().first.i; std::pair getMicroinverterBySerialNumber = this->getMicroinverterBySerialNumber(serialNumber); @@ -56,16 +55,16 @@ void Dtu::populateMicroinverters() { getMicroinverterBySerialNumber.second->ports.push_back(port); } else { - Microinverter microinverter{ this->modbus_context, &this->modbus_context_mutex, serialNumber }; + Microinverter microinverter{ this->modbus_context, serialNumber }; this->microinverters.push_back(microinverter); this->microinverters.back().ports.push_back(port); } portStartAddress += 0x0028; - this->modbus_context_mutex.lock(); + // this->modbus_context_mutex.lock(); registerCount = modbus_read_registers(*this->modbus_context.get(), portStartAddress + 0x0021, 1, readArray); - this->modbus_context_mutex.unlock(); + // this->modbus_context_mutex.unlock(); } } diff --git a/src/hoymiles/microinverter.cpp b/src/hoymiles/microinverter.cpp index 0a92f1b..74aad6a 100644 --- a/src/hoymiles/microinverter.cpp +++ b/src/hoymiles/microinverter.cpp @@ -10,9 +10,9 @@ struct _modbus; typedef _modbus modbus_t; -Microinverter::Microinverter(std::shared_ptr modbus_context, std::mutex *modbus_context_mutex, long serialNumber) { +Microinverter::Microinverter(std::shared_ptr modbus_context, long serialNumber) { this->modbus_context = modbus_context; - this->modbus_context_mutex = modbus_context_mutex; + // this->modbus_context_mutex = modbus_context_mutex; this->serialNumber = serialNumber; } diff --git a/src/hoymiles/port.cpp b/src/hoymiles/port.cpp index 7d507b2..c121c1a 100644 --- a/src/hoymiles/port.cpp +++ b/src/hoymiles/port.cpp @@ -9,9 +9,9 @@ #include "port.h" #include "portParameters.h" -Port::Port(std::shared_ptr modbus_context, std::mutex *modbus_context_mutex, uint16_t portStartAddress) { +Port::Port(std::shared_ptr modbus_context, uint16_t portStartAddress) { this->modbus_context = modbus_context; - this->modbus_context_mutex = modbus_context_mutex; + // this->modbus_context_mutex = modbus_context_mutex; this->portStartAddress = portStartAddress; @@ -71,7 +71,7 @@ void Port::fixCurrent() { void Port::updateParameters() { std::vector>::iterator parametersIterator{this->parameters.begin()}; while (parametersIterator != this->parameters.end()) { - parametersIterator->get()->updateValue(this->modbus_context, this->modbus_context_mutex, this->portStartAddress); + parametersIterator->get()->updateValue(this->modbus_context, this->portStartAddress); parametersIterator++; } this->fixCurrent(); diff --git a/src/hoymiles/portParameters/portParametersGeneric.cpp b/src/hoymiles/portParameters/portParametersGeneric.cpp index ea6ed36..cb6ea83 100644 --- a/src/hoymiles/portParameters/portParametersGeneric.cpp +++ b/src/hoymiles/portParameters/portParametersGeneric.cpp @@ -30,13 +30,13 @@ std::pair modbus_context, std::mutex *modbus_context_mutex, uint16_t portStartAddress) { +void PortParameter::updateValue(std::shared_ptr modbus_context, uint16_t portStartAddress) { uint16_t readArray[this->registerSize]; int registerCount; - modbus_context_mutex->lock(); + // modbus_context_mutex->lock(); registerCount = modbus_read_registers(*modbus_context.get(), portStartAddress + this->parameterAddressOffset, this->registerSize, readArray); - modbus_context_mutex->unlock(); + // modbus_context_mutex->unlock(); if(registerCount == -1){ this->age++;