|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.11.2013, 15:26 | #11 | ||||
Регистрация: 02.07.2013
Сообщений: 7
|
Цитата:
Цитата:
Цитата:
Цитата:
В общем я так понял, что при спаривании блютуза устройства и win8, в винду "прописываются" сервисы, которые поддерживает устройство. В моем случае они задаются в отдельном xml файле при программировании BLE112(этот как раз блютузный модуль от Bluegiga). И дальше для обращения к данным внутри этих сервисов в SetupDiGetClassDevs нужно искать UUID этих сервисов,а не устройства. |
||||
22.12.2013, 20:24 | #12 | |
Регистрация: 22.12.2013
Сообщений: 4
|
Добрый вечер!
Цитата:
У меня вот такая проблема: устройство на BLE112 (пример BGDemo) видно в DeviceManager, программа GUID Explorer показывает это устройство, показывает интерфейс к нему и внутри этого интерфейса путь для CreateFile. Но вот у меня никак не получается добраться до этого интерфейса. Любые попытки получить хоть что-нибудь через SetupDiEnumDeviceInterfaces оканчивается ERROR_NO_MORE_ITEMS и всё. Вот что я пишу: Код:
Где собака-то порылась? Есть у кого-нибудь более-менее рабочая пара проект-софт с использованием BLE112/113 и Windows8? Поделитесь примером, если не секрет! |
|
20.02.2014, 17:44 | #13 |
Новичок
Джуниор
Регистрация: 20.02.2014
Сообщений: 2
|
Доброго времени, подниму тему.
Из приверенного описания не совсем ясно куда нужно вставлять 128-ми битный UUID? Нужно земенить поле .ServiceUuid структуры BTH_LE_GATT_SERVICE перед запросом характеристик? Кроме того, поле ServiceUuid имеет тип BTH_LE_UUID который имеет несколько полей: Код:
Или же нужно проделать похожие манипуляции с заменой в BTH_LE_GATT_CHARACTERISTIC структуре, где также заменить GUID? Или это нужно делать и для сервиса и для характеристики? ЗЫ: Я использую Win8.1x32 и у меня нифига не работает: по прежнему ACCESS_DENIED |
20.02.2014, 18:04 | #14 |
Новичок
Джуниор
Регистрация: 20.02.2014
Сообщений: 2
|
UPD: Перечитал еще подробнее доку по ф-ции BluetoothGATTGetCharacteristicValue
и вижу, что там в качестве дескриптора устройства hDevice должен быть дескриптор сервиса... Получается, что все что я выше предлагал с заменой структур неправильно. И для вызова BluetoothGATTGetCharacteristics и BluetoothGATTGetCharacteristicValue нужно чтобы hDevice это был дескриптор сервиса. Но у меня CreateFile() возвращается с ACCESS_DENIED при попытке открыть deviceInstancePath сервиса. Что я делал: 1. При помощи SetupDiGetClassDevs() && SetupDiEnumDeviceInterfaces() && SetupDiGetDeviceInterfaceDetail() нахожу deviceInstancePath для того чтобы открыть найденное(ные) устройство(а). При этом, для энумерации использую: GUID_BLUETOOTHLE_DEVICE_INTERFACE (он есть в хедере <BthLEDef.h>). 2. Открываю устройство при помощи GreateFile() - все ОК. 3. Делаю BluetoothGATTGetServices() и оно мне аходит пять сервисов, где первый сервис имеет идентификатор 0х1800 4. Из базового Bluetooth_Base_UUID {0000xxxx-0000-1000-8000-00805F9B34FB} создаю свой: {00001800-0000-1000-8000-00805F9B34FB} 5. При помощи SetupDiGetClassDevs() && SetupDiEnumDeviceInterfaces() && SetupDiGetDeviceInterfaceDetail() нахожу deviceInstancePath для того чтобы открыть найденное(ные) устройство(а) - сервис (правильно ли это?) 6. Открываю сервис при помощи GreateFile() - И.. облом.. ACCESS_DENIED.. В чем загвоздка? |
14.04.2014, 23:44 | #15 |
Регистрация: 22.12.2013
Сообщений: 4
|
Вернулся к данной теме после большого перерыва. Вот что выяснилось.
Делать енумерацию устойств по классу GUID_BLUETOOTHLE_DEVICE_INTERFACE нельзя, потому что мы не имеем доступа к устройству напрямую, а только к сервисам. У меня есть устройство на BlueGiga BLE113, в нём сервис с MyServiceGUID. В софте я делаю так: 1) SetupDiGetClassDevsW (MyServiceGUID,nil,0,DIGCF_PRESENT or DIGCF_DEVICEINTERFACE); 2) SetupDiEnumDeviceInterfaces (h,nil,MyServiceGUID,0,...) 3) SetupDiGetDeviceInterfaceDetailW () - получаю путь Далее CreateFileW (PWideChar(p), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0,//dwFileFlags, 0); А потом уже hr:= BluetoothGATTGetServices (bthandle,servicescount,@services[0],@cnt,BLUETOOTH_GATT_FLAG_NONE); и hr:= BluetoothGATTGetCharacteristics (bthandle,@services[i],0,nil,@cnt,BLUETOOTH_GATT_FLAG_NON E); Вроде работает, дальше пока не копался. Потом уже надо устанавливать callback на события или читать значения характеристик. |
15.04.2014, 02:35 | #16 |
Регистрация: 22.12.2013
Сообщений: 4
|
|
15.04.2014, 02:38 | #17 | |
Регистрация: 22.12.2013
Сообщений: 4
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
bluetooth клавиатура как отдельное устройство | Mozgunov | Общие вопросы Delphi | 11 | 31.03.2013 12:09 |
FTP как подключиться | aank10 | C++ Builder | 1 | 13.09.2012 15:49 |
Как можно обратиться к устройству, которое подключено через USB порт | Mikhail Bakurov | Общие вопросы Delphi | 8 | 17.11.2008 20:42 |
Как соединить 2 компьютера через Bluetooth | kikoz | Операционные системы общие вопросы | 6 | 27.10.2008 23:08 |
как подключиться к БД из dll? | fLytarget | Помощь студентам | 3 | 18.08.2008 17:42 |