current measurement
This commit is contained in:
@ -4,13 +4,13 @@
|
||||
#include "MeterBusPowerMaster.h"
|
||||
|
||||
#include "cmd.h"
|
||||
#include "test.h"
|
||||
// #include "test.h"
|
||||
#include "uptime.h"
|
||||
#include "meterBusMaster.h"
|
||||
|
||||
|
||||
static CmdServer cmdServer(&Serial);
|
||||
static TestCmd testCmd;
|
||||
// static TestCmd testCmd;
|
||||
static Uptime uptime;
|
||||
static MeterBusMaster meterBusMaster;
|
||||
|
||||
@ -18,7 +18,7 @@ static MeterBusMaster meterBusMaster;
|
||||
|
||||
void setup() {
|
||||
cmdServer.begin();
|
||||
testCmd.registerYourself(&cmdServer);
|
||||
// testCmd.registerYourself(&cmdServer);
|
||||
uptime.begin(&cmdServer);
|
||||
meterBusMaster.begin(&cmdServer);
|
||||
|
||||
|
@ -37,6 +37,16 @@ uint16_t stringToUInt8(String i, uint8_t index) {
|
||||
// =====================================================================================================
|
||||
|
||||
|
||||
String MeasureCurrent::exec(String params) {
|
||||
int currentInVal = analogRead(CURRENT_IN);
|
||||
|
||||
int current = currentInVal;
|
||||
|
||||
return String() + current;
|
||||
}
|
||||
|
||||
|
||||
|
||||
String SendOctets::exec(String params) {
|
||||
bool err = false;;
|
||||
uint16_t sendBufLen = 0;
|
||||
@ -101,7 +111,7 @@ void SendOctets::sendError(uint8_t code) {
|
||||
// =====================================================================================================
|
||||
|
||||
|
||||
MeterBusMaster::MeterBusMaster() : m_sendOctets(this),
|
||||
MeterBusMaster::MeterBusMaster() : m_sendOctets(this), m_measureCurrent(this),
|
||||
m_cmdReadyToSend(false), m_cmdReadyFromRecv(false), m_expectResponse(false),
|
||||
m_sendBufLen(0), m_recvBufLen(0), m_retransmitCount(0), m_responseCallback(0) {
|
||||
pinMode(RX_EN_PIN, OUTPUT);
|
||||
@ -110,6 +120,12 @@ MeterBusMaster::MeterBusMaster() : m_sendOctets(this),
|
||||
|
||||
}
|
||||
|
||||
void MeterBusMaster::begin(CmdServer *cmdServer) {
|
||||
m_sendOctets.registerYourself(cmdServer);
|
||||
m_measureCurrent.registerYourself(cmdServer);
|
||||
}
|
||||
|
||||
|
||||
uint8_t *MeterBusMaster::getSendBuffer() {
|
||||
return m_expectResponse ? 0 : m_sendBuffer;
|
||||
}
|
||||
@ -175,10 +191,6 @@ void MeterBusMaster::prepareResponse(bool err, uint8_t in) {
|
||||
}
|
||||
}
|
||||
|
||||
void MeterBusMaster::begin(CmdServer *cmdServer) {
|
||||
m_sendOctets.registerYourself(cmdServer);
|
||||
}
|
||||
|
||||
void MeterBusMaster::sample() {
|
||||
if (! m_sampling) {
|
||||
m_sampling = true;
|
||||
|
@ -9,17 +9,18 @@
|
||||
|
||||
const unsigned long RESPONSE_TIMEOUT = 2000; // millisecond
|
||||
|
||||
#define RX_EN_PIN 2
|
||||
#define RX_ENABLE LOW
|
||||
#define RX_DISABLE HIGH
|
||||
const uint8_t RX_EN_PIN = 2;
|
||||
const uint8_t RX_ENABLE = LOW;
|
||||
const uint8_t RX_DISABLE = HIGH;
|
||||
|
||||
const uint8_t CURRENT_IN = A0;
|
||||
|
||||
|
||||
class SendOctets : public Cmd, public ResponseCallback {
|
||||
public:
|
||||
SendOctets(RequestSender *meterBusMaster) : m_meterBusMaster(meterBusMaster) {}
|
||||
virtual String getCmdName() { return "SO"; }
|
||||
virtual String getHelp() { return "Send octets, len first"; }
|
||||
virtual String getHelp() { return "Send octets"; }
|
||||
virtual String exec(String params);
|
||||
virtual void sendResponse(uint8_t *responseBuffer, uint16_t responseBufferLength);
|
||||
virtual void sendError(uint8_t code);
|
||||
@ -27,6 +28,16 @@ private:
|
||||
RequestSender *m_meterBusMaster;
|
||||
};
|
||||
|
||||
class MeasureCurrent : public Cmd {
|
||||
public:
|
||||
MeasureCurrent(RequestSender *meterBusMaster) : m_meterBusMaster(meterBusMaster) {}
|
||||
virtual String getCmdName() { return "MC"; }
|
||||
virtual String getHelp() { return "Measure current"; }
|
||||
virtual String exec(String params);
|
||||
private:
|
||||
RequestSender *m_meterBusMaster;
|
||||
};
|
||||
|
||||
|
||||
const uint8_t SEND_BUFFER_SIZE = 30;
|
||||
const uint8_t RECEIVE_BUFFER_SIZE = 180;
|
||||
@ -40,6 +51,7 @@ public:
|
||||
void sendBufferReady(uint16_t bufLen, ResponseCallback *responseCallback);
|
||||
private:
|
||||
SendOctets m_sendOctets;
|
||||
MeasureCurrent m_measureCurrent;
|
||||
bool m_cmdReadyToSend;
|
||||
bool m_cmdReadyFromRecv;
|
||||
bool m_expectResponse;
|
||||
|
Reference in New Issue
Block a user