calibration support
This commit is contained in:
parent
68231bdb9a
commit
7f804ca9ca
@ -268,7 +268,7 @@ environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.
|
|||||||
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARD_NAME/value=Arduino Micro
|
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.BOARD_NAME/value=Arduino Micro
|
||||||
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/delimiter=\:
|
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/delimiter=\:
|
||||||
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/operation=replace
|
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/operation=replace
|
||||||
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/value=/dev/tty.usbmodemfd1111
|
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.COM_PORT/value=/dev/tty.usbmodemfa131
|
||||||
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/delimiter=\:
|
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/delimiter=\:
|
||||||
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/operation=replace
|
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/operation=replace
|
||||||
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/value=
|
environment/project/it.baeyens.arduino.core.toolChain.release.1518476005/JANTJE.EXTRA.C.COMPILE/value=
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
// Do not remove the include below
|
// Do not remove the include below
|
||||||
#include <HardwareSerial.h>
|
// #include <HardwareSerial.h>
|
||||||
|
|
||||||
#include "MeterBusPowerMaster.h"
|
#include "MeterBusPowerMaster.h"
|
||||||
|
|
||||||
#include "cmd.h"
|
#include "cmd.h"
|
||||||
// #include "test.h"
|
#include "test.h"
|
||||||
#include "uptime.h"
|
#include "uptime.h"
|
||||||
#include "meterBusMaster.h"
|
#include "meterBusMaster.h"
|
||||||
#include "overCurrentProt.h"
|
#include "overCurrentProt.h"
|
||||||
|
|
||||||
|
|
||||||
static CmdServer cmdServer(&Serial);
|
static CmdServer cmdServer(&Serial);
|
||||||
// static TestCmd testCmd;
|
static TestCmd testCmd;
|
||||||
static Uptime uptime;
|
static Uptime uptime;
|
||||||
static MeterBusMaster meterBusMaster;
|
static MeterBusMaster meterBusMaster;
|
||||||
static OverCurrentProt overCurrentProt;
|
static OverCurrentProt overCurrentProt;
|
||||||
@ -20,7 +20,7 @@ static OverCurrentProt overCurrentProt;
|
|||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
cmdServer.begin();
|
cmdServer.begin();
|
||||||
// testCmd.registerYourself(&cmdServer);
|
testCmd.registerYourself(&cmdServer);
|
||||||
overCurrentProt.begin(&cmdServer);
|
overCurrentProt.begin(&cmdServer);
|
||||||
uptime.begin(&cmdServer);
|
uptime.begin(&cmdServer);
|
||||||
meterBusMaster.begin(&cmdServer);
|
meterBusMaster.begin(&cmdServer);
|
||||||
|
@ -39,23 +39,25 @@ uint16_t stringToUInt8(String i, uint8_t index) {
|
|||||||
|
|
||||||
|
|
||||||
String CalibrationSupport::exec(String params) {
|
String CalibrationSupport::exec(String params) {
|
||||||
String res = "failed";
|
String res = "failed";
|
||||||
|
|
||||||
MeterBusMaster *mbm = (MeterBusMaster*)m_meterBusMaster;
|
MeterBusMaster *mbm = (MeterBusMaster*)m_meterBusMaster;
|
||||||
if (params.equalsIgnoreCase("sample") && enable) {
|
if (params.equalsIgnoreCase("sample") && enable) {
|
||||||
mbm->sample();
|
mbm->sample();
|
||||||
res = "done";
|
res = "done";
|
||||||
} else if (params.equalsIgnoreCase("hold") && enable) {
|
} else if (params.equalsIgnoreCase("hold") && enable) {
|
||||||
mbm->hold();
|
mbm->hold();
|
||||||
res = "done";
|
res = "done";
|
||||||
} else if (params.equalsIgnoreCase("enable") && ! enable) {
|
} else if (params.equalsIgnoreCase("enable") && ! enable) {
|
||||||
enable = true;
|
enable = true;
|
||||||
res = "enabled";
|
mbm->m_calibration = true;
|
||||||
} else if (params.equalsIgnoreCase("disable") && enable) {
|
res = "enabled";
|
||||||
enable = false;
|
} else if (params.equalsIgnoreCase("disable") && enable) {
|
||||||
res = "disabled";
|
enable = false;
|
||||||
}
|
mbm->m_calibration = false;
|
||||||
return res;
|
res = "disabled";
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
String MeasureCurrent::exec(String params) {
|
String MeasureCurrent::exec(String params) {
|
||||||
@ -136,7 +138,8 @@ void SendOctets::sendError(uint8_t code) {
|
|||||||
MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this),
|
MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this),
|
||||||
m_calibrationSupport(this),
|
m_calibrationSupport(this),
|
||||||
m_cmdReadyToSend(false), m_cmdReadyFromRecv(false), m_expectResponse(false),
|
m_cmdReadyToSend(false), m_cmdReadyFromRecv(false), m_expectResponse(false),
|
||||||
m_sendBufLen(0), m_recvBufLen(0), m_retransmitCount(0), m_responseCallback(0) {
|
m_sendBufLen(0), m_recvBufLen(0), m_retransmitCount(0), m_responseCallback(0),
|
||||||
|
m_sampling(true), m_calibration(false) {
|
||||||
pinMode(RX_EN_PIN, OUTPUT);
|
pinMode(RX_EN_PIN, OUTPUT);
|
||||||
digitalWrite(RX_EN_PIN, RX_DISABLE);
|
digitalWrite(RX_EN_PIN, RX_DISABLE);
|
||||||
Serial1.begin(2400, SERIAL_8E1);
|
Serial1.begin(2400, SERIAL_8E1);
|
||||||
@ -145,7 +148,7 @@ MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this),
|
|||||||
|
|
||||||
void MeterBusMaster::begin(CmdServer *cmdServer) {
|
void MeterBusMaster::begin(CmdServer *cmdServer) {
|
||||||
m_sendOctets.registerYourself(cmdServer);
|
m_sendOctets.registerYourself(cmdServer);
|
||||||
m_measureCurrent.registerYourself(cmdServer);
|
m_measureCurrent.registerYourself(cmdServer);
|
||||||
m_calibrationSupport.registerYourself(cmdServer);
|
m_calibrationSupport.registerYourself(cmdServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,38 +233,39 @@ void MeterBusMaster::hold() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MeterBusMaster::exec() {
|
void MeterBusMaster::exec() {
|
||||||
static unsigned long cmdSendTime = 0;
|
if (! m_calibration) {
|
||||||
|
static unsigned long cmdSendTime = 0;
|
||||||
|
|
||||||
if (m_cmdReadyToSend) {
|
if (m_cmdReadyToSend) {
|
||||||
sample();
|
sample();
|
||||||
Serial1.write(m_sendBuffer, m_sendBufLen);
|
Serial1.write(m_sendBuffer, m_sendBufLen);
|
||||||
Serial1.flush();
|
Serial1.flush();
|
||||||
hold();
|
hold();
|
||||||
m_cmdReadyToSend = false;
|
m_cmdReadyToSend = false;
|
||||||
m_expectResponse = true;
|
m_expectResponse = true;
|
||||||
cmdSendTime = millis();
|
cmdSendTime = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! m_expectResponse) {
|
if (! m_expectResponse) {
|
||||||
sample();
|
sample();
|
||||||
}
|
}
|
||||||
|
|
||||||
// timeout
|
// timeout
|
||||||
if (m_expectResponse && ((millis() - cmdSendTime) > RESPONSE_TIMEOUT)) {
|
if (m_expectResponse && ((millis() - cmdSendTime) > RESPONSE_TIMEOUT)) {
|
||||||
m_retransmitCount++;
|
m_retransmitCount++;
|
||||||
if (m_retransmitCount > 2) {
|
if (m_retransmitCount > 2) {
|
||||||
m_expectResponse = false;
|
m_expectResponse = false;
|
||||||
prepareResponse(true, 0);
|
prepareResponse(true, 0);
|
||||||
} else {
|
} else {
|
||||||
m_cmdReadyToSend = true;
|
m_cmdReadyToSend = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int serialInChar = Serial1.read();
|
||||||
|
if ((serialInChar != -1) && m_expectResponse) {
|
||||||
|
prepareResponse(false, (uint8_t)serialInChar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int serialInChar = Serial1.read();
|
|
||||||
if ((serialInChar != -1) && m_expectResponse) {
|
|
||||||
prepareResponse(false, (uint8_t)serialInChar);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ private:
|
|||||||
uint8_t m_sendBuffer[SEND_BUFFER_SIZE];
|
uint8_t m_sendBuffer[SEND_BUFFER_SIZE];
|
||||||
uint8_t m_recvBuffer[RECEIVE_BUFFER_SIZE];
|
uint8_t m_recvBuffer[RECEIVE_BUFFER_SIZE];
|
||||||
bool m_sampling;
|
bool m_sampling;
|
||||||
|
bool m_calibration;
|
||||||
void prepareResponse(bool err, uint8_t in);
|
void prepareResponse(bool err, uint8_t in);
|
||||||
void sample();
|
void sample();
|
||||||
void hold();
|
void hold();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user