The purpose of the app is to control remote hardware like Arduino, Netduino, Raspberry Pi ...
The protocol is TCP / IP (Client).
UP: 0, power, 0
DOWN: 0, -power, 0
LEFT: -power, power, 0
RIGHT: power, power, 0
MIDDLE: 0, 0, 0 or 0, 0, power (Zero active)
Byte Mode: 3 positions are transfered as 3 bytes (default)
ASCII mode: 3 positions are transfered as text seperated by comma (ended by n)
Session inactive: Each transmission in a Serated connection
Session active: Connection never closed, but if Necessary automatic reconnect (default)
Zero inactive: No return to zero values after release
Zero active: Auto return to zero values after release
Sample code for a server on 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"
void error (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 sockaddr_in serv_addr, cli_addr;
sockfd = socket (AF_INET, SOCK_STREAM, 0);
if (sockfd <0)
error ( "ERROR opening socket");
bzero ((char *) & 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);
if (bind (sockfd, (struct sockaddr *)
& Serv_addr, sizeof (serv_addr)) <0)
error ( "ERROR on binding");
while (1)
{
listen (sockfd, 5);
clilen = sizeof (cli_addr);
newsockfd = accept (sockfd, (struct sockaddr *)
& Cli_addr, & clilen);
if (newsockfd <0)
error ( "ERROR on accept");
while (1)
{
bzero (buffer, 256);
n = read (newsockfd, buffer, 3);
if (n <3)
{
error ( "ERROR reading from socket");
break;
}
float tmp1 = (float) buffer [0];
if (tmp1> 127)
tmp1 - = 256;
float tmp2 = (float) buffer [1];
if (tmp2> 127)
tmp2 - = 256;
float TMP3 = (float) buffer [2];
if (TMP3> 127)
TMP3 - = 256;
printf ( "% d% d% d n", (int) tmp1, (int) tmp2, (int) TMP3);
}
close (newsockfd);
}
close (sockfd);
return 0;
}
The protocol is TCP / IP (Client).
UP: 0, power, 0
DOWN: 0, -power, 0
LEFT: -power, power, 0
RIGHT: power, power, 0
MIDDLE: 0, 0, 0 or 0, 0, power (Zero active)
Byte Mode: 3 positions are transfered as 3 bytes (default)
ASCII mode: 3 positions are transfered as text seperated by comma (ended by n)
Session inactive: Each transmission in a Serated connection
Session active: Connection never closed, but if Necessary automatic reconnect (default)
Zero inactive: No return to zero values after release
Zero active: Auto return to zero values after release
Sample code for a server on 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"
void error (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 sockaddr_in serv_addr, cli_addr;
sockfd = socket (AF_INET, SOCK_STREAM, 0);
if (sockfd <0)
error ( "ERROR opening socket");
bzero ((char *) & 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);
if (bind (sockfd, (struct sockaddr *)
& Serv_addr, sizeof (serv_addr)) <0)
error ( "ERROR on binding");
while (1)
{
listen (sockfd, 5);
clilen = sizeof (cli_addr);
newsockfd = accept (sockfd, (struct sockaddr *)
& Cli_addr, & clilen);
if (newsockfd <0)
error ( "ERROR on accept");
while (1)
{
bzero (buffer, 256);
n = read (newsockfd, buffer, 3);
if (n <3)
{
error ( "ERROR reading from socket");
break;
}
float tmp1 = (float) buffer [0];
if (tmp1> 127)
tmp1 - = 256;
float tmp2 = (float) buffer [1];
if (tmp2> 127)
tmp2 - = 256;
float TMP3 = (float) buffer [2];
if (TMP3> 127)
TMP3 - = 256;
printf ( "% d% d% d n", (int) tmp1, (int) tmp2, (int) TMP3);
}
close (newsockfd);
}
close (sockfd);
return 0;
}
Show More