2017-12-15 22 views
0

나는 블루투스에서 특성을 읽으려고 오전 :블루투스에서 특성을 읽는 방법?

service uuid: 00001800-0000-1000-8000-00805f9b34fb 
characteristic uuid: 00002a00-0000-1000-8000-00805f9b34fb 

나는 chr_get_valuechr_read의 이러한 메소드를 호출하는 방법을 모른다. 열쇠가 gdbus 인 것을 압니다.

+2

을 읽고 있음을 시도한거야? 우리는 당신이하려는 것을 더 잘 이해할 필요가 있습니다. – roelofs

+0

bluez5.47을 컴파일 했으므로 /bluez5.47/tools/gatt-service.c에서 소스 코드를 볼 수 있습니다. 나는 chr_read (구조체 특성 * chr, DBusMessageIter * iter)를 호출하려고 시도했지만 iter를 얻는 방법을 모른다. 내 영어가 가난하고 이해할 수 있기를 바랍니다. – cris

+0

게시물을 세부 정보 및 시도한 모든 것으로 업데이트 할 수 있습니까? – roelofs

답변

0

서비스 UUID는 GAP (Generic Access Profile) 서비스 UUID이고 읽으려고하는 특성 UUID (00002a00-0000-1000-8000-00805f9b34fb)는 장치 이름 특성이며 원격 LE의 장치 이름을 반환합니다 장치.

bluez는 DBus API를 통해 모든 기능을 제공합니다. DBus와 C에서이 작업을 수행하려면 먼저 DBus 프로토콜과 libdbus 또는 다른 DBus 바인딩 API를 이해해야합니다.

문서 및 python 예제는 bluez 소스 디렉토리의 doc/gatt-api.txt 및 test/example-gatt-client를 참조하십시오. test/example-gatt-client에는 장치의 특성을 스캔, 검색 및 읽는 방법을 이해하는 데 도움이되는 훌륭한 python 예제가 있습니다.

그렇지 않으면 연결하려는 장치의 BD_ADDR 주소 (Bluetooth 장치 주소)를 알고있는 경우 bluez의 gatttool 도구를 사용하여이 작업을 간단히 수행 할 수 있습니다.

예를 들어, 주소가 03 인 경우 : 0F : 45 : 65 : 43 : FF 및 장치 HCI 인터페이스 주소는 명령의 순서 아래 hci0 당신은 아마도 몇 가지 코드를 게시 할 수 2a00 특성

[03:0F:45:65:43:FF][LE]> connect 
Attempting to connect to 03:0F:45:65:43:FF 
Connection successful 

[03:0F:45:65:43:FF][LE]> primary 
attr handle: 0x0001, end grp handle: 0x0005 uuid: 00001800-0000-1000-8000-00805f9b34fb 
attr handle: 0x0006, end grp handle: 0x0009 uuid: 00001801-0000-1000-8000-00805f9b34fb 
# lists all other primary services 

[03:0F:45:65:43:FF][LE]> characteristics 
handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb 
handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb 
# lists all other characteristics as well 

[03:0F:45:65:43:FF][LE]> char-read-uuid 2a00 
handle: 0x0003 value: 4d 79 20 6e 61 6d 65 
+0

감사합니다. 원격 장치에 연결하려고하지 않았습니다. 제가 영어로 무엇을 의미하는지 표현하는 것이 어려워 보입니다. 나는 리눅스에서 나의 주변 장치를 읽고 싶다. "gatt-service"명령을 실행하여 "00001802-0000-1000-8000-00805f9b34fb"서비스를 등록하고 OK를 반환하지만 Android 앱에서 검사 할 수는 없습니다. 내가 무슨 뜻인지 이해할 수 없다면 답장이 필요하지 않습니다.^_^ – cris

+0

확인. gatt-service는 서비스를 등록 만합니다. 하지만 안드로이드 애플 리케이션에서 리눅스 주변 기기를 찾으려면 주변 기기를 광고해야합니다. 도구 디렉토리의 advtest 도구를 참조하십시오. DBus API를 사용하여 광고를 등록 할 수도 있습니다 (test/example-advertisement python 스크립트 참조). – Ravi

+0

내 주변 장치를 광고하기 위해 "sudo hciconfig hci0 leadv"명령을 실행했습니다. "bluetoothctl"및 "show"를 실행하면 "00001802-0000-1000-8000-00805f9b34fb"uuid를 찾을 수 있지만 "00001800-0000-1000-8000-00805f9b34fb"및 "00001801-0000- 1000-8000-00805f9b34fb "안드로이드 애플 리케이션에. 나는 DBus API를보고 예제를 광고 할 것이다. 고맙습니다. – cris