Hallo ich möchte gerne einen Button über einen String auswerten,
aber der Compilier meint irgentwas ist nicht korrekt.
Kann mir jemand mit seinem Fachwissen weiterhelfen?
Die einzelne if anweisung würde funktionieren.
Aber das else if oder else nicht. Wie geht man da genau vor.
Bin neu in dem Thema Arduino
void loop() {
if(Serial.available()){
String data_from_display="";
delay(30);
while(Serial.available()){
data_from_display += char(Serial.read());
}
Serial.println(data_from_display);
sendData(data_from_display);
}
}
void sendData(String data_from_display){
if(data_from_display =="ON")
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK ON\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
else if (data_from_display =="OFF"){
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK OFF\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
}
wno158
September 22, 2023, 9:09am
2
Ich denke da fehlen Klammern um den Anweisungsblock:
if (...) {
...
}
else if (...) {
...
}
Nur beim else if
ist die öffnende {
vorhanden.
Funktioniert leider nicht
void sendData(String data_from_display){
if(data_from_display =="ON")
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK ON\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if(data_from_display =="OFF"){
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK OFF\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else (data_from_display ==""){
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
Wenn du dir die Fehlermeldung in der IDE ansiehst, kannst du selbst erkennen, wo der Fehler steckt. Im "if"-Block fehlt auch die öffnende Klammer.
Sollten keine Fehlermeldungen vorhanden sein, dann diese in den Einstellungen (Menü>Datei-Voreinstellungen) einschalten.
Kannst du mir mal genau zeigen wo? Steh grad auf dem Schlauch. Danke
Setze den Sketch bitte wie vorher richtig rein. Das Bild kann ich am Smartphone nicht lesen.
Und Fehlermeldungen solltest du doch lesen können, oder ??
fony
September 22, 2023, 9:30am
7
in 55 nach der if(........) {
J-M-L
September 22, 2023, 9:31am
8
Sie vermissen das "if", wenn Sie eine neue Bedingung verwenden.
Bitte, bitte poste niemals wieder Bilder von Text... Sie sind nicht nur schwer lesbar und nicht direkt für Kopieren & Einfügen verwendbar, sondern sie verbrauchen auch viel Speicherplatz und Internet-Bandbreite, was zur Verschmutzung des Planeten beiträgt.
1 Like
fony
September 22, 2023, 9:32am
9
Drücke in der IDE SRTG + T
Hier nochmal der Code: Ich versteh das mit den Fehlermeldungen nicht so ganz.
Danke
void setup() {
Serial.begin(9600);
Serial.println("SERIAL 1 BEGINN");
}
//#####################################################################################################
//AUFRUF PROGRAMM
//#####################################################################################################
void loop() {
if(Serial.available()){
String data_from_display="";
delay(30);
while(Serial.available()){
data_from_display += char(Serial.read());
}
Serial.println(data_from_display);
sendData(data_from_display);
}
}
void sendData(String data_from_display){
if(data_from_display =="ON")
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK ON\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if(data_from_display =="OFF"){
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK OFF\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else (data_from_display ==""){
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
ersetze mal das durch:
void setup() {
Serial.begin(9600);
Serial.println("SERIAL 1 BEGINN");
}
//#####################################################################################################
//AUFRUF PROGRAMM
//#####################################################################################################
void loop() {
if(Serial.available()){
String data_from_display="";
delay(30);
while(Serial.available()){
data_from_display += char(Serial.read());
}
Serial.println(data_from_display);
sendData(data_from_display);
}
}
void sendData(String data_from_display)
{
if(data_from_display =="ON")
{
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK ON\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if(data_from_display =="OFF")
{
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK OFF\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if (data_from_display =="")
{
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
}
bei else darf meiner Meinung nach keine Klammer mit Vergleich folgen
1 Like
J-M-L
September 22, 2023, 9:46am
12
Die erste geschweifte Klammer ist an der falschen Stelle nicht geschlossen
Nur die erste Zeile ist im "if" (eingeschlossen)
C++ ist nicht wie Python, Einrückung definiert keine Blöcke. Sie müssen eine "compound statement" mit geschweiften Klammern erstellen, um Anweisungen zu gruppieren, die zusammengehören.
Lesen Statements - cppreference.com
PS: Bitte machen Sie mich nicht wieder dazu, ein Bild zu posten
void sendData(String data_from_display)
{
if (data_from_display == "ON")
{
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK ON\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if (data_from_display == "OFF")
{
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK OFF\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if (data_from_display == "")
{
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
}
Wunderbar vielen Dank jetzt funktioniert es, ich würde dir gerne per Paypal einen kleinen Obulus zusenden.
fony
September 22, 2023, 9:53am
14
Upss da war jemand schneller
void setup() {
Serial.begin(9600);
Serial.println("SERIAL 1 BEGINN");
}
//#####################################################################################################
//AUFRUF PROGRAMM
//#####################################################################################################
void loop() {
if (Serial.available()) {
String data_from_display = "";
delay(30);
while (Serial.available()) {
data_from_display += char(Serial.read());
}
Serial.println(data_from_display);
sendData(data_from_display);
}
}
void sendData(String data_from_display) {
if (data_from_display == "ON") {
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK ON\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if (data_from_display == "OFF") {
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"INTERLOCK OFF\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else {
(data_from_display == "");
Serial.print("t1.pco=65504");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t1.txt=\"\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
}
1 Like
Das ist absolut unnötig. Wir helfen hier gegenseitig. Zudem bin ich im Büro und werde so schon bezahlt
1 Like
Super vielen vielen Dank ! ich denke ich werd noch 1-2 mal auf dich zurückkommen müssen.
da gibt es durchaus versiertere Nutzer hier im Forum. Ich bin auch noch Anfänger
Und was genau verstehst du da nicht ?
system
Closed
March 20, 2024, 10:23am
19
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.