3

并感谢您花时间阅读本文。

概念

使用默认的 HID 驱动程序和服务将 wiimote 连接到 windows(或 mac)(因为 chrome.bluetoothSocket 尚不支持 BT L2CAP)。我不想从设备发送和接收数据;按钮、陀螺仪、红外摄像头等......

我的设置(相关部分)

  • Macbook pro(已安装优胜美地)
  • Chrome Canary(版本 41.0.2246.0 canary(64 位)),以详细日志记录模式运行
  • Windows 7 通过训练营
  • Wiimote(任天堂 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);
    });
});

预期的行为?

点亮第一个 LED 并停止在连接但未配对设备时开始闪烁。

实际行为?

控制台显示“Wiimote 发送数据”,但 LED 对发送的报告没有反应。

所以这段代码没有做太多,但根据wiibrew上的文档(见下面的资源)。它应该发送到 wiimote 以点亮第一个 LED。这适用于我发送到设备的任何输出报告。当我使用错误的 reportIds 或不同的字节长度时,它会做出反应,然后它会失败。

接下来是接收部分,如果我要向 wiimote 上的 reportId 0x15 发送任何内容(实际上是任何数据),它应该向我发送信息报告。我试过轮询这样的消息:

从设备接收数据的代码

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 设备的信息报告。

实际行为?

我从未在控制台输出中收到任何指示来自设备的通信的信息。

使用的资源

4

0 回答 0