2016-12-06 15 views
4

После получения доступа к подключенному устройству с помощью navigator.usb.requestDevice я пытаюсь открыть соединение с подключенным устройством следующим образом:Как заявить интерфейс с помощью WebUSB?

device.open() 
    .then(() => device.selectConfiguration(1)) 
    .then(() => device.claimInterface(1)) 

Это, казалось бы, успешно выбирает конфигурацию, однако claimInterface шаг будет производить следующее сообщение об ошибке:

DOMException: Unable to claim interface. 

Я бегу Chrome 55.0.2883.75 бета с --disable-webusb-security флагом как корень (без тех, кого я не получил каких-либо устройств) на Ubuntu 16.10.

Как я могу подключиться и работать?

Edit:

кажется, что водитель 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_, уже было заявлено водителем –