sirhC
19.01.2010, 18:44
Hallo liebe ASURO-Fangemeinde,
ich bin noch Neuling in Sachen C-Programmierung und versuche seit heute Mittag um 2 ein Programm zu schreiben, welches Signale vom Infrarottranceiver aufnimmt, die ich per Terminalprogramm(HTerm) vom PC aus losschicke, in ein array abspeichert und - je nachdem was dann da drin steht - darauf reagiert.
mein Problem ist leider, dass bei mir das array irgendwie nicht richtig ausgelesen wird.
mein Befehl sieht beispielsweise im dualen folgendermaßen aus:
1010 0000 0010 0000
also dezimal eine 40992
wenn dieser beim ASURO ankommt, soll er vorwärts fahren.
bis jetzt sieht der Code folgendermaßen aus:
#include "asuro.h" //habe noch die stadard asuro.h von AREXX
void longsleep(unsigned int dauer) //Funktion die etwas länger, als ein einfacher "Sleep" Befehl wartet
{
unsigned int i;
for(i=0;i<dauer;i++)
{
Sleep(216);
}
return;
}
int main(void)
{
unsigned int command[1]; //Setzen des Arrays "command"
Init();
while(1)
{
StatusLED(YELLOW);
SerWrite("\n\r Warte auf Kommando.\n\r",24);
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);
SerRead(command,2,0); //Warten auf einen 2 Bytes, also 16 Bit langen Befehl
longsleep(50);
if(command[0]==40992) //wenn ASURO 40992 empfängt vorwärts fahren
{
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,180);
longsleep(200);
break;
}
else //ansonsten von vorne anfangen
{
break;
}
}
return 0;
}
sieht jemand irgendwo einen potentiellen Fehler?
ein kleiner Tip wäre echt klasse
Gruß
Chris
ich bin noch Neuling in Sachen C-Programmierung und versuche seit heute Mittag um 2 ein Programm zu schreiben, welches Signale vom Infrarottranceiver aufnimmt, die ich per Terminalprogramm(HTerm) vom PC aus losschicke, in ein array abspeichert und - je nachdem was dann da drin steht - darauf reagiert.
mein Problem ist leider, dass bei mir das array irgendwie nicht richtig ausgelesen wird.
mein Befehl sieht beispielsweise im dualen folgendermaßen aus:
1010 0000 0010 0000
also dezimal eine 40992
wenn dieser beim ASURO ankommt, soll er vorwärts fahren.
bis jetzt sieht der Code folgendermaßen aus:
#include "asuro.h" //habe noch die stadard asuro.h von AREXX
void longsleep(unsigned int dauer) //Funktion die etwas länger, als ein einfacher "Sleep" Befehl wartet
{
unsigned int i;
for(i=0;i<dauer;i++)
{
Sleep(216);
}
return;
}
int main(void)
{
unsigned int command[1]; //Setzen des Arrays "command"
Init();
while(1)
{
StatusLED(YELLOW);
SerWrite("\n\r Warte auf Kommando.\n\r",24);
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);
SerRead(command,2,0); //Warten auf einen 2 Bytes, also 16 Bit langen Befehl
longsleep(50);
if(command[0]==40992) //wenn ASURO 40992 empfängt vorwärts fahren
{
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,180);
longsleep(200);
break;
}
else //ansonsten von vorne anfangen
{
break;
}
}
return 0;
}
sieht jemand irgendwo einen potentiellen Fehler?
ein kleiner Tip wäre echt klasse
Gruß
Chris