Removed not needed config for pen. Use inkscape interface.
This commit is contained in:
@@ -72,8 +72,8 @@ extern SerialCommand SCmd;
|
||||
|
||||
extern int penMin;
|
||||
extern int penMax;
|
||||
extern int penUpPos;
|
||||
extern int penDownPos;
|
||||
extern int g_iPEN_UP_POS;
|
||||
extern int g_iPEN_DOWN_POS;
|
||||
extern int servoRateUp;
|
||||
extern int servoRateDown;
|
||||
extern long rotStepError;
|
||||
|
||||
@@ -57,7 +57,7 @@ button { margin-top: 18px; border: 0; background: #0b5ed7; color: white; padding
|
||||
let lastSeq = 0;
|
||||
|
||||
async function loadConfig() {
|
||||
const resp = await fetch('/api/config');
|
||||
const resp = await fetch('/api/config', { cache: 'no-store' });
|
||||
if (!resp.ok) throw new Error('Konfiguration konnte nicht geladen werden');
|
||||
return resp.json();
|
||||
}
|
||||
@@ -92,6 +92,8 @@ async function saveConfig() {
|
||||
const text = await resp.text();
|
||||
throw new Error(text || 'Speichern fehlgeschlagen');
|
||||
}
|
||||
const saved = await resp.json();
|
||||
renderForm(saved);
|
||||
status.textContent = 'Gespeichert';
|
||||
}
|
||||
|
||||
@@ -143,6 +145,9 @@ void handleGetConfig() {
|
||||
server.send(500, "text/plain", "Config storage not available");
|
||||
return;
|
||||
}
|
||||
server.sendHeader("Cache-Control", "no-store, no-cache, must-revalidate");
|
||||
server.sendHeader("Pragma", "no-cache");
|
||||
server.sendHeader("Expires", "0");
|
||||
server.send(200, "application/json", buildConfigJson());
|
||||
}
|
||||
|
||||
@@ -159,17 +164,18 @@ void handlePostConfig() {
|
||||
|
||||
String error;
|
||||
if (!applyConfigJson(server.arg("plain"), error)) {
|
||||
Log(String("Config JSON fehlerhaft: ") + error);
|
||||
server.send(400, "text/plain", error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!saveConfigToFile()) {
|
||||
Log("Config konnte nicht gespeichert werden");
|
||||
server.send(500, "text/plain", "Could not save config");
|
||||
return;
|
||||
}
|
||||
|
||||
// penState = penUpPos;
|
||||
// penServo.write(penState);
|
||||
Log(String("Config gespeichert: penUpPos=") + g_iPEN_UP_POS + ", penDownPos=" + g_iPEN_DOWN_POS);
|
||||
server.send(200, "application/json", buildConfigJson());
|
||||
}
|
||||
|
||||
@@ -180,11 +186,19 @@ void handleGetLogs() {
|
||||
}
|
||||
server.send(200, "application/json", buildLogsJson(since));
|
||||
}
|
||||
|
||||
void handleNotFound() {
|
||||
if (server.uri().startsWith("/api/")) {
|
||||
server.send(404, "text/plain", "API endpoint not found");
|
||||
return;
|
||||
}
|
||||
handleRoot();
|
||||
}
|
||||
} // namespace
|
||||
|
||||
ConfigParameter configParameters[] = {
|
||||
{"penUpPos", &penUpPos, "Pen Up Position", 5},
|
||||
{"penDownPos", &penDownPos, "Pen Down Position", 20},
|
||||
// {"penUpPos", &g_iPEN_UP_POS, "Pen Up Position", 5},
|
||||
// {"penDownPos", &g_iPEN_DOWN_POS, "Pen Down Position", 20},
|
||||
};
|
||||
|
||||
const size_t configParameterCount = sizeof(configParameters) / sizeof(configParameters[0]);
|
||||
@@ -203,6 +217,7 @@ bool loadConfigFromFile() {
|
||||
|
||||
File file = SPIFFS.open(kConfigPath, "r");
|
||||
if (!file) {
|
||||
Log("config.json fehlt, defaults werden gespeichert");
|
||||
return saveConfigToFile();
|
||||
}
|
||||
|
||||
@@ -210,6 +225,7 @@ bool loadConfigFromFile() {
|
||||
DeserializationError err = deserializeJson(doc, file);
|
||||
file.close();
|
||||
if (err) {
|
||||
Log("config.json ist ungueltig, defaults werden gespeichert");
|
||||
return saveConfigToFile();
|
||||
}
|
||||
|
||||
@@ -230,6 +246,7 @@ bool loadConfigFromFile() {
|
||||
param->description = item["description"].as<String>();
|
||||
}
|
||||
}
|
||||
Log(String("Config geladen: penUpPos=") + g_iPEN_UP_POS + ", penDownPos=" + g_iPEN_DOWN_POS);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -237,6 +254,7 @@ bool loadConfigFromFile() {
|
||||
bool saveConfigToFile() {
|
||||
File file = SPIFFS.open(kConfigPath, "w");
|
||||
if (!file) {
|
||||
Log("SPIFFS open write failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -250,7 +268,11 @@ bool saveConfigToFile() {
|
||||
}
|
||||
|
||||
bool ok = serializeJsonPretty(doc, file) > 0;
|
||||
file.flush();
|
||||
file.close();
|
||||
if (!ok) {
|
||||
Log("serializeJsonPretty failed");
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
@@ -324,7 +346,7 @@ void startWebInterface() {
|
||||
server.on("/api/config", HTTP_GET, handleGetConfig);
|
||||
server.on("/api/config", HTTP_POST, handlePostConfig);
|
||||
server.on("/api/logs", HTTP_GET, handleGetLogs);
|
||||
server.onNotFound(handleRoot);
|
||||
server.onNotFound(handleNotFound);
|
||||
server.begin();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "EggDuino.h"
|
||||
|
||||
|
||||
void queryPen() {
|
||||
void queryPen()
|
||||
{
|
||||
char state;
|
||||
if (penState==penUpPos)
|
||||
if (penState == g_iPEN_UP_POS)
|
||||
state = '1';
|
||||
else
|
||||
state = '0';
|
||||
@@ -11,22 +11,26 @@ void queryPen() {
|
||||
sendAck();
|
||||
}
|
||||
|
||||
void queryButton() {
|
||||
void queryButton()
|
||||
{
|
||||
Serial.print(String(prgButtonState) + "\r\n");
|
||||
sendAck();
|
||||
prgButtonState = 0;
|
||||
}
|
||||
|
||||
void queryLayer() {
|
||||
void queryLayer()
|
||||
{
|
||||
Serial.print(String(layer) + "\r\n");
|
||||
sendAck();
|
||||
}
|
||||
|
||||
void setLayer() {
|
||||
void setLayer()
|
||||
{
|
||||
uint32_t value = 0;
|
||||
char *arg1;
|
||||
arg1 = SCmd.next();
|
||||
if (arg1 != NULL) {
|
||||
if (arg1 != NULL)
|
||||
{
|
||||
value = atoi(arg1);
|
||||
layer = value;
|
||||
sendAck();
|
||||
@@ -35,17 +39,19 @@ void setLayer() {
|
||||
sendError();
|
||||
}
|
||||
|
||||
void queryNodeCount() {
|
||||
void queryNodeCount()
|
||||
{
|
||||
Serial.print(String(nodeCount) + "\r\n");
|
||||
sendAck();
|
||||
|
||||
}
|
||||
|
||||
void setNodeCount() {
|
||||
void setNodeCount()
|
||||
{
|
||||
uint32_t value = 0;
|
||||
char *arg1;
|
||||
arg1 = SCmd.next();
|
||||
if (arg1 != NULL) {
|
||||
if (arg1 != NULL)
|
||||
{
|
||||
value = atoi(arg1);
|
||||
nodeCount = value;
|
||||
sendAck();
|
||||
@@ -54,31 +60,36 @@ void setNodeCount() {
|
||||
sendError();
|
||||
}
|
||||
|
||||
void nodeCountIncrement() {
|
||||
void nodeCountIncrement()
|
||||
{
|
||||
nodeCount = nodeCount++;
|
||||
sendAck();
|
||||
}
|
||||
|
||||
void nodeCountDecrement() {
|
||||
void nodeCountDecrement()
|
||||
{
|
||||
nodeCount = nodeCount--;
|
||||
sendAck();
|
||||
}
|
||||
|
||||
void stepperMove() {
|
||||
void stepperMove()
|
||||
{
|
||||
uint16_t duration = 0; // in ms
|
||||
int penStepsEBB = 0; // Pen
|
||||
int rotStepsEBB = 0; // Rot
|
||||
|
||||
moveToDestination();
|
||||
|
||||
if (!parseSMArgs(&duration, &penStepsEBB, &rotStepsEBB)) {
|
||||
if (!parseSMArgs(&duration, &penStepsEBB, &rotStepsEBB))
|
||||
{
|
||||
sendError();
|
||||
return;
|
||||
}
|
||||
|
||||
sendAck();
|
||||
|
||||
if ( (penStepsEBB==0) && (rotStepsEBB==0) ) {
|
||||
if ((penStepsEBB == 0) && (rotStepsEBB == 0))
|
||||
{
|
||||
delay(duration);
|
||||
return;
|
||||
}
|
||||
@@ -86,25 +97,33 @@ void stepperMove() {
|
||||
prepareMove(duration, penStepsEBB, rotStepsEBB);
|
||||
}
|
||||
|
||||
void setPen(){
|
||||
void setPen()
|
||||
{
|
||||
int cmd;
|
||||
int value;
|
||||
char *arg;
|
||||
char cstrMsg[20];
|
||||
|
||||
moveToDestination();
|
||||
|
||||
arg = SCmd.next();
|
||||
if (arg != NULL) {
|
||||
if (arg != NULL)
|
||||
{
|
||||
cmd = atoi(arg);
|
||||
switch (cmd) {
|
||||
switch (cmd)
|
||||
{
|
||||
case 0:
|
||||
penServo.write(penUpPos);
|
||||
penState=penUpPos;
|
||||
penServo.write(g_iPEN_UP_POS);
|
||||
penState = g_iPEN_UP_POS;
|
||||
sprintf(cstrMsg, "PEN down: %d", g_iPEN_UP_POS);
|
||||
Log(cstrMsg);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
penServo.write(penDownPos);
|
||||
penState=penDownPos;
|
||||
penServo.write(g_iPEN_DOWN_POS);
|
||||
penState = g_iPEN_DOWN_POS;
|
||||
sprintf(cstrMsg, "PEN up: %d", g_iPEN_DOWN_POS);
|
||||
Log(cstrMsg);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -113,12 +132,14 @@ void setPen(){
|
||||
}
|
||||
char *val;
|
||||
val = SCmd.next();
|
||||
if (val != NULL) {
|
||||
if (val != NULL)
|
||||
{
|
||||
value = atoi(val);
|
||||
sendAck();
|
||||
delay(value);
|
||||
}
|
||||
if (val==NULL && arg !=NULL) {
|
||||
if (val == NULL && arg != NULL)
|
||||
{
|
||||
sendAck();
|
||||
delay(500);
|
||||
}
|
||||
@@ -127,7 +148,8 @@ void setPen(){
|
||||
sendError();
|
||||
}
|
||||
|
||||
void togglePen(){
|
||||
void togglePen()
|
||||
{
|
||||
int value;
|
||||
char *arg;
|
||||
|
||||
@@ -144,17 +166,22 @@ void togglePen(){
|
||||
delay(value);
|
||||
}
|
||||
|
||||
void doTogglePen() {
|
||||
if (penState==penUpPos) {
|
||||
penServo.write(penDownPos);
|
||||
penState=penDownPos;
|
||||
} else {
|
||||
penServo.write(penUpPos);
|
||||
penState=penUpPos;
|
||||
void doTogglePen()
|
||||
{
|
||||
if (penState == g_iPEN_UP_POS)
|
||||
{
|
||||
penServo.write(g_iPEN_DOWN_POS);
|
||||
penState = g_iPEN_DOWN_POS;
|
||||
}
|
||||
else
|
||||
{
|
||||
penServo.write(g_iPEN_UP_POS);
|
||||
penState = g_iPEN_UP_POS;
|
||||
}
|
||||
}
|
||||
|
||||
void enableMotors(){
|
||||
void enableMotors()
|
||||
{
|
||||
int cmd;
|
||||
int value;
|
||||
char *arg;
|
||||
@@ -166,12 +193,16 @@ void enableMotors(){
|
||||
if (val != NULL)
|
||||
value = atoi(val);
|
||||
// values parsed
|
||||
if ((arg != NULL) && (val == NULL)){
|
||||
switch (cmd) {
|
||||
case 0: motorsOff();
|
||||
if ((arg != NULL) && (val == NULL))
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case 0:
|
||||
motorsOff();
|
||||
sendAck();
|
||||
break;
|
||||
case 1: motorsOn();
|
||||
case 1:
|
||||
motorsOn();
|
||||
sendAck();
|
||||
break;
|
||||
default:
|
||||
@@ -179,12 +210,16 @@ void enableMotors(){
|
||||
}
|
||||
}
|
||||
// the following implementaion is a little bit cheated, because i did not know, how to implement different values for first and second argument.
|
||||
if ((arg != NULL) && (val != NULL)){
|
||||
switch (value) {
|
||||
case 0: motorsOff();
|
||||
if ((arg != NULL) && (val != NULL))
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case 0:
|
||||
motorsOff();
|
||||
sendAck();
|
||||
break;
|
||||
case 1: motorsOn();
|
||||
case 1:
|
||||
motorsOn();
|
||||
sendAck();
|
||||
break;
|
||||
default:
|
||||
@@ -193,7 +228,8 @@ void enableMotors(){
|
||||
}
|
||||
}
|
||||
|
||||
void stepperModeConfigure(){
|
||||
void stepperModeConfigure()
|
||||
{
|
||||
int cmd;
|
||||
int value;
|
||||
char *arg;
|
||||
@@ -204,13 +240,19 @@ void stepperModeConfigure(){
|
||||
val = SCmd.next();
|
||||
if (val != NULL)
|
||||
value = atoi(val);
|
||||
if ((arg != NULL) && (val != NULL)){
|
||||
switch (cmd) {
|
||||
case 4: penDownPos= (int) ((float) (value-6000)/(float) 133.3); // transformation from EBB to PWM-Servo
|
||||
if ((arg != NULL) && (val != NULL))
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case 4:
|
||||
g_iPEN_DOWN_POS = (int)((float)(value - 6000) / (float)133.3); // transformation from EBB to PWM-Servo
|
||||
Log(String("SC set PEN_DOWN_POS -> ") + g_iPEN_DOWN_POS + " (raw " + value + ")");
|
||||
storePenDownPosInEE();
|
||||
sendAck();
|
||||
break;
|
||||
case 5: penUpPos= (int)((float) (value-6000)/(float) 133.3); // transformation from EBB to PWM-Servo
|
||||
case 5:
|
||||
g_iPEN_UP_POS = (int)((float)(value - 6000) / (float)133.3); // transformation from EBB to PWM-Servo
|
||||
Log(String("SC set PEN_UP_POS -> ") + g_iPEN_UP_POS + " (raw " + value + ")");
|
||||
storePenUpPosInEE();
|
||||
sendAck();
|
||||
break;
|
||||
@@ -220,10 +262,12 @@ void stepperModeConfigure(){
|
||||
case 7: // rotMax=value; ignored
|
||||
sendAck();
|
||||
break;
|
||||
case 11: servoRateUp=value;
|
||||
case 11:
|
||||
servoRateUp = value;
|
||||
sendAck();
|
||||
break;
|
||||
case 12: servoRateDown=value;
|
||||
case 12:
|
||||
servoRateDown = value;
|
||||
sendAck();
|
||||
break;
|
||||
default:
|
||||
@@ -232,20 +276,24 @@ void stepperModeConfigure(){
|
||||
}
|
||||
}
|
||||
|
||||
void sendVersion(){
|
||||
void sendVersion()
|
||||
{
|
||||
Serial.print(initSting);
|
||||
Serial.print("\r\n");
|
||||
}
|
||||
|
||||
void unrecognized(const char *command){
|
||||
void unrecognized(const char *command)
|
||||
{
|
||||
sendError();
|
||||
}
|
||||
|
||||
void ignore(){
|
||||
void ignore()
|
||||
{
|
||||
sendAck();
|
||||
}
|
||||
|
||||
void makeComInterface(){
|
||||
void makeComInterface()
|
||||
{
|
||||
SCmd.addCommand("v", sendVersion);
|
||||
SCmd.addCommand("EM", enableMotors);
|
||||
SCmd.addCommand("SC", stepperModeConfigure);
|
||||
|
||||
@@ -4,10 +4,10 @@ void initHardware()
|
||||
{
|
||||
if (!initConfigStore())
|
||||
{
|
||||
penUpPos = 5;
|
||||
penDownPos = 20;
|
||||
g_iPEN_UP_POS = 5;
|
||||
g_iPEN_DOWN_POS = 20;
|
||||
}
|
||||
penState = penUpPos;
|
||||
penState = g_iPEN_UP_POS;
|
||||
|
||||
g_stepEngine.init();
|
||||
g_pStepperRotate = g_stepEngine.stepperConnectToPin(step1);
|
||||
|
||||
@@ -52,13 +52,13 @@ Button motorsToggle(motorsButton, toggleMotors);
|
||||
// Variables... be careful, by messing around here, everything has a reason and crossrelations...
|
||||
int penMin = 0;
|
||||
int penMax = 0;
|
||||
int penUpPos = 5; // can be overwritten from EBB-Command SC
|
||||
int penDownPos = 20; // can be overwritten from EBB-Command SC
|
||||
int g_iPEN_UP_POS = 5; // can be overwritten from EBB-Command SC
|
||||
int g_iPEN_DOWN_POS = 20; // can be overwritten from EBB-Command SC
|
||||
int servoRateUp = 0; // from EBB-Protocol not implemented on machine-side
|
||||
int servoRateDown = 0; // from EBB-Protocol not implemented on machine-side
|
||||
long rotStepError = 0;
|
||||
long penStepError = 0;
|
||||
int penState = penUpPos;
|
||||
int penState = g_iPEN_UP_POS;
|
||||
uint32_t nodeCount = 0;
|
||||
unsigned int layer = 0;
|
||||
boolean prgButtonState = 0;
|
||||
|
||||
Reference in New Issue
Block a user