Getting "unknown command" with button onclicksend
Posted: Sun Jul 01, 2018 11:26 pm
I have tried all sorts of things to get this to work. I have tried cutting and pasting the Turtles example, scrutinizing the writing, and structure of the sketch, and I always get an error "unknown command" when I try to send an int variable using the button onclicksend.
What gives?
Here is the code:
/* **********************************************************************************************
this sketch is to monitor and send signals when ceetain parameters are met
* ********************************************************************************************** */
#include "MegunoLink.h"
#include "CommandHandler.h" // The serial command handler is defined in here.
CommandHandler<> SerialCommandHandler;
InterfacePanel Airflowpanel;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Uncomment if you would like to use plotting channels
// TimePlot MyPlot("Waveforms"); //"Waveforms" = the taget plotting channel (remember to select this in megunolink)
TimePlot MyPlot; //no channel selected
const int meterpin = A0;// pin that the airflow meter is connected to
const int LEDPin = 13; // Pin the LED is attached to
const int CFrun = 3; //the pin the AKTA input is for
const int Fail1 = 12; // this sends the message of test fail/pass to the AKTA
int metervoltage = 0; // the sensor value
int doublemetervoltage = 0;
int testtime = 0;
float digitalcoeff = 0;
float flowrate = 0;
float Ccmvar = 0;
float setpoint = 0;
long starttime = 0;
long runtime = 0;
long trun = 10000;
bool george;
bool paramselect;
String Start = Start;
void Cmd_SetBoolean(CommandParameter &Parameters)
{
Serial.print("Got new boolean:");
paramselect = Parameters.NextParameterAsInteger();
Serial.println(paramselect);
}
void Cmd_Settesttime(CommandParameter &Parameters)
{
testtime = Parameters.NextParameterAsInteger();
}
void setup()
{
pinMode(LEDPin, OUTPUT);
//pinMode (CFrun,INPUT);
pinMode (Fail1, OUTPUT);
Serial.begin(9600);
SerialCommandHandler.AddCommand(F("SetBoolean"), Cmd_SetBoolean);
SerialCommandHandler.AddCommand(F("Time"), Cmd_Settesttime);
MyPlot.SetTitle("Airflow in Cubic Centimeters per minute (Ccm/min)");
MyPlot.SetXlabel("Time");
MyPlot.SetYlabel("Ccm/min");
MyPlot.SetSeriesProperties("flowrate", Plot::Blue, Plot::Solid, 2, Plot::NoMarker);
lcd.begin(16, 2); //Activates and defines the LCD
lcd.clear();
}
void loop()
{
trun=(testtime*60000);
SerialCommandHandler.Process();
//if (CFrun ==HIGH)
if (trun > 0)
{
starttime = millis();
Airflowpanel.SetText("teststatus", "Testing");
digitalWrite (LEDPin, LOW);
digitalWrite (Fail1, LOW);
//digitalRead(CFrun);
if (paramselect)
{
Airflowpanel.DisableControl("sixCcm");
setpoint = 3.00;
Airflowpanel.SetText("alarmsetpoint", setpoint);
SerialCommandHandler.Process();
}
if (!paramselect)
{
setpoint = 6.00;
Airflowpanel.DisableControl("threeCcm");
Airflowpanel.SetText("alarmsetpoint", setpoint);
SerialCommandHandler.Process();
}
if (george)
{
while (runtime < trun)
{
Airflowpanel.SetText("teststatus", "Testing");
//while (CFrun==HIGH)*/
metervoltage = analogRead(meterpin); //read the sensor
doublemetervoltage = 2 * metervoltage;
digitalcoeff = (5 / 1023);
flowrate = 0.00488759 * doublemetervoltage; //(0.00488759=digitalcoeff);
lcd.setCursor(4, 0);
lcd.print(flowrate);
lcd.print(" ccm");
//Send Data To MegunoLink Pro
MyPlot.SendData(F("flowrate"), flowrate); // "flowrate" is series name, flowrate is the actual data value being ploted
Airflowpanel.SetText("flowrate", flowrate);
Airflowpanel.SetText("MeterVoltage", metervoltage);
Airflowpanel.SetText("doublemetervoltage", doublemetervoltage);
digitalWrite (LEDPin, LOW);
if (flowrate <= setpoint)
{
Airflowpanel.SetText("teststatus", "Testing");
}
if (flowrate >= setpoint)
{
digitalWrite(Fail1, HIGH);
digitalWrite(LEDPin, HIGH);
Airflowpanel.SetText("teststatus", "Test Failed");
Airflowpanel.EnableControl("threeCcm");
Airflowpanel.EnableControl("sixCcm");
george = !george;
}
if (runtime >= trun)
{
Airflowpanel.SetText("teststatus", "Test PASSED");
Airflowpanel.EnableControl("threeCcm");
Airflowpanel.EnableControl("sixCcm");
george = !george;
Serial.print("runtime");
Serial.println(runtime);
}
runtime = millis() - starttime;
Serial.print("runtime");
Serial.println(runtime);
delay(1000);
}
}
}
}
What gives?
Here is the code:
/* **********************************************************************************************
this sketch is to monitor and send signals when ceetain parameters are met
* ********************************************************************************************** */
#include "MegunoLink.h"
#include "CommandHandler.h" // The serial command handler is defined in here.
CommandHandler<> SerialCommandHandler;
InterfacePanel Airflowpanel;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Uncomment if you would like to use plotting channels
// TimePlot MyPlot("Waveforms"); //"Waveforms" = the taget plotting channel (remember to select this in megunolink)
TimePlot MyPlot; //no channel selected
const int meterpin = A0;// pin that the airflow meter is connected to
const int LEDPin = 13; // Pin the LED is attached to
const int CFrun = 3; //the pin the AKTA input is for
const int Fail1 = 12; // this sends the message of test fail/pass to the AKTA
int metervoltage = 0; // the sensor value
int doublemetervoltage = 0;
int testtime = 0;
float digitalcoeff = 0;
float flowrate = 0;
float Ccmvar = 0;
float setpoint = 0;
long starttime = 0;
long runtime = 0;
long trun = 10000;
bool george;
bool paramselect;
String Start = Start;
void Cmd_SetBoolean(CommandParameter &Parameters)
{
Serial.print("Got new boolean:");
paramselect = Parameters.NextParameterAsInteger();
Serial.println(paramselect);
}
void Cmd_Settesttime(CommandParameter &Parameters)
{
testtime = Parameters.NextParameterAsInteger();
}
void setup()
{
pinMode(LEDPin, OUTPUT);
//pinMode (CFrun,INPUT);
pinMode (Fail1, OUTPUT);
Serial.begin(9600);
SerialCommandHandler.AddCommand(F("SetBoolean"), Cmd_SetBoolean);
SerialCommandHandler.AddCommand(F("Time"), Cmd_Settesttime);
MyPlot.SetTitle("Airflow in Cubic Centimeters per minute (Ccm/min)");
MyPlot.SetXlabel("Time");
MyPlot.SetYlabel("Ccm/min");
MyPlot.SetSeriesProperties("flowrate", Plot::Blue, Plot::Solid, 2, Plot::NoMarker);
lcd.begin(16, 2); //Activates and defines the LCD
lcd.clear();
}
void loop()
{
trun=(testtime*60000);
SerialCommandHandler.Process();
//if (CFrun ==HIGH)
if (trun > 0)
{
starttime = millis();
Airflowpanel.SetText("teststatus", "Testing");
digitalWrite (LEDPin, LOW);
digitalWrite (Fail1, LOW);
//digitalRead(CFrun);
if (paramselect)
{
Airflowpanel.DisableControl("sixCcm");
setpoint = 3.00;
Airflowpanel.SetText("alarmsetpoint", setpoint);
SerialCommandHandler.Process();
}
if (!paramselect)
{
setpoint = 6.00;
Airflowpanel.DisableControl("threeCcm");
Airflowpanel.SetText("alarmsetpoint", setpoint);
SerialCommandHandler.Process();
}
if (george)
{
while (runtime < trun)
{
Airflowpanel.SetText("teststatus", "Testing");
//while (CFrun==HIGH)*/
metervoltage = analogRead(meterpin); //read the sensor
doublemetervoltage = 2 * metervoltage;
digitalcoeff = (5 / 1023);
flowrate = 0.00488759 * doublemetervoltage; //(0.00488759=digitalcoeff);
lcd.setCursor(4, 0);
lcd.print(flowrate);
lcd.print(" ccm");
//Send Data To MegunoLink Pro
MyPlot.SendData(F("flowrate"), flowrate); // "flowrate" is series name, flowrate is the actual data value being ploted
Airflowpanel.SetText("flowrate", flowrate);
Airflowpanel.SetText("MeterVoltage", metervoltage);
Airflowpanel.SetText("doublemetervoltage", doublemetervoltage);
digitalWrite (LEDPin, LOW);
if (flowrate <= setpoint)
{
Airflowpanel.SetText("teststatus", "Testing");
}
if (flowrate >= setpoint)
{
digitalWrite(Fail1, HIGH);
digitalWrite(LEDPin, HIGH);
Airflowpanel.SetText("teststatus", "Test Failed");
Airflowpanel.EnableControl("threeCcm");
Airflowpanel.EnableControl("sixCcm");
george = !george;
}
if (runtime >= trun)
{
Airflowpanel.SetText("teststatus", "Test PASSED");
Airflowpanel.EnableControl("threeCcm");
Airflowpanel.EnableControl("sixCcm");
george = !george;
Serial.print("runtime");
Serial.println(runtime);
}
runtime = millis() - starttime;
Serial.print("runtime");
Serial.println(runtime);
delay(1000);
}
}
}
}