Java-клиент рабочего стола Bluetooth не может найти службы

Я новичок в программировании Bluetooth, поэтому, пожалуйста, имейте это в виду.

Я пытаюсь подключиться к датчику импульсов с настольного компьютера, в частности, Zephyr HxM BT. Я не использую какие-либо драйверы для конкретных устройств, я использую библиотеку Java bluetooth - Bluecove, а мой стек bluetooth - BlueSoleil.

Насколько я понимаю, мой путь

1) Сканирование для устройств BT

public void startSearch() throws BluetoothStateException{
    System.out.println("Inquiry started");
    localdevice.getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, this);
}

Это отлично работает, он обнаруживает мой пульс пояса и звонки

public void deviceDiscovered(RemoteDevice arg0, DeviceClass arg1)

2) Поиск устройства для услуг

После обнаружения устройства его следует добавить в список кэшируемых устройств DiscoveryAgent. Это моя первая проблема, поскольку кэш (и ранее известные устройства) всегда пуст, хотя я обнаружил свой пояс.

Таким образом, способ, которым я делаю это сейчас, состоит в том, чтобы либо сохранить свой собственный список устройств, либо просто запустить поиск служб непосредственно из deviceDiscovered.

Я все еще немного не уверен, что использую правильные параметры, но, прочитав руководство по эксплуатации устройства BT и документацию javax.bluetooth на DiscoveryAgent.searchServices:

public int searchServices(int[] attrSet,
                      UUID[] uuidSet,
                      RemoteDevice btDev,
                      DiscoveryListener discListener)
               throws BluetoothStateException

Мой код:

public void searchServices(RemoteDevice device){
    UUID[] uuidSet = new UUID[1];
    uuidSet[0]=new UUID("1101",false); //Serial Port
    System.out.println("Searching for services on " + device.getBluetoothAddress() );
    try{
    agent.searchServices(null,uuidSet, device,this);}
    catch (BluetoothStateException e){
    System.out.println("BluetoothStateException caught.");
    }

    }

Я установил для атрибута значение null, потому что в документации говорится, что он будет искать службы с атрибутами по умолчанию, однако я также попытался использовать только ServiceID (0x0003) в качестве атрибута, но безуспешно.

Вот где я застрял, я передаю правильное устройство BT в функцию, и он начинает поиск, но никогда не дает мне никаких результатов, он просто ищет навсегда все, что я знаю, без исключения, без вызовов

public void servicesDiscovered(int arg0, ServiceRecord[] arg1) 

или же

public void serviceSearchCompleted(int arg0, int arg1)

Итак, я думаю, мои вопросы: - Я делаю что-то не так? Какие-либо предложения? - Каковы другие подходы к подключению к устройству BT, и какую информацию я должен знать об устройстве для этого?

Вот некоторая информация, которая, на мой взгляд, уместна в руководстве по эксплуатации устройства:

Для подключения к устройству HxM необходимо выполнить следующие шаги. 1) Активируйте службу Bluetooth устройства / компьютера, желающего подключиться к HxM. 2) Сканирование устройств Bluetooth в диапазоне 3) Сопряжение с устройством HxM, обнаруженным в диапазоне 4) Обнаружение служб сопряженного HxM 5) Подключение к последовательному порту HxM устройство

Диаграмма выше показывает, что Bluetooth HxM обычно связывается с мобильным устройством по каналу Bluetooth. HxM поддерживает только одну ссылку за раз и использует Bluetooth SPP (профиль последовательного порта) для связи с другими устройствами по следующему низкоуровневому протоколу: • 115 200 бод • 8 бит данных • 1 стоповый бит • Нет четности

Любые предложения очень ценятся

редактировать: я просто хочу добавить, что я тестирую код с помощью цикла ввода с консоли, поэтому программа не сразу завершается после вызова searchServices, она должна иметь время для завершения, если я не неправильно понимаю асинхронные задачи

1 ответ

Я просто хотел обновить это и сказать, что обнаружил проблему, похоже, мне пришлось использовать короткий UUID вместо длинного. Я должен был попробовать оба этих варианта, прежде чем я решил, что застрял, но я не думал, что это будет иметь значение.

Другие вопросы по тегам