If Bedingungen und Variablen



  • Hallo Zusammen

    Ich habe mit C leider nichts am Hut. Aber ich brauche eure Hilfe.
    Bin dabei einen Webserver (AVR-Net-IO) die Hp zu ändern.

    Und zwar habe ich da eine Tabelle mit einer Zeile (drei Zellen) wo sich die Zellfarbe nach den entsprechenden Bedingungen ändern soll.

    Das ist der jetzige Code:

    " <tr>\r\n"
    "  <td class=\"%PINA3\">Spar</td>\r\n" //%PINA3
    "  <td class=\"%PINA2\">Normal</td>\r\n"
    "  <td class=\"%PINA1\">Party</td>\r\n"
    " </tr>\r\n"
    

    was mich nicht Zufrieden stellt.
    Was kann ich da machen.

    Zurveranschaung hier mal der Link http://www.wrg29378.selfhost.me:4711/

    Danke schonmal im Vorraus



  • Ich versteh' nicht ganz, was da C sein soll, ich sehe nur HTML???



  • vielleicht stellst du auch eine Frage? Wir können nämlich nicht hellsehen. 😕



  • supertux schrieb:

    vielleicht stellst du auch eine Frage? Wir können nämlich nicht hellsehen. 😕

    Sorry das war nicht meine Absicht.

    Meine Frage:
    Wie kann ich es machen

    Wenn A0 = 1 dann Bild1 (bzw Zelle Rot)
    Wenn A0 = 1 und A1 = 1 dann Bild2 (bzw Zelle Rot)
    Wenn A0 = 1 und A1 = 1 und A2 = 1 dann Bild3 (bzw Zelle Rot)

    Als Variable hätte ich da %PINA1;%PINA2;%PINA1 die Geschoss als Text enthalten.

    Gruß
    FKF 🙄



  • Und wo ist jetzt das C?



  • So irgendwann werden ich es Begreifen.

    " <tr>\r\n"
    if ( %Pin3 == Geschloss)
    " <td class=\"%PINA3\">Spar</td>\r\n"
    else
    " <td> </td>\r\n"
    end if
    if ( %Pin3 == Geschloss || %Pin2 == Geschloss )
    " <td class=\"%PINA3\"></td>\r\n"
    " <td class=\"%PINA2\">Normal</td>\r\n"
    else
    " <td> </td>\r\n"
    " <td> </td>\r\n"
    end if
    " <td> </td>\r\n"
    " <td> </td>\r\n"
    " <td> </td>\r\n"
    " </tr>\r\n"

    Habe jetzt mal etwas, ich hoffe C hinzugefügt.
    Aber richtig ist das bestimmt nicht oder?

    Gruß FKF



  • Ach so, dein HTML-Code wird mit C generiert. Du musst die Strings aber schon irgendeiner Variable zuweisen, die sie speichert und die Variablen nachher zu einem Code zusammenfügen.



  • Hallo,

    FKF schrieb:

    Aber richtig ist das bestimmt nicht oder?
    Gruß FKF

    Richtig, richtig ist das nicht.

    Vielleicht hilft das ein wenig:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main () {
    	char *pina[3] = { "PINA1", "PINA2", "PINA3" };
    	char *env_value[3] = {0};
    	const char const *pina_const_demo = "Geschoss"; // Kanonenkugel? :D
    	char *default_line = "<td> </td>\r\n";
    	char *line[3] = { "<td class=\"Geschoss\">Spar</td>\r\n", 
    						"<td class=\"Geschoss\">Normal</td>\r\n",
    						 "<td class=\"Geschoss\">Party</td>\r\n" };
    
    	env_value[0] = getenv ( pina[0] );
    
    	if ( env_value[0] == NULL ) // Gibt es die Umgebungsvariable "PINA1" ?
    	{ // Nö.
    		printf ( "Die Umgebungsvariable %s ist nicht definiert, "
    					"der hartcodierte Demowert\n" "%s wird benutzt.\n",
    						pina[0], pina_const_demo );
    		env_value[0] = pina_const_demo; // Demowert setzen.
    	}
    	// ...
    	// Wenn beide Variable nicht gleich sind,
    	if ( strcmp ( env_value[0], pina_const_demo ) != 0 ) 
    		// Setze default_line
    		line[0] = default_line;
    
    	puts ( line[0] );
    	return 0;
    }
    

    Falls du die line[3] noch etwas variabler brauchst, um Variableninhalte einzufügen, nimm z.B.

    char buf_line_fmt[3][256] = { "<td class=\"%s\">Spar</td>\r\n", 
    						"<td class=\"%s\">Normal</td>\r\n",
    						 "<td class=\"%s\">Party</td>\r\n" };
    	char buf_line[3][256] = {0};
    
    	sprintf ( buf_line[0], buf_line_fmt[0], "WURST" );
    	puts ( buf_line[0] );
    	return 0;
    

    Vllt. doch besser snprintf statt sprintf.
    Gruß,
    B.B.



  • Hallo Big Brother

    Erstmal vielen Dank für deine Antwort 👍 aber so recht Versteh ist es nicht.
    Aber vieleicht kannst du mir dabei Helfen 😕

    // Einsetzen des Pin Status %PI@xy bis %PI@xy 
                // durch grüne oder graue Hintergrundarbe der Tabellenzelle
                //x = 0 : PINA / x = 1 : PINB / x = 2 : PINC / x = 3 : PIND
                //hier wird deine Variable geprüft....
            if (strncasecmp_P("PIN",http_entry[index].new_page_pointer,3)==0)
                {
                    unsigned char pin  = (pgm_read_byte(http_entry[index].new_page_pointer+4)-48);    
                    b = 0;
                    switch(pgm_read_byte(http_entry[index].new_page_pointer+3))
                    {
                        case 'A':
                            b = (PINA & (1<<pin));   //das hier trifft dann zu ! und PinA0 wird in b geschrieben
                            break;
                        case 'B':
                            b = (PINB & (1<<pin));
                            break;
                        case 'C':
                            b = (PINC & (1<<pin));
                            break;
                        case 'D':
                            b = (PIND & (1<<pin));
                            break;    
                    }
    
                    if(b)  // hier wird geprüft, ob b = 1 (Eingang low)
                    {
                        strcpy_P(var_conversion_buffer, PSTR("153, 0, 0")); // setzt die Farbe rot
    
    [b]// hier kommt dann dein gewünschter Code rein, der anstatt %PINA0 angezeigt wird
    // [/b]
                    }
                    else // oder 0 (Eingang high)
                    {
                        strcpy_P(var_conversion_buffer, PSTR("0, 153, 0")); // grün
                    }
    				str_len = strnlen(var_conversion_buffer,CONVERSION_BUFFER_LEN);
    				memmove(&eth_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len);
    				a += str_len-1;
    				http_entry[index].new_page_pointer = http_entry[index].new_page_pointer+5;
    

    Hier müßte ich glaube Variable für Webseite einsetzen?

    Gruß
    FKF


Anmelden zum Antworten