Added CLI
This commit is contained in:
parent
b63bd9ae42
commit
70b27a0c07
8 changed files with 151 additions and 32 deletions
|
|
@ -1,6 +1,6 @@
|
|||
#include <vector>
|
||||
#include <iostream>
|
||||
// #include <thread>
|
||||
#include <string>
|
||||
|
||||
#include "modbus.h"
|
||||
|
||||
|
|
@ -9,15 +9,13 @@
|
|||
|
||||
#include "portParameters.h"
|
||||
|
||||
// struct _modbus;
|
||||
// typedef _modbus modbus_t;
|
||||
|
||||
Dtu::Dtu(const char *ip_address, int port) {
|
||||
class modbus modbus{ip_address, (uint16_t) port};
|
||||
this->modbus = std::make_shared<class modbus>(modbus);
|
||||
|
||||
if (!this->modbus.get()->modbus_connect()) {
|
||||
std::cerr << "conn_error";
|
||||
std::cerr << "conn_error" << std::endl;
|
||||
this->connected = false;
|
||||
}
|
||||
else {
|
||||
|
|
@ -98,6 +96,14 @@ void Dtu::updateMicroinverters() {
|
|||
// std::cout << std::endl;
|
||||
}
|
||||
|
||||
void Dtu::updateMicroinverters(std::vector<std::string> ¶metersToGet) {
|
||||
std::vector<Microinverter>::iterator microinvertersIterator = this->microinverters.begin();
|
||||
while(microinvertersIterator != this->microinverters.end()) {
|
||||
microinvertersIterator->updatePorts(parametersToGet);
|
||||
microinvertersIterator++;
|
||||
}
|
||||
}
|
||||
|
||||
void Dtu::printMicroinverters() {
|
||||
std::cout << "DTU:" << std::endl;
|
||||
std::vector<Microinverter>::iterator microinvertersIterator = this->microinverters.begin();
|
||||
|
|
@ -106,4 +112,13 @@ void Dtu::printMicroinverters() {
|
|||
std::cout << std::endl;
|
||||
microinvertersIterator++;
|
||||
}
|
||||
}
|
||||
|
||||
void Dtu::printMicroinverters(std::vector<std::string> ¶metersToGet) {
|
||||
std::cout << "DTU:" << std::endl;
|
||||
std::vector<Microinverter>::iterator microinvertersIterator = this->microinverters.begin();
|
||||
while(microinvertersIterator != this->microinverters.end()) {
|
||||
microinvertersIterator->printPorts(parametersToGet);
|
||||
microinvertersIterator++;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
// #include <thread>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "modbus.h"
|
||||
|
||||
|
|
@ -27,6 +28,14 @@ void Microinverter::updatePorts() {
|
|||
// }
|
||||
}
|
||||
|
||||
void Microinverter::updatePorts(std::vector<std::string> ¶metersToGet) {
|
||||
std::vector<Port>::iterator portsIterator = this->ports.begin();
|
||||
while(portsIterator != this->ports.end()) {
|
||||
portsIterator->updateParameters(parametersToGet);
|
||||
portsIterator++;
|
||||
}
|
||||
}
|
||||
|
||||
void Microinverter::printPorts() {
|
||||
std::cout << "Microinverter: " << this->serialNumber << std::endl;
|
||||
|
||||
|
|
@ -36,4 +45,15 @@ void Microinverter::printPorts() {
|
|||
std::cout << std::endl;
|
||||
portsIterator++;
|
||||
}
|
||||
}
|
||||
|
||||
void Microinverter::printPorts(std::vector<std::string> ¶metersToGet) {
|
||||
std::cout << "Microinverter: " << this->serialNumber << std::endl;
|
||||
|
||||
std::vector<Port>::iterator portsIterator = this->ports.begin();
|
||||
while(portsIterator != this->ports.end()) {
|
||||
portsIterator->printParameters(parametersToGet);
|
||||
std::cout << std::endl;
|
||||
portsIterator++;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,6 @@
|
|||
#include <string>
|
||||
#include <iostream>
|
||||
#include <cmath>
|
||||
#include <memory>
|
||||
|
||||
#include "modbus.h"
|
||||
|
||||
|
|
@ -11,7 +10,6 @@
|
|||
|
||||
Port::Port(std::shared_ptr<class modbus> modbus, uint16_t portStartAddress) {
|
||||
this->modbus = modbus;
|
||||
// this->modbus_context_mutex = modbus_context_mutex;
|
||||
|
||||
this->portStartAddress = portStartAddress;
|
||||
|
||||
|
|
@ -52,6 +50,21 @@ void Port::populateParameters() {
|
|||
this->parameters.push_back(std::make_shared<PortParameterLinkStatus>());
|
||||
}
|
||||
|
||||
std::pair<std::shared_ptr<PortParameter>, bool> Port::getParameterByName(std::string name) {
|
||||
std::pair<std::shared_ptr<PortParameter>, bool> result;
|
||||
result.second = false;
|
||||
|
||||
std::vector<std::shared_ptr<PortParameter>>::iterator parametersIterator = this->parameters.begin();
|
||||
while(parametersIterator != this->parameters.end() && !result.second) {
|
||||
if(parametersIterator->get()->name == name) {
|
||||
result.first = *parametersIterator;
|
||||
result.second = true;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void Port::fixCurrent() {
|
||||
if(this->currentFixed) {
|
||||
return;
|
||||
|
|
@ -80,6 +93,20 @@ void Port::updateParameters() {
|
|||
this->fixCurrent();
|
||||
}
|
||||
|
||||
void Port::updateParameters(std::vector<std::string> ¶metersToGet) {
|
||||
std::vector<std::string>::iterator parametersToGetIterator = parametersToGet.begin();
|
||||
while(parametersToGetIterator != parametersToGet.end()) {
|
||||
std::pair<std::shared_ptr<PortParameter>, bool> parameterPair;
|
||||
|
||||
parameterPair = this->getParameterByName(*parametersToGetIterator);
|
||||
if(parameterPair.second) {
|
||||
parameterPair.first->updateValue(this->modbus, this->portStartAddress);
|
||||
}
|
||||
|
||||
parametersToGetIterator++;
|
||||
}
|
||||
}
|
||||
|
||||
void Port::printParameters() {
|
||||
std::vector<std::shared_ptr<PortParameter>>::iterator parametersIterator = this->parameters.begin();
|
||||
|
||||
|
|
@ -91,4 +118,22 @@ void Port::printParameters() {
|
|||
std::cout << " " << parametersIterator->get()->name << ": " << parametersIterator->get()->getOutputValue() << " |";
|
||||
parametersIterator++;
|
||||
}
|
||||
}
|
||||
|
||||
void Port::printParameters(std::vector<std::string> ¶metersToGet) {
|
||||
std::vector<std::string>::iterator parametersToGetIterator = parametersToGet.begin();
|
||||
|
||||
if(parametersToGetIterator != parametersToGet.end()) {
|
||||
std::cout << "|";
|
||||
}
|
||||
|
||||
while(parametersToGetIterator != parametersToGet.end()) {
|
||||
std::pair<std::shared_ptr<PortParameter>, bool> parameterPair;
|
||||
|
||||
parameterPair = this->getParameterByName(*parametersToGetIterator);
|
||||
if(parameterPair.second) {
|
||||
std::cout << " " << parameterPair.first->name << ": " << parameterPair.first->getOutputValue() << " |";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue