javascript - 如何从 chrome.usb 的停顿中恢复?

标签 javascript google-chrome usb libusb

我正在向外发送批量传输,我将其停在设备中(我在电缆的两端都写了代码)以中止操作。我正在向端点发送一个自制的控制传输 SET_FEATURE ENDPOINT_HALT,当中止完成时,我跟进一个 CLEAR_FEATURE ENDPOINT_HALT 以恢复端点并再次使用它。在嵌入式调试器中,我可以确认它已在设备中被清除。但在浏览器中,端点上的任何后续传输都将以非常无用的“传输失败”消息(代码 1)结束。

if (errorCode == 4) {
    var ENDPOINT_HALT = 0;
    var CLEAR_FEATURE = 0x01;
    controlTransfer(currentDevice, {direction: 'out', recipient: 'endpoint', requestType: 'standard',
    request: CLEAR_FEATURE, value: ENDPOINT_HALT, index: 1, data: new ArrayBuffer(0)}, genericErrorFilter());
}

从网上查到的,libusb有一个特殊的函数用于清除主机端的停顿,告诉内核端点已经恢复,并且它应该在其内部结构中反射(reflect)出来。这个函数没有暴露在 chrome.usb 中。

有没有办法从 Chrome 的停顿中恢复?或者设备是否有其他可恢复的方式来停止正在进行的批量传输?

我使用的是 Mac OS X 和 Chrome Canary .

最佳答案

您可以尝试对捕获的停顿消息进行中断传输

chrome.experimental.usb.interruptTransfer(integer device,
string direction,
integer endpoint,
string data,
function callback)

关于javascript - 如何从 chrome.usb 的停顿中恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20646868/

相关文章:

javascript - 使用 LIKE 构建查询是否安全,不受 SQL 注入(inject)的影响?

javascript - 优化不可重复的模式

javascript - 如何定义可在所有 API 中使用的基本 url

javascript - 我想构建一个 chrome 扩展,它将更新某些页面但没有任何弹出窗口

c - 当 C 头文件位于闪存驱动器中时运行函数类型的程序?

c++ - 在 C++ 非 GUI 应用程序中检测 USB 插入/移除

javascript - jQuery 条件传递

asp.net - 页面在谷歌浏览器中加载两次

javascript - Chrome扩展程序动态添加脚本

java - 如何获取USB设备是连接在USB3.0还是USB2.0口