2015-03-27 10 views
5

मेरे पास एक ब्लूटूथ डिवाइस है जिसे मैं लिनक्स पर गैट्टोल का उपयोग करके नियंत्रित कर सकता हूं। मैं अपना खुद का सी प्रोग्राम विकसित करना चाहता हूं जो इसे कमांड भेज सकता है।लिनक्स x86 पर सी का उपयोग कर ब्लूटूथ ली डिवाइस को कैसे प्रोग्राम करें?

मैंने अतीत में ब्लूटूथ प्रोग्रामिंग किया है और यह नेटवर्क प्रोग्रामिंग के समान अपेक्षाकृत सीधा है, लेकिन इस बार, यह ब्लूटूथ कम ऊर्जा डिवाइस है और सिद्धांतों का पालन करते हुए here परिणामस्वरूप मेजबान संदेश नीचे है जब मैं स्पष्ट रूप से कनेक्ट कर सकता हूं/gatttool का उपयोग कर इसे से डिस्कनेक्ट करें।

मैं इस प्रोग्राम को कैसे बना सकता हूं? मुझे पता है कि मुझे ब्लूज़ लाइब्रेरी का उपयोग करना चाहिए, लेकिन मुझे यकीन नहीं है कि कम ऊर्जा उपकरणों के साथ कहां से शुरू किया जाए।

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

अपने कार्यक्रम, क्लासिक ब्लूटूथ के लिए है मेरी बयान का समर्थन करने के मैं किसी भी क्लासिक ब्लूटूथ डिवाइस पर कह सकते हैं कि आपके कोड काम ठीक

प्राप्त करने के लिए काम करेगा lescan मैं इस लिंक हालांकि जाना सुझाव देते हैं। sudo ./st पास के ble divices

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

2

मैं कैसे यह भी करने के लिए पता लगाने की कोशिश कर रहा है के लिए स्कैन होगा: आप sandeepmistry/noble/src/l2cap-ble.c में स्रोत कोड पर एक नज़र लेने के लिए चाहते हो सकता है गीथूब पर

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

स्रोत कोड में कुछ BLE-विशिष्ट कार्यों को दिखाता है (hci_*:

यह (libbluetooth-dev की आवश्यकता है) का निर्माण और इसे चलाने के बाद, l2cap-ble उदाहरण अनिवार्य रूप से BLE डिवाइस के लिए एक सरल TTY की तरह कनेक्शन बन जाता है) जिसे मानक सॉकेट I/O कोड के साथ छेड़छाड़ करने की आवश्यकता है।

+0

आपका कोड अब और उपलब्ध नहीं है। क्या आप इसे पोस्ट कर सकते हैं? – gregoiregentil

+0

यह मेरा कोड नहीं है। हालांकि, मैंने इसके आधार पर एक और अधिक महत्वपूर्ण और पूरी तरह से कार्यात्मक कार्यक्रम लिखा था। आप इसे ब्लूज़ का उपयोग करके बीएलई गैजेट से बात करने के उदाहरण के रूप में उपयोग कर सकते हैं: http://github.com/dlenski/ttblue –

+0

बहुत बहुत धन्यवाद! – gregoiregentil

संबंधित मुद्दे