我想在linux [ubuntu]中運行c的基本代碼來搜索藍牙設備,但我面臨一些問題。linux在藍牙編程c
通過使用命令sudo apt-get install bluez
,要安裝所需的blueZ庫,它表示bluez已經是最新版本。
但錯誤出現的是無法找到bluetooth.h
和編譯C源代碼的其他文件,以gcc -o simplescan simplescan.c -lbluetooth
是否有一個完整的庫包,或者我要下載這些頭文件?
我下面這個link
我想在linux [ubuntu]中運行c的基本代碼來搜索藍牙設備,但我面臨一些問題。linux在藍牙編程c
通過使用命令sudo apt-get install bluez
,要安裝所需的blueZ庫,它表示bluez已經是最新版本。
但錯誤出現的是無法找到bluetooth.h
和編譯C源代碼的其他文件,以gcc -o simplescan simplescan.c -lbluetooth
是否有一個完整的庫包,或者我要下載這些頭文件?
我下面這個link
也許你並沒有包括必要的頭。
這裏有代碼的例子來掃描藍牙設備
#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;
}
編譯它在Linux,只是做
gcc -o simplescan simplescan.c -lbluetooth
編輯:
原始代碼可以在here
被發現至於我知道那裏沒有這些頭的包。你必須從網上下載以下頭文件。
bluetooth.h
hci.h
hci_lib.h
和你的主機上創建一個名爲 「bluetooth
」 /usr/lib/
目錄下,並在上方的頭複製到/usr/lib/bluetooth/
。然後編譯你的程序,它應該工作。
注:在編譯與-lbluetooth
鏈接,您需要安裝Linux的頭文件包。在Ubuntu或Debian上,這是通過這樣做的:
sudo apt install linux-headers
我是一個C++程序員,但我認爲你需要源代碼。 Bluetooth.h是一個C++頭文件。 – Stony 2012-07-10 07:44:18
試試'apt-get install libbluetooth-dev'。 – 2012-07-10 08:04:48
apt-get無法正常工作,我可以從https://launchpad.net/ubuntu/lucid/+source/bluez/4.60-0ubuntu8下載此軟件包 – 2012-07-11 08:53:01