Mal wieder einen kleinen zwischenstand.
Also der Server läuft wieder. Schon mal toll. Die Anfragen kommen rein.
Werden aber noch nicht abgearbeitet bzw. zugeordnet.
Ich habe versucht die eben angesprochene verlagerung in Flash umzusetzen. Aber ich habe keine wirkliche
Einsparung hinbekommen (50Bytes).
Welche Art des Aufrufs ist die richtig für mich? Siehe anhang.
Ich meine im besonderen die übergabe des Dateinamens an meine funktion und den auszuwertenden "Code"
an meine IF abfrage.
#include <SPI.h>
#include <SD.h>
#include <Ethernet.h>
#include <avr/pgmspace.h>
prog_char F1[] PROGMEM = {"startp.txt"};
prog_char F2[] PROGMEM = {"zsperr.txt"};
prog_char F3[] PROGMEM = {"0101fr.txt"};
prog_char F4[] PROGMEM = {""};
prog_char F5[] PROGMEM = {""};
prog_char F6[] PROGMEM = {"0102fr.txt"};
prog_char F7[] PROGMEM = {""};
prog_char F8[] PROGMEM = {""};
prog_char F9[] PROGMEM = {"0103fr.txt"};
prog_char F10[] PROGMEM = {""};
prog_char F11[] PROGMEM = {""};
prog_char F12[] PROGMEM = {"0104fr.txt"};
prog_char F13[] PROGMEM = {""};
prog_char F14[] PROGMEM = {""};
prog_char F15[] PROGMEM = {"0105fr.txt"};
prog_char F16[] PROGMEM = {""};
prog_char F17[] PROGMEM = {""};
prog_char F18[] PROGMEM = {"0106fr.txt"};
prog_char F19[] PROGMEM = {""};
prog_char F20[] PROGMEM = {""};
prog_char F21[] PROGMEM = {"0107fr.txt"};
prog_char F22[] PROGMEM = {""};
prog_char F23[] PROGMEM = {""};
prog_char F24[] PROGMEM = {"0108fr.txt"};
prog_char F25[] PROGMEM = {""};
prog_char F26[] PROGMEM = {""};
prog_char F27[] PROGMEM = {"0109fr.txt"};
prog_char F28[] PROGMEM = {""};
prog_char F29[] PROGMEM = {""};
prog_char F30[] PROGMEM = {"0110fr.txt"};
prog_char F31[] PROGMEM = {""};
prog_char F32[] PROGMEM = {""};
prog_char F33[] PROGMEM = {"0111fr.txt"};
prog_char F34[] PROGMEM = {""};
prog_char F35[] PROGMEM = {""};
prog_char F36[] PROGMEM = {"0112fr.txt"};
prog_char F37[] PROGMEM = {""};
prog_char F38[] PROGMEM = {""};
prog_char F39[] PROGMEM = {"0113fr.txt"};
prog_char F40[] PROGMEM = {""};
prog_char F41[] PROGMEM = {""};
prog_char F42[] PROGMEM = {"0114fr.txt"};
prog_char F43[] PROGMEM = {""};
prog_char F44[] PROGMEM = {""};
prog_char F45[] PROGMEM = {"0115fr.txt"};
prog_char F46[] PROGMEM = {""};
prog_char F47[] PROGMEM = {""};
prog_char F48[] PROGMEM = {"spende.txt"};
PROGMEM const char *Quest_table[] =
{
F1, F2, F3, F4, F5, F6, F7, F8, F9, F10,
F11, F12, F13, F14, F15, F16, F17, F18, F19, F20,
F21, F22, F23, F24, F25, F26, F27, F28, F29, F30,
F31, F32, F33, F34, F35, F36, F37, F38, F39, F40,
F41, F42, F43, F44, F45, F46, F47, F48
};
prog_char J2[] PROGMEM = {"Code=36811"};
prog_char J3[] PROGMEM = {"Code=63026"};
prog_char J4[] PROGMEM = {"Code=98222"};
prog_char J5[] PROGMEM = {"Code=23284"};
prog_char J6[] PROGMEM = {"Code=88168"};
prog_char J7[] PROGMEM = {"Code=47022"};
prog_char J8[] PROGMEM = {"Code=20692"};
prog_char J9[] PROGMEM = {"Code=80692"};
prog_char J10[] PROGMEM = {"Code=39762"};
prog_char J11[] PROGMEM = {"Code=46047"};
prog_char J12[] PROGMEM = {"Code=97346"};
prog_char J13[] PROGMEM = {"Code=68095"};
prog_char J14[] PROGMEM = {"Code=92060"};
prog_char J15[] PROGMEM = {"Code=05860"};
PROGMEM const char *Joker_table[] =
{
J2, J3, J4, J5,
J6, J7, J8, J9, J10,
J11, J12, J13, J14, J15,
};
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x65, 0x3A };
byte ip[] = { 192, 168, 1, 2 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
char JokerBuffer[11];
char FileBuffer [11];
EthernetServer server(80); //server port
String readString;
long Sperrzeit = 1200000; // 20min = 1 200 000
long Abschaltzeit = 1500000; // 25min = 1 500 000
long LetzteZeitSperr; // Sperrzeit bei Falscher Antwort
long LetzteZeitAus; // Zeit um Aus Automatisch
int Fragencounter = 0; // Zähler aktuelle Frage
int AusPin = 5; // Pin mit Relais Aus
int StatusAusPin = LOW; // Statusspeicher des Relais für AUS
int StatusFalscheFrage = LOW; // Frage Falsch = Sperrzeit abwarten
void setup(){
Serial.begin(9600);
pinMode(10,OUTPUT);
digitalWrite(10,HIGH);
Serial.print("SD..");
if(!SD.begin(4)) Serial.println("Err");
else Serial.println("Ok");
delay(3000);
Ethernet.begin(mac, ip, gateway, subnet);
digitalWrite(10,HIGH);
server.begin();
Serial.println("Rdy");
}
EthernetClient client;
void loop(){
/* // ------------------------------------------------------------------------- Abschaltzeit
if (millis() - LetzteZeitAus > LetzteZeitAus) {
StatusAusPin = false; }
else {
StatusAusPin = true;
digitalWrite(AusPin, StatusAusPin);
}
// ------------------------------------------------------------------------- Sperrzeit falsche Frage
if (StatusFalscheFrage = HIGH) {
if (millis() - LetzteZeitSperr > Sperrzeit) {
StatusFalscheFrage = HIGH; }
else {
StatusFalscheFrage = LOW;
}
} */
// ------------------------------------------------------------------------- Create a client connection
client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) { //read char by char HTTP request
readString += c; //store characters to string
}
if (c == '\n') { //if HTTP request has ended
Serial.println(readString); //print to serial monitor for debuging
Serial.println(J2);
//LetzteZeitAus = millis();
// ------------------------------------------------------------------------- Programmstand erkennen
if(readString.indexOf(J2) > -1) { //// --- Code Frage 2
// Serial.println("Code Frage 2 erkannt");
Fragencounter = 2;
strcpy_P(FileBuffer, (char*)pgm_read_word(&(Quest_table[6])));
printMyFile(FileBuffer);.......................................................................................
.........................................Fragencounter = 15;
printMyFile(F45);
}
else if (readString.indexOf("Joker+einl") > -1) { //// --- Kein Code eingegeben
// Serial.println("Kein Code eingegeben");
Fragencounter = 0;
printMyFile(F1);
}
else if(readString.indexOf("Neu=Neues+Spiel") > -1) { // ----- Neues Spiel
Serial.println("Neu Zeit");
if (StatusFalscheFrage == HIGH) {
// Serial.println("Neustart gesperrt");
printMyFile(F2);
}
else if (StatusFalscheFrage == LOW) {
Serial.println("Neu frei");
Fragencounter = 1;
printMyFile(F3);
}
}
else if(Fragencounter >> 1 && readString.indexOf("Antw=") > -1) { // ----- Frage 1
Serial.println("Antw");
if (readString.indexOf("Antw=B") > -1) { //// --- Richtig
Serial.println("Ok"); }
else {
Serial.println("Err");
}
}
else { // ----- Nichts erkannt - neuladen
Serial.println("neuladen");
printMyFile(F1);
}
}
// client.stop();
// readString="";
}
}
}
}
// ------------------------------------------------------------------------- Client ausgeben
void printMyFile(char* filename) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
File myFile = SD.open(filename);
if (myFile) {
while (myFile.available()) {
client.write(myFile.read());
}
myFile.close();
}
delay(1000);
}