Subject:
|
I cannot send more than 6 bytes with lnpd
|
Newsgroups:
|
lugnet.robotics.rcx.legos
|
Date:
|
Tue, 21 Jan 2003 17:43:59 GMT
|
Viewed:
|
3525 times
|
| |
| |
I'm trying to send some data from the RCX to my computer, using lnpd,
but I have the following problem: it seems that I cannot send more than
6/7 bytes, because after this limit I have a lot of errors from lpnd
(see the log below). The tower and the RCX are 20 cm far, and they were
not moved in any experiment.
I'm using BrickOS 0.2.6.09.newConf2 and lpnd downloaded from
http://legos.sourceforge.net/files/linux/LNPD/.
I thought it was battery problem (maybe too low either on the tower or
on th RCX), but I can download brickOS and my programs, so why can't I
send 10 bytes?
Any suggestion? Am I doing something wrong?
Halva
Here is the program that runs on the RCX:
--------------------------------------------------
#define MY_PORT 2
#define MY_ADDR 1
#define DEST_HOST 0x8
#define DEST_PORT 0x7
#define DEST_ADDR ( DEST_HOST << 4 | DEST_PORT )
#define SEND_N_BYTES 10
int main ( int argc, char** argv ) {
unsigned char buf[15];
/* near range */
lnp_logical_range( 1 );
/* lnp_set_hostaddr ( MY_ADDR ); */
ds_active (&SENSOR_1);
while (!shutdown_requested() ){
unsigned val = SENSOR_1;
unsigned light = LIGHT_1;
size_t gap = sizeof(val);
memcpy( buf, &val, gap );
buf[gap] = 0x0f;
buf[gap+1] = 0xf0;
memcpy( buf+gap+2, &light, sizeof(light) );
lnp_addressing_write ( buf, SEND_N_BYTES, DEST_ADDR, MY_PORT );
cputw( light );
sleep(2);
}
ds_passive(&SENSOR_1);
exit(0);
}
-----------------------------------------------
Here is what I run on my computer:
-----------------------------------------------
#define MY_PORT 7
#define MSG_BUF_LENGTH 16
char * message = NULL;
void packet_handler (const unsigned char * from_msg, unsigned char size,
unsigned char from) {
int loop = 0;
memset( message, 0x0, MSG_BUF_LENGTH );
memcpy( message, from_msg, (size_t) size );
printf( "message from %hX length %d: ", from, size );
for ( loop = 0; loop <= MSG_BUF_LENGTH; loop++ )
printf( "%.2hX ", (unsigned char)message[loop] );
printf( "\n" );
fflush( stdout );
}
int main ( int argv, char** argc ) {
switch ( lnp_init(0,0,0,0,0) ) {
case INIT_OK:
break;
case INIT_BAD_PARAM: {
fprintf(stderr,"returned INIT_BAD_PARAM\n");
exit(1);
} break;
case INIT_ERROR: {
fprintf(stderr,"returned INIT_ERROR\n");
exit(2);
} break;
}
message = (char *) malloc(MSG_BUF_LENGTH);
lnp_addressing_set_handler( MY_PORT, packet_handler );
while (1) {
}
free( message );
lnp_shutdown();
return 0;
}
------------------------
Finally the log file:
------------------------
234:Info > running in Timesharing Mode
1799:Integrity > Header f1
1799:Integrity > Length 12
1834:Logical > Inter-Byte Timeout
1834:Integrity > Integrity reset
2871:Client > connection 0 from host 127.0.0.1, port 34132
3537:Logical > Keepalive sent
3922:Integrity > Header f1
3922:Integrity > Length 12
3957:Logical > Inter-Byte Timeout
3957:Integrity > Integrity reset
6045:Integrity > Header f1
6045:Integrity > Length 12
6075:Logical > Inter-Byte Timeout
6075:Integrity > Integrity reset
7043:Logical > Keepalive sent
....
|
|
1 Message in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|