Hallo,
bin neue aber habe schon einiges im Forum gelesen.
Habe nun ein Problem mit der Formatierung bei sprintf zur Ausgabe auf meiner Seite.
Ich erhalte von einem Gerät Daten über die Serielleschntitstelle, unter anderem auch Text und würde diesen Text gerne auf meiner Seite als Ascii-Text ausgeben und genau hier liegt mein Problem und vieleicht hat mir ja jemand einen Tipp.
Statische Texte kann ich als String anlegen und mit der Formatierung "%s" übergeben.
Das ganze entstand aus der Anleitung von Heinz Baumstark, hierfür auch meinen Dank.
include "WiFi.h"
#include "WebServer.h"
const char* ssid = "????"; // Network name.
const char* password = "12345"; // Password network.
uint32_t wert1, wert2, wert3, wert4, wert5;
char lcdData1[16] = {0x64, 0x69, 0x65, 0x73, 0x20, 0x69, 0x73, 0x74, 0x20, 0x65, 0x69, 0x6E, 0x20, 0x54 , 0x65, 0x78 , 0x74, 0x21}; Beispiel Daten "dies ist ein Text!"
byte ledpin1 = 23;
byte ledpin2 = 22;
byte ledpin3 = 19;
bool btnstate1; // Status des HTLM Butons
bool btnstate2;
bool btnstate3;
// Server Instanz erstellen
WebServer server(80);
void setup()
{
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// --Server Handle einrichten---
server.serveStatic("/", SPIFFS, "/index.html");
server.serveStatic("/style.css", SPIFFS, "/style.css", "text/css");
server.on("/daten", sendeDaten);
server.onNotFound(handleNotFound); // Fehler bearbeiten
char lcdData1[16] = {0x64, 0x69, 0x65, 0x73, 0x20, 0x69, 0x73, 0x74, 0x20, 0x65, 0x69, 0x6E, 0x20, 0x54 , 0x65, 0x78 , 0x74, 0x21};
}
void loop()
{
server.handleClient();// hier passiert sonst nichts
//Beispiel m Werte auf Internetseite zu simulieren
if (millis() - altzeit >= 400) { // Messwerte simulieren 400ms
altzeit = millis();
wert1++;
if (wert1 > 2000)
{
wert1 = 0;
wert5++;
}
wert2 = millis() / 1000;
wert3 = 50.0 + random(10) / 5.0;
wert4 = (wert2 + wert1);
}
}
void Datenzeigen()
{
String message = "Daten angekommen\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++)
{
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
Serial.println(message);
}
void sendeDaten()
{
char sendbuffer[60];
// JSON String als Array anlegen ["20.0","572.6","24.0"]
// sprintf(sendbuffer, "[\"%4.1f\",\"%4.1f\",\"%4.1f\",\"%1u\",\"%1u\",\"%1u\"]",
// wert1, wert2, wert3, wert4, wert5);
sprintf(sendbuffer, "[\"%4d\",\"%4d\",\"%4d\",\"%4d\",\"%4d\",\"%16c\"]", //Formatierung mit sprintf
wert1, wert2, wert3, wert4, wert5, lcdData1);
server.send(200, "application/json", sendbuffer);
#ifdef DEBUG
Serial.print(sendbuffer);
Serial.println(strlen(sendbuffer));
#endif
}