Отправка или получение данных с и на Wiimote с использованием chrome.hid и драйвера HID по умолчанию для Windows 7 не работает
И спасибо, что нашли время, чтобы прочитать это.
концепция
Подключите wiimote к Windows (или Mac), используя драйвер и службу HID по умолчанию (поскольку BT L2CAP еще не поддерживается в chrome.bluetoothSocket). Я не хочу отправлять и получать данные с устройства; кнопки, гироскоп, инфракрасная камера и т. д.
Моя настройка (соответствующие части)
- MacBook Pro (установлен Yosemite)
- Chrome Canary (версия 41.0.2246.0 канарейка (64-разрядная версия)), работающая в режиме подробного ведения журнала
- Windows 7 через буткемп
- Wiimote (Nintendo RVL-CNT-01)
Код для отправки данных на устройство
var _wiimote = this;
var bytes = new Uint8Array(21);
var reportId = 0x11;
bytes[0] = 0x10;
chrome.hid.send(_wiimote.connectionId, reportId, bytes.buffer, function() {
if (chrome.runtime.lastError) {
console.log(chrome.runtime.lastError.message);
console.log(chrome.runtime.lastError);
}
console.log("Wiimote send data");
chrome.hid.receive(_wiimote.connectionId, function(reportId, data) {
if (chrome.runtime.lastError) {
console.log(chrome.runtime.lastError.message);
console.log(chrome.runtime.lastError);
return;
}
console.log("done receiving.");
console.log("received:" + data.byteLength);
});
});
Ожидаемое поведение?
Загорается первый светодиод и прекращается мигание, которое начинается при подключении, но не при сопряжении устройства.
Фактическое поведение?
Консоль показывает "Данные отправки Wiimote", но светодиоды не реагируют на отправленный отчет.
Так что этот код мало что делает, но согласно документации на wiibrew (см. Ресурсы ниже). Следует отправить в wiimote, чтобы загорелся первый светодиод. Это относится к любому выходному отчету, который я отправляю на устройство. Он реагирует, когда я использую неверные идентификаторы отчета или другую длину байта, затем он не работает.
Следующей была бы часть получения, если я должен был отправить что-либо (на самом деле любые данные) на reportId 0x15 на wiimote, он должен был отправить мне информационный отчет. Я попытался опросить такие сообщения:
Код для получения данных с устройства
var _wiimote = this;
var pollForInput = function() {
chrome.hid.receive(_wiimote.connectionId, function(reportId, data) {
console.log("receiving something",reportId);
if (_wiimote.pollReceive) {
setTimeout(pollForInput, 0);
}
});
};
Ожидаемое поведение?
После отправки 0x00 в reportId 0x15 я должен получить информационный отчет с устройства wiimote.
Фактическое поведение?
Я никогда не получал ничего в выводе консоли, указывающем на связь с устройством.
Используемые ресурсы