2012-05-31 2 views
1

Я работаю с библиотеками BlueZ для управления стеклом bluetooth под linux. Я пытаюсь открыть сокет, который должен подключаться к определенной службе, чей UUID известен. Я успешно попытался открыть сокеты между сервером и клиентом следующих примеров здесь:Bluetooth: как создать сокет для подключения к службе с конкретным UUID с Bluez?

http://people.csail.mit.edu/albert/bluez-intro/c404.html

где также описывается, как исследовать услуги в удаленном хосте; однако я не могу понять, как указать UUID при подключении сокета. Это довольно просто в других контекстах, как это происходит при использовании Android-библиотек; однако с BlueZ я не нашел примеров в Интернете.

Спасибо за помощь!

Стефано

- добавил некоторые детали в ответ ... не знаю, правильно ли это или нет; если нет, извините


благодарит за вашу помощь!

В моем посте я сказал, что хотел связать сокет с указанным UUID, так как я имел в виду такую ​​функцию createRfcommSocketToServiceRecord, как можно найти в:

http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#createRfcommSocketToServiceRecord%28java.util.UUID%29

который возвращает сокет при определенном UUID. Я разрабатываю два программного обеспечения, один из которых является клиентом, а другой - сервером, поэтому это сервис, который я создаю, а не стандартный. Я публикую такую ​​службу на сервере с указанным UUID, и я хотел бы подключиться к нему с клиентом. Сервер работает нормально, поскольку с помощью платформы android, использующей упомянутый метод createRfcommSocketToServiceRecord, я могу подключиться к серверу с нужным сервисом.

Пример, который вы опубликовали, очень ясен, но, к сожалению, он находится в Python, хотя (я забыл указать) Я использую Bluez как библиотеку C. Я могу использовать SDP и проверять службы на удаленном сервере; однако, когда это время установки сокета, я не вижу, как указать порт. Я думал о rc_channel, но насколько я понял, это канал bluetooth (от 1 до 11 или что-то подобное). Не могли бы вы указать, где я могу указать порт при создании сокета в клиенте? И где я могу найти правильный порт в сложной структуре, с которой работает sdp? снова

http://people.csail.mit.edu/albert/bluez-intro/x604.html

Спасибо за помощь: - идет речь!

+0

С какими сервисами вы пытаетесь подключиться? Чтобы спросить об этом другим способом, какой сокет вы используете? – ajpyles

ответ

1

Вы не подключаете сокеты по UUID. Вы используете сокет для подключения к удаленному устройству и просматриваете его SDP, чтобы обнаружить UUID, который он предлагает, и сопоставить его с портом сокета. Вот пример этого процесса с использованием PyBluez, обертки python выше BlueZ http://people.csail.mit.edu/albert/bluez-intro/x290.html