Чтение данных с Wii-баланса - PullRequest
5 голосов
/ 05 марта 2011

Я пытаюсь получить вывод от Wii Fit (балансная доска). Я могу найти устройство через C ++ Bluetooth-перечислители, но попытки подключения через Windows-сокет не удаются.

Мне интересно, имел ли кто-нибудь успех в таком направлении (C ++, windows). Мне бы хотелось услышать, как вы это сделали.

Ответы [ 3 ]

5 голосов
/ 05 марта 2011

Wii Balance Board - это устройство HID.Чтобы понять связь с Balance Board, вам нужно немного узнать о Bluetooth HID.На WiiBrew есть хорошая информация о Wiimote и Wii Balance Board .

Я не думаю, что вы можете использовать Windows Sockets для подключения к HID-устройству.Интерфейс Windows Socket Bluetooth позволяет подключаться только к службам на основе RFCOMM.HID основан на L2CAP, который находится ниже стека протоколов Bluetooth.Есть некоторая информация на MSDN об этом ограничении.

Если вы просто хотите взломать его, вы можете попробовать Bluecove для Java.Вы можете сделать что-то, используя другой стек (например, Widcomm).Если вы привязаны к Windows и C ++, вам, возможно, придется заняться написанием собственного драйвера HID для Balance Board.

1 голос
/ 09 марта 2011

При использовании HID на устройстве Bluetooth, как правило, нет необходимо напрямую создавать соединение L2CAP.Все (???) стеки Bluetooth в Win32 поддерживают Bluetooth HID и обеспечивают доступ к потоку / управлению HID через собственный Windows HID API.Нет (прямой) L2CAP требуется!: -)

В WinCE также есть встроенная поддержка Bluetooth HID, но я не уверен, что есть способ получить доступ к HID API.

Так работает библиотека wiimore Брайана Пика.- он использует HID API.Хорошая вещь в этом заключается в том, что таким образом получают поддержку для всех (?) Стеков Bluetooth - каждое из них поддерживает устройства HID через Windows HID API, в то время как для непосредственного использования L2CAP потребуется поддержка каждого из API стеков... (это если у них есть один! BlueSoleil не имеет API L2CAP, насколько я вижу).

Итак, на Win32 нужно просто выполнить сопряжение с устройством и проверить, установлен ли флажок HID на его BluetoothВкладка панели управления сервисом (какой бы стек Bluetooth ни использовался).В моей библиотеке 32feet.NET можно обнаружить устройство, а затем убедиться, что для него включен HID с:

BluetoothDeviceInfo[] list = btCli.DiscoveryDevices();
var deviceInfo = list[n]; // Select the correct device
deviceInfo.SetServiceState(BluetoothService.HumanInterfaceDevice, true);

(Это должно работать на MSFT и BlueSoleil; для Widcomm AFAIK такого API нет -хотя при сопряжении в любом случае он может быть автоматически включен).

Единственное возможное исключение состоит в том, что, очевидно, некоторые устройства не полностью совместимы со спецификациями Bluetooth / HID, мне говорят, что контроллер PS3 blu-ray подобентот.Тогда можно попробовать напрямую подключиться к L2CAP - однако вполне вероятно, что поддержка HID в стеке будет мешать сторонним приложениям, пытающимся предоставить ту же услугу ...

1 голос
/ 08 марта 2011

Как сказал pwc, в MS Bluetooth API есть ограничение, поэтому с сокетами у вас не может быть чего-то другого, кроме RFCOMM, но это не значит, что вы не можете перейти на уровень L2CAP. Вам нужно реализовать драйвер профиля клиента, и вы можете использовать в качестве отправной точки статью из MSDN: Создание клиентского соединения L2CAP с удаленным устройством и наоборот: Прием соединений L2CAP в драйвере профиля Bluetooth

Далее, как сказал pwc, вам нужно изучить Bluetooth HID и WiiBrew для протокола связи.

Также хорошим документом для чтения является Часто задаваемые вопросы о беспроводной технологии Bluetooth - 2010 , в котором четко указано, что возможно иметь L2CAP-соединения с драйвером стека Microsoft Bluetooth. Конечно, не с розетками.

...