快速发现蓝牙设备

时间:2013-03-20 09:43:01

标签: bluetooth

我想做的是: 我有一个包含某些蓝牙设备的数据库(BD_ADDR)。我想发现是否有任何设备在范围内,如果是,请告诉它做某事。 一种方法是始终运行发现,创建发现的设备列表并将其与数据库进行比较。如果找到数据库中存在的设备,我打开它的连接并告诉它做某事。 问题是这个过程很慢并且可靠地找到所有设备,查询长度必须很大,并且必须一直重复该过程。

我的想法是只发现一次我的蓝牙,将它与我的设备配对,然后每当设备进入范围时,与它建立连接不是通过经历冗长的发现而是以某种方式使用我已经拥有的信息对于这个设备。

换句话说,是否可以使用我已经了解的有关设备的信息(之前与之配对或仅与之配对)开始与之通信而无需先发现它?

谢谢你, donescamilloATgmail.com

1 个答案:

答案 0 :(得分:0)

您使用什么库进行蓝牙以及您打算与哪种插座进行通信?在大多数情况下,如果您知道它的BD_ADDR,您应该能够创建到设备的套接字连接。例如,在BlueZ中,您只需编写以下内容即可创建与通道1上已知服务器的RFCOMM连接:

struct sockaddr_rc addr = { 0 };
int s, status;

// destination address
char dest[18] = "00:17:EC:35:96:FF";

// 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 = 1;
str2ba( dest, &addr.rc_bdaddr );

// connect to server
status = connect(s, (struct sockaddr *)&addr, sizeof(addr));

希望这有帮助。