Ich bin in C noch nicht so mächtig drin.
Ich habe eine Steckdosenleiste mit Relais, welche ich per Webserver und Telnet steuern will. Den Webserverteil habe ich bereits erfolgreich erstellt.
Anhand der gut dokumentierten Sourcen auch kein Problem.
Nun wollte ich den Telnet-Befehlssatz erweitern.
Beispiel:
> port1=on ----> Port1 ist Ein
> port2=off ----> Port2 ist Aus
> port4status ----> Zeige den Status von Port 4
Das ganze soll für 8 Relais funktionieren.
Folgenden Code habe ich in der telnet.c dafür eingefügt:
if ( memcmp(&cmd[0],"port8",5) == 0)
{
char string[40]= {"port8"};
if ( memcmp(&cmd[0],"port8status",11) == 0)
{
if (PORT8) strcat (string,"=on\r\n"); else strcat (string,"=off\r\n");
}
if ( memcmp(&cmd[0],"port8=off",9) == 0)
{
PORTD &= ~(1 << 7);
strcat (string,"=off\r\n");
}
if ( memcmp(&cmd[0],"port8=on",8) == 0)
{
PORTD |= (1 << 7);
strcat (string,"=on\r\n");
}
tcp_add_datastring (string,buffer,bufferlen);
goto telnet_end;
}
Das funktioniert auch. Allerdings sobald ich den Code für mehr als 3 Ausgänge kopiere, funktioniert telnet gar nicht mehr auf dem AVR.
Ich benutze einen ATmega32. Stösst dieser an seine Grenzen?
Oder woran liegt das?
Wie kann ich das ggf. effizienter schreiben? (mit Case)
Schönen Abend
Gruß
Stephan