?
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 ]