2013-12-17 5 views
9

대량 전송을 보내고 있습니다. 케이블에서 전송을 중단하고 코드를 전송합니다. 나는 집에서 만든 제어 전송 SET_FEATURE ENDPOINT_HALT를 끝점에 보내고 중단이 완료되면 CLEAR_FEATURE ENDPOINT_HALT를 사용하여 끝점을 복구하고 다시 사용합니다. 임베디드 디버거에서 장치에서 제거되었는지 확인할 수 있습니다. 그러나 브라우저에서 엔드 포인트의 모든 후속 전송은 매우 도움이되지 않는 "전송 실패"메시지 (코드 1)로 끝납니다. 내가 인터넷에 발견하는 내용에서chrome.usb에서 실속을 복구하는 방법은 무엇입니까?

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는 엔드 포인트가 회복 된 커널에게, 호스트 측에 실속을 지우기위한 특별한 기능을 가지고 있으며, 그것의 내부 구조에 그것을 반영해야한다. 이 함수는 chrome.usb에 표시되지 않습니다.

Chrome의 마구간에서 복구 할 수있는 방법이 있습니까? 또는 진행중인 대량 전송을 중단하기 위해 장치에서 복구 가능한 다른 방법이 있습니까?

나는 Mac   OS   X 및 Chrome Canary을 사용하고 있습니다.

+0

나는 장치의 전체 재 인수 다음)를 chrome.usb.resetDevice을 (수행하여 실속 이후에 수행하기 위해 관리 생각 . – nraynaud

+5

편집 비율이 옥상을 넘었으니, 곧 셰익스피어의 품질에 대한 답이 없습니다. – nraynaud

답변

1

당신은 사로 잡았 스톨 메시지에 interruptTransfer을 시도 할 수 있습니다

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