2012-10-18 43 views
5

Giới thiệu về Bluetooth Low Energy. Tôi biết iPhone 4S, iPhone 5, iPad 3 với iOS 5.1 trở lên hỗ trợ BLE 4.0. Và tôi đọc mã mẫu TemperatureSensor từ Apple. Câu hỏi của tôi là yêu cầu cho các cảm biến là gì? Nói cách khác, loại cảm biến nào có thể được kết nối trong ứng dụng này? Có phải tất cả các thiết bị hỗ trợ BLE 4.0 có thể được kết nối trong các thiết bị iOS của tôi có hỗ trợ BLE 4.0 không?Có phải tất cả các thiết bị hỗ trợ BLE 4.0 có thể được kết nối trong các thiết bị iOS hỗ trợ BLE 4.0 không?

Trả lời

10

Giao tiếp BLE dựa trên GATT (Thuộc tính chung), về cơ bản là trao đổi các giá trị của các đặc điểm khác nhau trong một dịch vụ. Nếu bạn đã đọc mã mẫu TemperatureSensor, bạn phải thấy rằng nó bắt đầu khám phá các thiết bị theo một UUID dịch vụ, và sau đó đọc/ghi các đặc điểm, vẫn dựa trên UUID, theo dịch vụ. Do đó, miễn là cảm biến hỗ trợ BLE và bạn biết về các dịch vụ của nó (UUID, đặc điểm và đặc tính của nó), bạn có thể lập trình ứng dụng iOS để giao tiếp với nó. Một số dịch vụ được Bluetooth SIG xác định trước, vì vậy bạn có thể tìm thấy thông tin của các dịch vụ này trên Bluetooth SIG website.

+0

Một điều không rõ ràng về UUID. Bạn có nghĩa là tôi phải biết UUID của thiết bị BLE (cảm biến) trước khi tôi kết nối? Các thiết bị BLE khác nhau có UUID khác nhau? Hoặc trong một từ khác khi tôi mua một thiết bị BLE mới, nó sẽ cung cấp một UUID với nó để tôi có thể thêm id vào chương trình của tôi trước khi tôi có thể kết nối với nó? Cảm ơn. –

+6

@bagusflyer Trong BLE, mọi thứ (Thiết bị, Dịch vụ, Đặc tính) được gán một UUID. Nhưng bạn không cần phải biết UUID thiết bị để kết nối với chúng. Thay vào đó, bạn luôn có thể quét các thiết bị lân cận và kết nối với chúng, sau đó quét dịch vụ trên thiết bị ngoại vi đó. Nhưng nó sẽ là khôn ngoan để bạn biết UUID dịch vụ để xác định những người cung cấp dịch vụ này. Ví dụ, nếu bạn biết UUID cho nhiệt độ SERVICE 'là 0xabcd, thì bạn chỉ có thể xử lý những ngoại vi đó cung cấp dịch vụ mua gọi' scanForPeripheralsWithServices: 'với UUID 0xabcd làm đối số cho hàm này. –

+0

Cảm ơn lời khuyên của bạn. Rất rõ ràng. –

8

Có, bạn có thể kết nối bất kỳ thiết bị BLE nào với thiết bị iOS được hỗ trợ BLE.

Liên quan đến mã ví dụ bạn đang nói về, nó sẽ cho một UUID dịch vụ cụ thể cho cảm biến nhiệt độ:

[centralManager scanForPeripheralsWithServices:uuidArray options:options]; 

Là như không có cảm biến nhiệt độ trên thị trường mà tôi có thể tìm thấy, bạn thể muốn sử dụng con số không để quét cho bất kỳ và tất cả các thiết bị:

[centralManager scanForPeripheralsWithServices:nil options:options]; 

để thử nghiệm với điều này, bạn có thể sử dụng ứng dụng LightBlue hoặc iTunes Link mà cho phép bạn biến iPhone của bạn thành một thiết bị ngoại vi với bất kỳ dịch vụ/đặc điểm bạn định nghĩa.

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