Hallo zusammen.
Und ein herzliches willkommen im Forum an Touby_van.
Also erst einmal zur Funktion SerRead().
Touby_van hat die Funktion schon richtig aufgerufen mit einer 0 als letzten Parameter. Dadurch wartet die Funktion nämlich darauf das 3 Zeichen empfangen werden, bevor sie überhaupt wieder zurück kommt.
Die Anzahl der Bytes in der Variablen data[] sind 5 Bytes. Die Zeichen "0123" und das angehängte \0 werden vorbelegt und als Speicher reserviert.
Der Teufel steckt hier im Timing.
Probiert mal:
Code:
#include "asuro.h"
int main(void)
{
unsigned char data[] = "0123";
unsigned int i;
Init ();
while (1)
{
for (i = 0; i < 100; i++)
Sleep (72);
SerRead (data, 3, 0);
for (i = 0; i < 100; i++)
Sleep (72);
if (data[0] == 'A' && data[1] == 'S' && data[2] == 'U')
SerWrite ("HALLO!", 6);
else if (data[0] == 'B' && data[1] == 'O' && data[2] == 'L')
SerWrite ("gang1!", 6);
else if (data[0] == 'C' && data[1] == 'I' && data[2] == 'R')
SerWrite ("gang2!", 6);
else if (data[0] == 'D' && data[1] == 'E' && data[2] == 'P')
SerWrite ("gang3!", 6);
else
SerWrite ("falsch", 6);
}
return 0;
}
Die Verzögerung bringt es ans laufen. (Sie dürfen auch kürzer sein.)
Eine der Warteschleifen kann weg. Welche, müsst ihr mir erklären 
Gruß Sternthaler
Lesezeichen