2016-12-06 28 views
4

나는 다음과 같이 연결된 장치와의 연결을 엽니 다하기 위해 노력하고있어 navigator.usb.requestDevice를 사용하여 연결된 장치에 대한 액세스 권한을 얻은 후 :WebUSB를 사용하여 인터페이스를 요청하는 방법은 무엇입니까?</p> <pre><code>device.open() .then(() => device.selectConfiguration(1)) .then(() => device.claimInterface(1)) </code></pre> <p>그것은 겉으로는 성공적, 그러나 <code>claimInterface</code> 단계는 다음과 같은 오류를 구성 생산할 예정 선택됩니다

DOMException: Unable to claim interface. 

나는 우분투 16.10에 (내가 모든 장치를 못해서 그없이) 루트로 --disable-webusb-security 플래그 크롬 55.0.2883.75 베타를 실행 해요.

어떻게 연결을 시작할 수 있습니까?

편집 :

내가 연결하기 위해 노력하고있어 장치가 직렬 장치를이기 때문에 cdc_acm 드라이버가 이미이 장치를 주장 할 수 있도록 드라이버를 언로드, 인터페이스를 주장 것으로 보인다

는 (그러나이 후 약 불평 인터페이스 1은 사용할 수 없으며 0 또는 2). 구성을 선택하면

+0

때문에 우리는 당신이 권리를 주장하고 있는지 확인해야합니다. 전체 장치 설명자를 나열 할 장치에 대해'lsusb -v'의 출력을 포함하십시오. USB CDC 장치는 실제로로드 된 기존 드라이버 때문에 드라이버를 언로드해야 강제로 인터페이스를 해제해야하기 때문에 WebUSB에서 사용하기가 어려울 수 있습니다. "인터페이스를 등록 할 수 없음"과 같은 오류가 표시되면 Chrome에서 chrome : // device-log의 오류에 대해 더 자세한 정보를 제공 할 수 있습니다. –

답변

1

, 당신은 device.configuration.interfaces[0].interfaceNumber에 올바른 인터페이스 번호를 찾을 수 있습니다 :이 장치는 여러 개의 인터페이스를 가지고

device.open() 
    .then(() => device.selectConfiguration(1)) 
    .then(() => device.claimInterface(device.configuration.interfaces[0].interfaceNumber)) 
+0

답변 해 주셔서 감사합니다. 여기에서 제안한 방법을 사용하여 찾은 번호 0, 1 및 2. 그러나 그것들 모두는 같은 오류를 일으킬 것입니다. –

+0

@JorisBlaak 어떤 종류의 장치에 액세스하려고합니까? 다른 장치 (예 : USB 키)로 시도 했습니까? – Supersharp

+0

_Edit_에서 언급 한 것과 같은 직렬 장치가 드라이버에서 이미 주장했습니다 –