सी

2012-07-10 4 views
7

में लिनक्स ब्लूटूथ प्रोग्रामिंग मैं ब्लूटूथ डिवाइस खोजने के लिए लिनक्स [उबंटू] में सी का मूल कोड चलाने की कोशिश कर रहा हूं, लेकिन मुझे कुछ समस्या का सामना करना पड़ रहा है।सी

आवश्यक ब्लूज़ लाइब्रेरी स्थापित करने के लिए कमांड sudo apt-get install bluez का उपयोग करके यह कह रहा है कि ब्लूज़ पहले से ही नवीनतम संस्करण है।

लेकिन त्रुटि आता bluetooth.h और सी स्रोत कोड संकलन में अन्य फ़ाइलों को खोजने के लिए, gcc -o simplescan simplescan.c -lbluetooth

साथ में सक्षम नहीं है कि वहाँ एक पूरा पुस्तकालय पैकेज है, या मैं इन हेडर फाइल डाउनलोड करने के लिए क्या है ?.

मैं इस link

+0

मैं एक सी ++ प्रोग्रामर हूं, लेकिन मुझे लगता है कि आपको स्रोतों की आवश्यकता है। Bluetooth.h एक सी ++ हेडर फ़ाइल है। – Stony

+7

'apt-get libbluetooth-dev' इंस्टॉल करने का प्रयास करें। –

+0

apt-get काम नहीं कर रहा है, क्या मैं इस पैकेज को https://launchpad.net/ubuntu/lucid/+source/bluez/4.60-0ubuntu8 –

उत्तर

5

अनुसरण कर रही हूं शायद तुम आवश्यक हेडर को शामिल नहीं किया था।

यहाँ

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <sys/socket.h> 
#include <bluetooth/bluetooth.h> 
#include <bluetooth/hci.h> 
#include <bluetooth/hci_lib.h> 

int main(int argc, char **argv) 
{ 
    inquiry_info *ii = NULL; 
    int max_rsp, num_rsp; 
    int dev_id, sock, len, flags; 
    int i; 
    char addr[19] = { 0 }; 
    char name[248] = { 0 }; 

    dev_id = hci_get_route(NULL); 
    sock = hci_open_dev(dev_id); 
    if (dev_id < 0 || sock < 0) { 
     perror("opening socket"); 
     exit(1); 
    } 

    len = 8; 
    max_rsp = 255; 
    flags = IREQ_CACHE_FLUSH; 
    ii = (inquiry_info*)malloc(max_rsp * sizeof(inquiry_info)); 

    num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, flags); 
    if(num_rsp < 0) perror("hci_inquiry"); 

    for (i = 0; i < num_rsp; i++) { 
     ba2str(&(ii+i)->bdaddr, addr); 
     memset(name, 0, sizeof(name)); 
     if (hci_read_remote_name(sock, &(ii+i)->bdaddr, sizeof(name), 
      name, 0) < 0) 
     strcpy(name, "[unknown]"); 
     printf("%s %s\n", addr, name); 
    } 

    free(ii); 
    close(sock); 
    return 0; 
} 

लिनक्स पर यह संकलन करने के लिए, बस कर ब्लूटूथ डिवाइस के लिए स्कैन करने कोड का एक उदाहरण है

gcc -o simplescan simplescan.c -lbluetooth 

संपादित करें:

मूल कोड here

में पाया जा सकता
+0

क्या आपने वह कोड स्वयं लिखा था या आपने इसे [कहीं] से प्राप्त किया था (https://people.csail.mit.edu/albert/bluez-intro/c404.html) ...? – Daniel

+0

@ डैनियल मुझे इसे कहीं से मिला, क्यों? lol – SamuelNLP

+3

क्योंकि आप इसे अपने उत्तर में उल्लेख करना भूल गए हैं। – Daniel

2

क्योंकि मुझे पता है कि इन शीर्षकों के लिए कोई पैकेज नहीं है। आपको इंटरनेट से निम्न हेडर फाइलें डाउनलोड करनी होंगी।

  1. bluetooth.h
  2. hci.h
  3. hci_lib.h

और अपने मेजबान मशीन में "bluetooth" नामक एक निर्देशिका /usr/lib/ के तहत बना सकते हैं और /usr/lib/bluetooth/ के लिए ऊपर हेडर नकल। फिर अपने कार्यक्रम को संकलित करें, इसे काम करना चाहिए।

नोट: जबकि -lbluetooth

1

साथ लिंक संकलन आप लिनक्स हेडर पैकेज स्थापित करने की जरूरत है। उबंटू या डेबियन पर यह ऐसा करके किया जाता है:

sudo apt install linux-headers