100+
Descargas
Calificación del contenido
Apto para todo público
Imagen de la captura de pantalla
Imagen de la captura de pantalla
Imagen de la captura de pantalla
Imagen de la captura de pantalla
Imagen de la captura de pantalla

Acerca de esta app

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;
}
Actualización
23 mar 2016

Seguridad de los datos

El primer paso de la seguridad es comprender cómo los desarrolladores recopilan y comparten tus datos. Las prácticas de privacidad y seguridad de datos pueden variar en función del uso de la app, la región y la edad. El desarrollador proporcionó esta información y podría actualizarla con el tiempo.
No se comparten datos con terceros
Más información sobre cómo los desarrolladores declaran el uso compartido
No se recopilan datos
Más información sobre cómo los desarrolladores declaran la recopilación
Se comprometió a satisfacer la Política de Familias de Play