L'objectiu de l'aplicació és el control remot de maquinari com Arduino, Netduino, Gerd Pi ...
El protocol és TCP / IP (client).
UP: 0, poder, 0
BAIX: 0, -poder, 0
ESQUERRA: -de potència, potència, 0
DRETA: el poder, el poder, 0
MITJÀ: 0, 0, 0 o 0, 0, potència (Zero actiu)
Mode Byte: 3 posicions es transfereixen com 3 bytes (per defecte)
manera ASCII: 3 posicions es transfereixen com a text separat per comes (per finalitzat el \ n)
inactiva Sessió: Cada transmissió en una connexió gasificat
Sessió activa: La connexió no es tanca, però si la reconnexió automàtica Cal fer (per defecte)
Zero inactiva: Sense retorn als valors zero després de l'alliberament
D'origen actiu: Acte retorn als valors zero després de l'alliberament
Codi d'exemple per a 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"
d'error nul·la (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)
d'error ( "Presa d'obertura ERROR");
bzero ((char *) i 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 *)
I serv_addr, sizeof (serv_addr)) <0)
d'error ( "Error en la unió");
mentre que (1)
{
escoltar (sockfd, 5);
clilen = sizeof (cli_addr);
newsockfd = accept (sockfd, (struct sockaddr *)
I Cli_addr, i clilen);
si (newsockfd <0)
d'error ( "Error d'acceptar");
mentre que (1)
{
bzero (memòria intermèdia, 256);
n = read (newsockfd, tampó, 3);
si (n <3)
{
d'error ( "Error en llegir del socket");
trencar;
}
flotador tmp1 = (float) buffer [0];
si (tmp1> 127)
tmp1 - = 256;
flotador TMP2 = (float) buffer [1];
si (Tmp2> 127)
Tmp2 - = 256;
surar TMP3 = (float) buffer [2];
si (TMP3> 127)
TMP3 - = 256;
printf ( "% d% d% d \ n", (int) tmp1, (int) Tmp2, (int) TMP3);
}
tancar (newsockfd);
}
tancar (sockfd);
return 0;
}
Data d'actualització:
23 de març 2016