Hallo zusammen,
ich glaub ich hab´s hinbekommen.
Von der PC-Console kommen Zeichen in der Form von z.B. "Camera_Right\r"; Diese werden im Programm wie folgt empfangen und verarbeitet:
char consolMessage[30]; (global)
void SerialRead_Keyboard(){
char incomingSign;
bool messageComplete = false;
static int i = 0;
for( int y = 0; y <= 30; y++){
consolMessage[y] = '\0';
}
if (Serial.available() > 0)
{
while((Serial.available() > 0) & (!messageComplete))
{
incomingSign = Serial.read();
delay(1);
if (incomingSign != '\r'){
consolMessage[i] += incomingSign;
Serial1.print("incomingSign - ");Serial1.print(incomingSign);Serial1.print(" - i - ");Serial1.println(i);
i++;
}
else {
messageComplete = true;
Serial1.print("messageComplete = true - ");Serial1.println(consolMessage);
i = 0;
}
}
}
}
Anschließend werden die Message wie folgt ausgewertet:
void ConsolSystemState(void){
char systemBuf[14]; (aus einer PROGMEN table)
Serial1.print("ConsolSystemState,void - ");Serial1.println(consolMessage);
for (int i = 0; i <= 2; i++) {
strcpy_P(systemBuf, (char*)pgm_read_word(&(system_table[i])));
Serial1.print("System Buffer - ");Serial1.println(systemBuf);
Serial1.print("system_table[i] - ");Serial1.println(i);
if ((strcmp(consolMessage, systemBuf)) == 0) {
Serial1.print("ConsolSystemState, match - ");Serial1.println(consolMessage);
switch(i){
case 0:
remote.systemControl = SYSTEM_SLEEP;
Ausgabe1((char*)"ConsolSystemState sleep - \0", 9, i, 9, 9);
break;
case 1:
remote.systemControl = SYSTEM_WAKEUP;
Ausgabe1((char*)"ConsolSystemState wakeup - \0", 9, i, 9, 9);
break;
case 2:
remote.systemControl = SYSTEM_RESET;
Ausgabe1((char*)"ConsolSystemState reset - \0", 9, i, 9, 9);
break;
}
}
}
}
Die einzelnen Ausgaben sind nur für´s Debugging!!
Es funktioniert einwandfrei. Ich bin mir aber fast sicher, dass man das besser machen kann. Z.B. das Löschen des char arrays. Lt. den Forenexperten reicht ein einfaches "consolMessage[0] = '\0';". Bei mir ging das nicht. Es kamen Zeichenketten heraus, die mit Steuerzeichen o.ä. anfingen, und am Ende kamen Teile der erwarteten Zeichen.
Gruß Willi