2015-03-27 12 views
5

Ho un dispositivo bluetooth che posso controllare usando gatttool su linux. Voglio sviluppare il mio programma c in grado di inviare comandi ad esso.Come programmare un dispositivo Bluetooth LE usando C su Linux x86?

Ho fatto la programmazione bluetooth in passato ed è relativamente semplice, simile alla programmazione di rete, ma questa volta è un dispositivo bluetooth a basso consumo energetico e seguendo i principi here i risultati in un host sono giù messaggio quando posso chiaramente connettermi/disconnettersi da esso utilizzando gatttool.

Come si crea questo programma? So che dovrei usare la libreria bluez ma non sono sicuro da dove cominciare con i dispositivi a bassa energia.

int main(int argc, char **argv) 
{ 
    struct sockaddr_rc addr = { 0 }; 
    int s, status; 
    char dest[18] = "B4:99:4C:5C:EE:49"; 
    char buf[2048]; 
    pthread_t rthread; 

    setbuf(stdout, NULL); 
    // allocate a socket 
    s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); 
    // set the connection parameters (who to connect to) 
    addr.rc_family = AF_BLUETOOTH; 
    addr.rc_channel = (uint8_t) 1; 
    str2ba(dest, &addr.rc_bdaddr); 
    // connect to server 
    status = connect(s, (struct sockaddr *)&addr, sizeof(addr)); 

    if(status < 0){ 
     perror("Error connecting to host\n"); 
     exit(1); 
    } 

    while(fgets(buf, sizeof(buf), stdin) != NULL){ 
     status = send(s, buf, sizeof(buf), 0); 
     if(status < 0){ 
     printf("Error sending.\n"); 
    exit(1); 
     } 
    } 

    close(s); 

    return; 

risposta

2

vostro programma è per il bluetooth classico, per sostenere la mia dichiarazione, direi che ON qualsiasi dispositivo bluetooth classico vostro lavoro codice avrebbe funzionato bene

Per ottenere lescan vi suggerisco di andare anche se questo link. sudo ./st sarebbe la scansione per divices vicino ble

https://github.com/carsonmcdonald/bluez-experiments

2

Ho cercato di capire come fare anche questo: si consiglia di dare un'occhiata al codice sorgente in sandeepmistry/noble/src/l2cap-ble.c su Github.

Dopo costruirlo (richiede libbluetooth-dev) ed eseguirlo, l'esempio l2cap-ble essenzialmente crea una semplice connessione TTY simile al dispositivo BLE:

$ gcc -o l2cap-ble l2cap-ble.c utility.c -lbluetooth 
$ ./l2cap-ble 12:34:56:78:9A:BC [public|random] 

Il codice sorgente illustra alcune funzioni specifiche BLE (hci_*) che devono essere intercalati con il codice I/O del socket standard.

+0

Il tuo codice non è più disponibile. Puoi postare per favore? – gregoiregentil

+0

Non è il mio codice. Tuttavia, ho scritto un programma molto più sostanziale e pienamente funzionale basato su di esso. Puoi usare questo come esempio di come parlare con un gadget BLE usando Bluez: http://github.com/dlenski/ttblue –

+0

Grazie mille! – gregoiregentil

Problemi correlati