BrickOS und LNP problem
-
Hallo
Will ne kleine IR-Kommunikation für BrickOS (Lego Mindstorms Roboter aufsetzen)
irgendwie gehts aber nicht ....
hier die 2 Programme ...
das eine schickt die Daten per Seriellem-IR-Tower
der RCX (Mikrocontroller empfängt):PC-Program:
#include <liblnp.h> #include <unistd.h> #define MY_PORT 7 #define DEST_HOST 0 #define DEST_PORT 2 #define DEST_ADDR ( DEST_HOST << 4 | DEST_PORT ) void printInt(int i); int test; int num; int result; int main() { if(lnp_init(0,0,0,0,0)) { perror("lnp_init"); exit(1); } else printf("init OK\n"); test=1; printInt(test); } void printInt(int i) { char buf[3]; int result; num = (char *)(&i); buf[0] = 'i'; memcpy(buf + 1, &i, 2); result = lnp_addressing_write(buf,3, DEST_ADDR, MY_PORT); printf("Result: %d\n",result); }
Der LNPD läuft einwandfrei
der IR-Tower blinkt grün beim starten des programms und das sende-pc-programm gibt 0 zurück --> funktioniert fehlerfrei ?!?
The second program is the RCX-program:#include <lnp.h> #include <lnp/lnp-logical.h> #include <sys/lcd.h> #include <conio.h> #include <unistd.h> #define MY_PORT 2 #define DEST_HOST 0x80 #define DEST_PORT 2 #define DEST_ADDR ( DEST_HOST << 4 | DEST_PORT ) int flag=0; void addr_handler_1(const unsigned char *data, unsigned char length, unsigned char src){ ++flag; } int main() { lnp_logical_range(1); cputs("Hallo"); msleep(2000); cputs(" "); lnp_addressing_set_handler(MY_PORT,addr_handler_1); while(1) { if(flag!=0)break; } cputs("Exit"); msleep(1000); return 0; }
It should break and print EXIT on the RCX-LCD when it receives a message, no
matter what message.
Leider passiert gar nix .... das ding bleibt in der endlos-schleife
wenns hilft: lnp_adressing_set_handler setzt den interrupt für addr_handler_1
irgendjemand ne idee warum nix passiert ?
gruß
lars[ edit by c.rackwitz: cpp-Tags ]