RFID & Fonera Robot - ESC 2K09 Forte Bazzera (VE)

E-mail Stampa PDF

(02.09.2009) RFID, ttyOverSocket per Fonera, iLib Robot: Materiale talking disponibile per il download

(31.08.2009) Anche quest'anno HGComo partecipa all'evento ESC (per sapere cos'è www.endsummercamp.org), soddisfatti dell'organizzazione, dei contenuti e delle persone dell'edizione precedente.

 


Al ritorno da un'esperienza di condivisione e di crescita per HGComo quale l'End Summer Camp 2K09 a Forte Bazzera (VE),

 

soddisfatti per la riuscita, giunge il momento di pubblicare il materiale relativo al talking su Remote Frequency IDentification e il router"La Fonera" implementati nel nostro robot iLib.

Slides shown during the talking (PDF format)

 
ttyOverSocket.c  (for OpenWRT 7.07 kamikaze) 
iLib main board firmware (for AVR ATmega16 uC)* 
iLib motor control firmware (for Microchip PIC16F88 uC)* 
iLib arm control firmware (for Microchip PIC16F88 uC)* 
iLib base control program (for Borland Delphi 6)* 
iLib server program (for Borland Delphi 6)* 
iLib client program (for Borland Delphi 6)*

 

* Not yet available for download.

ttyOverSocket.c

#include 
#include
#include
#include
#include /* File control definitions */
#include /* Error number definitions */
#include /* POSIX terminal control definitions */
#define PORT 3814

int open_port(void)
{
/*
by default 9600baud
*/

int fd; /* File descriptor for the port */
struct termios opzioni;
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
perror("open_port: Unable to open /dev/ttyS0 - ");
}
else fcntl(fd, F_SETFL, 0);
tcgetattr(fd,&opzioni);
opzioni.c_lflag = 0;
tcsetattr(fd,TCSANOW,&opzioni);
return (fd);
}


void addr_initialize(struct sockaddr_in *indirizzo, int port, long IPaddr)
{
indirizzo->sin_family=AF_INET;
indirizzo->sin_port=htons((u_short) port);
indirizzo->sin_addr.s_addr=IPaddr;
}

int main(int argc, char * argv[])
{
int sd, new_sd, bind_result, listen_reslut, pidTx, pidRx;
char inbuff;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int client_len=sizeof(client_addr);
int ricevuti=0;
int fd = open_port();
addr_initialize(&server_addr, PORT, INADDR_ANY);
sd = socket(AF_INET, SOCK_STREAM, 0);

bind_result = bind(sd, (struct sockaddr *) &server_addr, sizeof(server_addr));
if(bind_result !=0)
{
printf("errore di binding -\n");
}
listen_reslut=listen(sd, 5);
if(listen_reslut !=0)
{
printf("errore di listening -\n");
}

for(;;)
{
new_sd = accept(sd, (struct sockaddr*) &client_addr, &client_len);

pidRx=fork();
if(pidRx==0)
{
int res=0;
char buf;
while(1)
{
res = read(fd,&buf,1);
if(res>0)
{
if(send(new_sd, &buf,1, 0)<1)
{
printf("connection down, quit\n");
exit(0);
}
}
}
}
else{
pidTx=fork();
if(pidTx==0)
{
while(1)
{
ricevuti=recv(new_sd, &inbuff, 1, 0);
if(ricevuti>=1)
{
int n = write(fd, &inbuff, 1);
if (n < 0)
printf("write() of 1 bytes failed %d!!-\n", n);
}
else{
printf("Connection closed, quit\n");
close(new_sd);
kill(pidRx);
exit(0);
}
}
}
}
}
}

 

Ultimo aggiornamento ( Lunedì 08 Febbraio 2010 10:58 )  

Aggiungi commento


Codice di sicurezza
Aggiorna

You are here: