【发布时间】:2014-03-17 04:14:53
【问题描述】:
我正在尝试使用 chrome.usb API 从 Chrome 应用程序与 USB 设备通信。虽然我可以使用chrome.usb.getDevices 找到设备,但我无法使用chrome.usb.openDevice(回调获取未定义的ConnectionHandle)或chrome.usb.findDevices(回调获取ConnectionHandle 的空列表)连接到它。
有什么方法可以找出错误发生的原因吗? USB caveats 部分指出,如果现有驱动程序已声明该设备,则无法打开该设备,但我认为这里不是这种情况。有没有办法进一步调试? USB 指南还说 chrome.extension.lastError 设置为传输错误,但 chrome.extension 未定义,因此帮助不大。
我不认为现有驱动程序正在认领该设备。我在 OSX 上运行 Chrome,该设备是一支包含 Obex 通信接口的笔。
目前,我的代码基本上是USB hello world的摘录:
manifest.json:
{
"manifest_version": 2,
"name": "USB Hello world",
"version": "0.1",
"minimum_chrome_version": "26",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"permissions": [
"usb",
{"usbDevices": [
{
"vendorId": 7419,
"productId": 4112
}
]}
]
}
background.js:
var deviceId = {"vendorId": 7419, "productId": 4112}, // 0x1cfb, 0x1010 Livescribe Pulse(TM) Smartpen
chrome.usb.getDevices(deviceId, onDeviceFound);
function onDeviceFound(devices) {
console.log("onDeviceFound", devices);
if (0 !== devices.length) {
var device = devices[0];
window.device = device;
chrome.usb.openDevice(device, onOpenDevice);
}
}
function onOpenDevice(connectionHandle) {
if (connectionHandle) {
console.log("Device opened.");
} else {
console.log("Device failed to open.");
}
}
控制台日志很简单
onDeviceFound [{"device":6,"productId":4112,"vendorId":7419}]
Device failed to open.
编辑:顺便说一句,该设备在 Linux 上打开时不会出错。
【问题讨论】:
-
你说“我不认为这里是这种情况。”为什么不?我在搜索引擎中输入了产品名称,发现:github.com/aliendude5300/LibreScribe/issues/10,这表明它是 HID 级设备。这意味着您需要关注 code.google.com/p/chromium/issues/detail?id=290428 以获取新 API(请参阅此处的开发中:code.google.com/p/chromium/codesearch#chromium/src/chrome/…)
-
@sowbug,我的笔是 Pulse,它比 LibreScribe 问题中提到的 Echo 还要老。对我来说, lsusb -v(来自 Linux 机器)看起来略有不同,并且没有 HID 信息。 gist.github.com/yonran/9603267
-
我尝试了 chrome.hid API。显然它不是 HID 设备。 (
chrome.hid.getDevices({vendorId:0x1cfb, productId:0x1010}, function(devices){console.log(devices);})显示了一个长度为 0 的数组,而chrome.usb.getDevices({vendorId:0x1cfb, productId:0x1010}, function(devices){console.log(devices);})给出了一个长度为 1 的数组。) -
这个问题可能是相关的。您不能使用 libusb 与 OSX 上的 CDC 接口进行通信。也许 Chrome 和 libusb 有同样的限制。 stackoverflow.com/questions/20253350/…
-
我在任何地方都找不到 Livescribe SDK。有人有吗?如果需要,我可以支付。 vova@77xy.net
标签: google-chrome-extension google-chrome-app