如何从chrome.usb的档位中恢复?

nra*_*aud 9 javascript usb google-chrome 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());
}
Run Code Online (Sandbox Code Playgroud)

根据我在互联网上发现的内容,libusb有一个特殊的功能,用于清除主机端的停顿,告诉内核端点已经恢复,并且它应该在其内部结构中反映出来.chrome.usb中未公开此功能.

有没有办法从Chrome中的档位中恢复?或者是否有其他可恢复的方式从设备停止正在进行的批量转移?

我正在使用Mac OS X和Chrome Canary.

Rec*_*bot 1

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

chrome.experimental.usb.interruptTransfer(integer device,
string direction,
integer endpoint,
string data,
function callback)
Run Code Online (Sandbox Code Playgroud)