none
CONEXIÓN CON RASPBERRY PI A TRAVÉS DE BLUETOOTH RRS feed

  • Pregunta

  • Hola a todos, soy nuevo en esto de C#, y me gustaría donde poder encontrar información para hacer el siguiente proyecto:

    He construido un robot utilizando una raspberry pi, con código en C++. El robot funciona bien con su algoritmo  y código en C++, pero me gustaría poder controlarlo a través de bluetooth en una aplicación diseñada en c#, me gustaría poder controlar los movimiento y recibir los datos de los sensores. En problema viene al crear la aplicación en C#, ya que no encuentro ninguna información de como hacerlo.

    Os dejo mi código en c++, que sería el que se ejecuta en la raspberry pi, (es una versíon rápida, sin tener en cuenta los sensores), me faltaría el programa que tengo que ejecutar en mi pc, para establecer la conexión. 

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/socket.h>
    #include <bluetooth/bluetooht.h>
    #include <bluetooth/rfcomm.h>
    #include <wiringPi.h>
    
    
    using namespace std;
    
    int mra = 5; // right advance motor
    int mrb = 6; // right back motor
    int mla = 27; // left advance motor
    int mlb = 17; // left back motor
    
    int advance()
    {
        digitalWrite(mra, HIGH);
        digitalWrite(mrb, LOW);
        digitalWrite(mla, HIGH);
        digitalWrite(mlb, LOW);
    
        return 0;
    }
    
    int right()
    {
        digitalWrite(mra, LOW);
        digitalWrite(mrb, LOW);
        digitalWrite(mla, HIGH);
        digitalWrite(mlb, LOW);
    
        return 0;
    }
    
    int left()
    {
        digitalWrite(mra, HIGH);
        digitalWrite(mrb, LOW);
        digitalWrite(mla, LOW);
        digitalWrite(mlb, LOW);
    
        return 0;
    }
    
    int backwards()
    {
        digitalWrite(mra, LOW);
        digitalWrite(mrb, HIGH);
        digitalWrite(mla, LOW);
        digitalWrite(mlb, HIGH);
    
        return 0;
    }
    
    int stop()
    {
        digitalWrite(mra, LOW);
        digitalWrite(mrb, HIGH);
        digitalWrite(mla, LOW);
        digitalWrite(mlb, HIGH);
    
        delay (30);
    
        digitalWrite(mra, LOW);
        digitalWrite(mrb, LOW);
        digitalWrite(mla, LOW);
        digitalWrite(mlb, LOW);
    
        return 0;
    }
    
    int main()
    {
        wiringPiSetup();
        pinMode(mra,OUTPUT);
        pinMode(mrb,OUTPUT);
        pinMode(mla,OUTPUT);
        pinMode(mlb,OUTPUT);
    
        struct sockaddr_rc server_address = {0}, client_address = {0};;
        char data[1024] = {0};
        int s, clientsocket, bytes;
        socklen_t opt = sizeof(client_address);
    
        s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
    
        bind(s, (struct sockaddr *)&server_address,sizeof(server_address));
        listen(s, 1);
    
        printf("Put into listening mode\n");
    
        clientsocket= accept(s, (struct sockaddr *)&client_address,&opt);
    
        ba2str( &client_address.rc_bdaddr, data);
        fprintf (stderr, "Connected to %s\n", data);
    
        for(;;){
            bytes = read(clientsocket, data, sizeof(data));
            if(bytes>0){
                printf("Alphabet: %s\n", data);
            }
    
            if(*data=='W'){
                advance();
            }
            else if(*data=='X'){
                backwards();
            }
            else if(*data=='A'){
                left();
            }
            else if(*data=='D'){
                right();
            }
            else if(*data=='S'){
                stop();
            }
    
        }
        close(clientsocket);
        close(s);
    
    
        return 0;
    }

    Cualquier fuente de información para el desarrollo del proyecto es bienvenida.

    Gracias

    lunes, 1 de junio de 2020 13:40

Todas las respuestas

  • Hola  Fulgencio Blazquez,

      

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comparto el siguiente enlace, este te ayudará para poder programar en C#

    IoT core C# on raspberry pi

      

    Gracias por usar los foros de MSDN. 

      

    Andres Aguilar 

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    martes, 2 de junio de 2020 23:04
    Moderador