【发布时间】:2017-05-15 10:41:01
【问题描述】:
我正在为 Intel Edison 编写蓝牙驱动程序。 Board 软件是最新可用的,我正在使用基于 Eclipse 的 IDE 进行开发。 此 edison 版本中的 Bluez 版本号为 5.37。
我正在设计一个必须满足以下要求的系统:
- 扫描附近的蓝牙设备。 [X]
- 根据名称和 MAC 地址检测传感器设备。 [X]
- 自动配对和连接传感器设备。 []
最后一项是问题,因为我可以检测到传感器设备,但我无法使用 bluez5 接口将它们配对。到目前为止,我已尝试使用 D-BUS 接口,但它无法正常工作,因为我不断收到以下错误消息:
接口“org.bluez.Manager”上带有签名“s”的方法“FindAdapter”不存在
此处提供代码。请注意:
- DBusConnection *conn -> DBUS_BUS_SYSTEM
- const char *适配器->“hci0”。
代码:
DBusMessage *msg, *reply;
DBusError err;
const char *reply_path;
char *path;
msg = dbus_message_new_method_call("org.bluez", "/","org.bluez.Manager", "FindAdapter");
dbus_message_append_args(msg, DBUS_TYPE_STRING, &adapter,DBUS_TYPE_INVALID);
dbus_error_init(&err);
reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
dbus_message_unref(msg);
有什么想法吗?
【问题讨论】:
-
您可以使用一些更高级的 API,例如 Qt5 现在有一个蓝牙模块(它在引擎盖下也使用了 bluez)。也许这可以更直接地使用。
标签: c++ bluetooth iot bluez intel-edison