2012-07-10 3 views
7

리눅스의 [우분투]에서 c의 기본 코드를 실행하여 블루투스 장치를 검색하려고하는데 몇 가지 문제가 있습니다.리눅스에서 블루투스 프로그래밍

sudo apt-get install bluez 명령을 사용하여 필요한 blueZ 라이브러리를 설치하면 bluez가 이미 최신 버전임을 나타냅니다.

그러나 오류가 gcc -o simplescan simplescan.c -lbluetooth

으로, bluetooth.h 및 C 소스 코드를 컴파일에 다른 파일을 찾을 수없는 그 완전한 라이브러리 패키지가 있습니까, 아니면이 헤더 파일을 다운로드해야합니까 온다?

나는 어쩌면 당신은 필수 헤더를 포함하고 있지 않습니다 link

+0

저는 C++ 프로그래머이지만 소스가 필요하다고 생각합니다. Bluetooth.h는 C++ 헤더 파일입니다. – Stony

+7

'apt-get install 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

@Daniel 어딘가에서 가져 왔는데 왜? Lol – SamuelNLP

+3

답변에서 언급하는 것을 잊었 기 때문에. – Daniel

2

나는이 헤더에 패키지가 없음을 알고 있습니다. 인터넷에서 다음 헤더 파일을 다운로드해야합니다.

  • hci_lib.h
  • hci.h
  • bluetooth.h
    1. 호스트 컴퓨터에 /usr/lib/에서 " bluetooth"라는 디렉토리를 만들고 /usr/lib/bluetooth/에 위의 헤더를 복사합니다. 그런 다음 프로그램을 컴파일하면 제대로 작동합니다.

      참고 : -lbluetooth

    1

    와 링크를 컴파일하는 동안 당신은 리눅스 헤더 패키지를 설치해야합니다. 우분투 또는 데비안에서이 작업을 수행하면 다음을 수행합니다.

    sudo apt install linux-headers 
    
    관련 문제