Forum: Mikrocontroller und Digitale Elektronik Drop Down zusammenfassen - ESP8266


von Kolja L. (kolja82)


Lesenswert?

Hallo

Gibt es eine Möglichkeit, diesen Codebatzen zusammenzufassen:
1
 webpage += "<select name='Line_01'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
2
  webpage += "<select name='Line_02'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
3
  webpage += "<select name='Line_03'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
4
  webpage += "<select name='Line_04'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
5
  webpage += "<select name='Line_05'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
6
  webpage += "<select name='Line_06'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
7
  webpage += "<select name='Line_07'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
8
  webpage += "<select name='Line_08'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
9
  webpage += "<select name='Line_09'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
10
  webpage += "<select name='Line_10'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
11
  webpage += "<select name='Line_11'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
12
  webpage += "<select name='Line_12'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
13
  webpage += "<select name='Line_13'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
14
  webpage += "<select name='Line_14'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
15
  webpage += "<select name='Line_15'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
16
  webpage += "<select name='Line_16'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
17
  webpage += "<select name='Line_17'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";
18
  webpage += "<select name='Line_18'><option value='000'>aus</option><option value='100'>rot</option><option value='010'>gruen</option><option value='001'>blau</option></select>\n";

also alle Parameter auslagern, sodass ich diese nur einmal ändern muss?

Und wäre das dann auch platzsparender?

Danke und Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ist das C++-Code? Da könntest Du mit einer Schleife und z.B. sprintf 
etwas erreichen.

von Kolja L. (kolja82)


Lesenswert?

Rufus Τ. F. schrieb:
> Ist das C++-Code?

Jain, ich schreibe in der Arduino IDE

von justme (Gast)


Lesenswert?

Kolja L. schrieb:
> also alle Parameter auslagern, sodass ich diese nur einmal ändern muss?

Die Codezeilen unterscheiden sich doch sowieso nur durch die beiden 
Ziffern hinter "Line_". Damit ist das doch prädestiniert für eine 
Schleife.

von Kolja L. (kolja82)


Lesenswert?

Danke, so gehts:

  for (int j = 1; j <= 18; j++) {
    webpage += "<select name='Line_";
    webpage += j;
    webpage += "'><option value='000'>aus</option><option 
value='100'>rot</option><option value='010'>gruen</option><option 
value='001'>blau</option></select>\n";
  }

von Kolja L. (kolja82)


Lesenswert?

Mist, hier funktioniert es nicht so wie oben:
1
      if (server.argName(i) == "Line_1") {
2
        int R = server.arg(i).substring(0, 1).toInt() * 400;
3
        int G = server.arg(i).substring(1, 2).toInt() * 400;
4
        int B = server.arg(i).substring(2, 3).toInt() * 400;
5
        setPWM(0, R, G, B);
6
      }
7
      if (server.argName(i) == "Line_2") {
8
        int R = server.arg(i).substring(0, 1).toInt() * 400;
9
        int G = server.arg(i).substring(1, 2).toInt() * 400;
10
        int B = server.arg(i).substring(2, 3).toInt() * 400;
11
        setPWM(1, R, G, B);
12
      }
13
      if (server.argName(i) == "Line_3") {
14
        int R = server.arg(i).substring(0, 1).toInt() * 400;
15
        int G = server.arg(i).substring(1, 2).toInt() * 400;
16
        int B = server.arg(i).substring(2, 3).toInt() * 400;
17
        setPWM(2, R, G, B);
18
      }

Noch n guter Hinweis?

von Michael (Gast)


Lesenswert?

Die ersten drei Zeilen jedes if-blocks sind doch identisch, also pack 
sie oben drüber und mache in den if-blöcken nur den jeweiligen setPwm 
aufruf. oder setze dort nur eine variable auf den jeweiligen wert und 
setz die in den setpwm aufruf an erster stelle ein, dann ist nichts 
dupliziert.

Für dein erstes problem: schau dir trotzdem nochmal sprintf an, dein 
zeilenweises zusammenstöpseln ist nicht unbedingt schön

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.