Julian schrieb:
> Vielen Dank euch beiden! Also ja im Grunde möchte ich nur eine Batch
> ausführen welche ein skatch auf mein Board schreibt.
Könntest du dich vielleicht derart ausdrücken, daß man den Sinn deiner
Worte begreifen kann?
Eine Batch-Datei bzw. shell-Skript ist etwas, das auf einem PC dadurch
läuft, daß es von einem dazu passenden Kommando-Interpreter-Programm
interpretiert und ausgeführt wird. Was also hat so etwas bittesehr mit
einem Mikrocontroller zu tun?
Und was verstehst du unter "welche ein skatch auf mein Board schreibt"?
Julian schrieb:
> if (Serial1.available() > 0)
> { data = Serial.read();
> switch (data) {
> // LED
> case 'L1ON': digitalWrite(PE2, HIGH); break;
> case 'L1OF': digitalWrite(PE2, LOW); break;
> etc...
Das sieht aus, als wenn du eine Art Kommando-Interpreter auf deinem
Mikrocontroller haben willst.
Aber so etwas geht ganz anders.
Nämlich im Prinzip etwa so:
1. in der Grundschleife von main rufst du eine Routine auf, die aus den
hereintrudelnden Zeichen eine Kommandozeile zusammenbaut.
Also etwa so:
in main:
immerzu:
{ talk(Serial1);
anderes Zeugs..
}
Und im Kommandoprogramm:1 | void talk(int IdSerial)
|
2 | { char c;
|
3 | if (!Char_Available(IdSerial)) return;
|
4 | c = Get_Char(IdSerial);
|
5 | und hier dann die Vor-Auswertung von c.
|
Nämlich, ob es ein normales Textzeichen ist und deshalb an die
Kommandozeile angefügt werden muß, oder ob es ein Editierzeichen ist
(z.B. Backspace) und folglich die bereits bestehende Kommandozeile
entsprechend editiert werden muß, oder ob es ein Zeilenabschluß (CR oder
LF je nach deinem Gusto) ist und folglich die Kommandozeile
interpretiert und sonit ausgeführt werden muß.
Zum Interpretieren brauchst du ne zweite Funktion:
1 | void Kommando (void)
|
2 | { char* ZPtr; // Zeiger in die Kommandozeile
|
3 |
|
4 | Zptr = Kommandozeile; //
|
5 | if (match("L1ON",&ZPtr) { mache etwas..; return; }
|
6 | if (match("L1OFF",&ZPtr) { mache etwas anderes..; return; }
|
7 | ...usw.
|
8 | }
|
Und die Vergleichsfunktion
1 | bool match(Vergleichsstring,
|
2 | Zeiger auf TextZeiger)
|
schreibst du dir selber. Diese soll, wenn der Vergleich positiv
ausfällt, den Zeiger ZPtr entsprechend weiterstellen, damit nachfolgende
Aufrufe von match die weiteren Teile der Kommandozeile interpretieren
können.
W.S.