2015-04-21 14 views
8

Tôi lập trình trong Bluez trên Raspberry Pi của tôi với một dongle USB Bluetooth. tôi cần để có thể lập trình kết nối với một Arduino BT, vấn đề là các mô-đun Bluetooth của Arduino vẫn sử dụng di sản để ghép nối bất cứ khi nào tôi cố gắng mở một ổ cắm với thiết bị tôi nhận được một Permission Denied. Làm cách nào để gửi cùng một mã PIN để hoàn thành yêu cầu ghép nối thông qua BlueZ?Bluez Lập trình

+0

Bạn đã thử nghiệm với 'tác nhân đơn giản' chưa? –

+0

Tôi muốn làm điều đó mà không cần phần mềm của bên thứ ba, chỉ thông qua API bluez C. –

+0

Có thử điều này: http://stackoverflow.com/questions/14820004/bluetooth-pairing-in-c-bluez-on-linux –

Trả lời

8

Bạn có thể muốn xem tệp main.c trong thư mục client của mã nguồn Bluez gần đây nhất. Đó là mã nguồn cho công cụ bluetoothctl. Chạy nó quá. Mã nguồn cho thấy chính xác cách họ sử dụng GDBus, bao gồm proxy, đại lý, các phương thức gọi như được mô tả trong API (/doc folder) và tất cả điều đó. Đó là trong C và sử dụng API cấp cao.

Tôi đề nghị bạn bước qua mã vì tôi mất 2 tuần không ngừng cố gắng hiểu Bluez trong C và thực tế là không có tài liệu, nhưng khi tôi đọc tập tin main.c tôi đã sẵn sàng trong một ngày. Tìm hiểu về tài liệu Dbus API thích hợp và quan trọng hơn là các khái niệm. Một số tài liệu đó đã giúp tôi:

Công cụ gdbus: https://developer.gnome.org/gio/stable/gdbus.html

này chứa tất cả các cuộc gọi đến gdbus và các đối tượng trong file main.c và giải thích cho họ rất tốt. https://developer.gnome.org/gio/stable/gdbus-convenience.html

D-Feet, một công cụ vô giá để kiểm tra và tìm hiểu về Dbus trên hệ thống của bạn. Hãy thử kiểm tra bus/bluez. https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet

hoặc

sudo apt-get install d-feet

Không có nhiều của một hướng dẫn, nhưng đáng đọc để hiểu một số khái niệm, như công cụ bluetoothctl phù hợp với những gì họ đang cố gắng để nói ở đây. http://dbus.freedesktop.org/doc/dbus-tutorial.html

Bluetoothctl tạo vỏ tương tác, do đó, có thể không tốn thời gian để cố gắng vừa với mã của bạn, nhưng chỉ cần chọn những gì bạn cần từ mã đó.

Các vấn đề liên quan