El objetivo de la aplicación es el control remoto de hardware como Arduino, Netduino, Frambuesa Pi ...
El protocolo es TCP / IP (cliente).
UP: 0, poder, 0
ABAJO: 0, -poder, 0
IZQUIERDA: -de potencia, potencia, 0
DERECHA: el poder, el poder, 0
MEDIO: 0, 0, 0 ó 0, 0, potencia (Cero activo)
Modo Byte: 3 posiciones se transfieren como 3 bytes (por defecto)
modo ASCII: 3 posiciones se transfieren como texto separado por comas (por finalizado el \ n)
inactiva Sesión: Cada transmisión en una conexión gasificado
Sesión activa: La conexión nunca se cierra, pero si la reconexión automática Necesario (por defecto)
Cero inactiva: Sin retorno a los valores cero después de la liberación
De origen activo: Auto retorno a los valores cero después de la liberación
Código de ejemplo para un servidor en el Raspberry Pi:
#include "stdio.h"
#include "stdlib.h"
# include "string.h"
# include "unistd.h"
# include "sys / types.h"
# include "sys / socket.h"
# include "netinet / in.h"
de error nula (const char * msg)
{
perror (msg);
exit (1);
}
int main (int argc, char * argv [])
{
int sockfd, newsockfd, portno, n;
socklen_t clilen;
char buffer [256];
struct serv_addr sockaddr_in, cli_addr;
sockfd = socket (AF_INET, SOCK_STREAM, 0);
si (sockfd <0)
de error ( "Toma de apertura ERROR");
bzero ((char *) y serv_addr, sizeof (serv_addr));
portno = 12345;
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons (portno);
si (bind (sockfd, (struct sockaddr *)
Y serv_addr, sizeof (serv_addr)) <0)
de error ( "Error en la unión");
mientras que (1)
{
escuchar (sockfd, 5);
clilen = sizeof (cli_addr);
newsockfd = accept (sockfd, (struct sockaddr *)
Y Cli_addr, y clilen);
si (newsockfd <0)
de error ( "Error de aceptar");
mientras que (1)
{
bzero (buffer, 256);
n = read (newsockfd, tampón, 3);
si (n <3)
{
de error ( "Error al leer del socket");
romper;
}
flotador tmp1 = (float) buffer [0];
si (tmp1> 127)
tmp1 - = 256;
flotador TMP2 = (float) buffer [1];
si (Tmp2> 127)
Tmp2 - = 256;
flotar TMP3 = (float) buffer [2];
si (TMP3> 127)
TMP3 - = 256;
printf ( "% d% d% d \ n", (int) tmp1, (int) Tmp2, (int) TMP3);
}
cerrar (newsockfd);
}
cerrar (sockfd);
return 0;
}