Made basic output of values, slow but starting to be actually functional

This commit is contained in:
TraYali 2024-03-18 23:48:37 +01:00
parent 6cfdcc13ce
commit 30a39aff3e
9 changed files with 56 additions and 9 deletions

View file

@ -84,7 +84,17 @@ void Dtu::updateMicroinverters() {
std::vector<std::thread>::iterator updateThreadsIterator = updateThreads.begin();
while(updateThreadsIterator != updateThreads.end()) {
updateThreadsIterator->join();
updateThreadsIterator++;
updateThreadsIterator->join(); updateThreadsIterator++;
}
std::cout << std::endl;
}
void Dtu::printMicroinverters() {
std::cout << "DTU:" << std::endl;
std::vector<Microinverter>::iterator microinvertersIterator = this->microinverters.begin();
while(microinvertersIterator != this->microinverters.end()) {
microinvertersIterator->printPorts();
std::cout << std::endl;
microinvertersIterator++;
}
}

View file

@ -1,4 +1,6 @@
#include <thread>
#include <iostream>
#include <memory>
#include "modbus.h"
@ -26,4 +28,15 @@ void Microinverter::updatePorts() {
updateThreadsIterator->join();
updateThreadsIterator++;
}
}
void Microinverter::printPorts() {
std::cout << "Microinverter: " << this->serialNumber << std::endl;
std::vector<Port>::iterator portsIterator = this->ports.begin();
while(portsIterator != this->ports.end()) {
portsIterator->printParameters();
std::cout << std::endl;
portsIterator++;
}
}

View file

@ -55,6 +55,18 @@ void Port::updateParameters() {
while (parametersIterator != this->parameters.end()) {
parametersIterator->get()->updateValue(this->modbus_context, this->modbus_context_mutex, this->portStartAddress);
parametersIterator++;
break;
}
}
void Port::printParameters() {
std::vector<std::shared_ptr<PortParameter>>::iterator parametersIterator = this->parameters.begin();
if(parametersIterator != this->parameters.end()) {
std::cout << "|";
}
while(parametersIterator != this->parameters.end()) {
std::cout << " " << parametersIterator->get()->name << ": " << parametersIterator->get()->getOutputValue() << " |";
parametersIterator++;
}
}

View file

@ -25,6 +25,9 @@ PortParameterPortNumber::PortParameterPortNumber() : PortParameterInt("portNumbe
void PortParameterPortNumber::setValueFromRegisters(uint16_t *readArray, int registerCount) {
if (registerCount > 0) {
this->value.i = readArray[0];
std::stringstream valueStringStream;
valueStringStream << std::hex << this->value.i;
this->value.i = valueStringStream.str().at(0) - '0';
}
}

View file

@ -60,7 +60,8 @@ void PortParameterFloat::setValueFromRegisters(uint16_t *readArray, int register
}
std::string PortParameterFloat::getOutputValue() {
return std::to_string(this->value.f);
std::string separator{"_age"};
return std::to_string(this->value.f).append(separator.append(std::to_string(this->age)));
}
PortParameterInt::PortParameterInt(std::string name, uint16_t parameterAddressOffset, int registerSize) : PortParameter(name, parameterAddressOffset, registerSize) {
@ -81,5 +82,6 @@ void PortParameterInt::setValueFromRegisters(uint16_t *readArray, int registerCo
}
std::string PortParameterInt::getOutputValue() {
return std::to_string(this->value.i);
std::string separator{"_age"};
return std::to_string(this->value.i).append(separator.append(std::to_string(this->age)));
}