2015-03-27 6 views
5

У меня есть устройство Bluetooth, которое я могу контролировать с помощью gatttool на linux. Я хочу разработать собственную программу c, которая может отправлять ей команды.Как запрограммировать устройство Bluetooth LE с помощью C на Linux x86?

В прошлом я выполнял программирование bluetooth, и это относительно просто, аналогично сетевому программированию, но на этот раз это устройство с низким энергопотреблением Bluetooth и следование принципам here приводит к тому, что сообщение хоста не работает, когда я могу четко подключиться/отключите его, используя gatttool.

Как создать эту программу? Я знаю, что я должен использовать библиотеку bluez, но я не уверен, с чего начать с устройств с низкой энергией.

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; 

ответ

2

программа для классической Bluetooth, чтобы поддержать мое заявление я бы сказал ON любой классический Bluetooth устройства ваш код работать будет работать нормально

Чтобы получить lescan я предлагаю пойти, хотя по этой ссылке. Судо ./st будет сканировать поблизости BLE

Носители информации

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

2

Я пытался выяснить, как сделать это слишком: вы можете взглянуть на исходный код в sandeepmistry/noble/src/l2cap-ble.c на Github.

После создания его (требуется libbluetooth-dev) и запустить его, то l2cap-ble пример по существу создает простой TTY-как подключение к BLE устройства:

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

Исходный код иллюстрирует несколько BLE специфических функций (hci_*), которые должны быть перемешаны со стандартным кодом ввода-вывода сокета.

+0

Ваш код больше не доступен. Можете ли вы разместить его, пожалуйста? – gregoiregentil

+0

Это не мой код. Тем не менее, я написал гораздо более существенную и полностью функциональную программу, основанную на ней. Вы можете использовать это как пример того, как разговаривать с гаджетом BLE с помощью Bluez: http://github.com/dlenski/ttblue –

+0

Большое спасибо! – gregoiregentil

 Смежные вопросы

  • Нет связанных вопросов^_^