2015-05-22 19 views
7

Tôi bắt đầu xây dựng một mạng BLE đơn giản với vi điều khiển và một mâm xôi pi (tardis BLE dongle). Là một điểm khởi đầu, tôi đang tìm một ví dụ C hoặc C++ đơn giản để đọc/ghi một thiết bị BLE, tương tự như những gì tôi có thể thực hiện trên dòng lệnh. Các ví dụ tôi đã tìm thấy cho đến nay khá phức tạp. Là một người mới bắt đầu BLE tôi cần một số ví dụ rất đơn giản để xây dựng từ trước khi tiến lên với một thiết kế phức tạp hơn. Tôi ổn với mã hóa cứng tên thiết bị BLE như tôi có trong ví dụ gatttool bên dưới.Ví dụ đọc/ghi C/C++ BLE với Bluez

Dưới đây là cách tôi hiện đang sử dụng các tùy chọn dòng lệnh từ Bluez.

Từ dòng lệnh tôi có thể sử dụng:

$ sudo hcitool lescan 
LE Scan ... 
BB:A0:50:02:18:07 MyDevice 

Tiếp theo tôi có thể kết nối với các thiết bị trên dòng lệnh với gatttool:

$ sudo gatttol -b BB:A0:50:02:18:07 -I 
[BB:A0:50:02:18:07][LE]> connect 
Attempting to connect to BB:A0:50:02:18:07 
Connection successful 

Cuối cùng tôi có thể đọc và viết bằng các tay cầm thích hợp

[BB:A0:50:02:18:07][LE]> char-write-req 000f 0100 
Characteristic value was written successfully 
[BB:A0:50:02:18:07][LE]> char-write-cmd 0011 4C467A 

Một số trang web tôi đã sử dụng để nghiên cứu ban đầu và bắt đầu:
http://people.csail.mit.edu/albert/bluez-intro/c404.html
https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c

+0

Bạn cũng có thể có một cái nhìn tại mới nhất api DBUS GATT được công bố bởi các phiên bản mới nhất của Bluez (từ 5,29 ... Tôi nghĩ). Vẫn còn thử nghiệm, nhưng tôi đã làm một số xét nghiệm và nó hoạt động khá tốt. Tất nhiên hiệu suất có thể thấp hơn một chút so với truy cập vào thư viện bluez trực tiếp nhưng tôi nghĩ rằng nó đáng để thử ... –

Trả lời

4

Điều gì đó đơn giản? Làm thế nào ngắn là một đoạn của chuỗi? Cá nhân tôi nghĩ rằng mã gatttool chính nó là đủ đơn giản để làm theo và trích xuất cho mục đích của riêng bạn (tôi đã thực hiện nó gần đây). Nhưng nếu điều đó thực sự không phù hợp với bạn thì tùy chọn khác là libgatt. Về bản chất, nó là cùng một mã mà gatttool sử dụng nhưng đã được đóng gói thuận tiện hơn vào một API thư viện công cộng. Có một cái nhìn tại gatt.h mà đã kết nối/đọc/ghi vv Hy vọng rằng nó nên được tự hiển nhiên như thế nào để sử dụng đó.

+0

Cảm ơn bạn đã trả lời. gatttool.c và gatt.c dường như có những gì tôi cần. Bạn có thể làm rõ những gì một GAttrib nên được? Ví dụ, lấy hoạt động dòng lệnh để viết, char-write-cmd, tôi có một địa chỉ MAC, xử lý và giá trị đã biết để gửi. Tôi muốn sử dụng gatt_write_cmd() chức năng từ gatt.c và chỉ cần vượt qua trong một tập hợp các giá trị đã biết, nhưng tôi bị mắc kẹt trên các con trỏ GAttrib và làm thế nào nó liên quan đến những gì tôi đã sử dụng với các tùy chọn dòng lệnh. –

+0

gatttool.c và gatt.c ở đâu? làm thế nào để tải về vv? – peterk