0

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

我的想法是只发现我的蓝牙一次,将它与我的设备配对,然后从那时起,只要设备进入范围,就可以通过长时间的发现与它建立连接,而是以某种方式使用我已经为该设备拥有的信息.

换句话说,是否可以使用我已经知道的关于设备的信息(之前与它配对过或刚刚与它建立过连接)开始与它通信而无需先发现它?

谢谢你,donescamilloATgmail.com

4

1 回答 1

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));

希望这可以帮助。

于 2013-03-20T13:57:46.100 回答