Здравствуйте, Евгений Музыченко, Вы писали:
vsb>>Как тогда браузер может с USB работать?
ЕМ>Вот так просто взять и начать "работать с USB" — никак.
Я делаю navigator.usb.requestDevice({filters:[]}) и оно мне показывает все USB-девайсы с возможностью подключиться к любому из них и работать на низком уровне без всяких драйверов.
Ок, девайса, под которого у меня в винде нет драйвера, под рукой сейчас нет, проверить, можно ли так работать вообще с любым девайсом, я не могу. Но API не подразумевает драйвера, там низкоуровневые USB-запросы и ответы.
Здравствуйте, vsb, Вы писали:
vsb>Я делаю navigator.usb.requestDevice({filters:[]}) и оно мне показывает все USB-девайсы с возможностью подключиться к любому из них и работать на низком уровне
На насколько низком? Асинхронный DMA зарядить можно?
vsb>без всяких драйверов.
Такого не бывает. За любое устройство всегда отвечает один драйвер или несколько. Судя по описанию, Chrome и Firefox работают через WinUSB. А то, что почти все остальные браузеры его не поддерживают, говорит о том, что это было добавлено относительно недавно.
Вообще, интерфейс к USB для браузера — это редкостное извращение с точки зрения программной иерархии. Это следствие явного дурдома, в котором браузер пытается подменить собой ОС.
vsb>девайса, под которого у меня в винде нет драйвера, под рукой сейчас нет, проверить, можно ли так работать вообще с любым девайсом, я не могу.
Так удалите драйверы для любого из устройств (только полностью), и сразу увидите.
Здравствуйте, Евгений Музыченко, Вы писали:
vsb>>Я делаю navigator.usb.requestDevice({filters:[]}) и оно мне показывает все USB-девайсы с возможностью подключиться к любому из них и работать на низком уровне
ЕМ>На насколько низком? Асинхронный DMA зарядить можно?
При чём тут DMA? Можно сделать запрос к устройству и получить ответ. Я про протоколы. В протоколе USB нет никакого DMA.
ЕМ>Вообще, интерфейс к USB для браузера — это редкостное извращение с точки зрения программной иерархии. Это следствие явного дурдома, в котором браузер пытается подменить собой ОС.
Ну что поделаешь, если традиционные ОС для пользователей и программистов настолько неудобны, что даже браузер удобней.
ЕМ>Так удалите драйверы для любого из устройств (только полностью), и сразу увидите.
Здравствуйте, vsb, Вы писали:
vsb>При чём тут DMA? Можно сделать запрос к устройству и получить ответ.
Эти ответы можно получать асинхронно — тот же видеопоток? Или только то, что устройство может отдать на текущий момент?
vsb>Ну что поделаешь, если традиционные ОС для пользователей и программистов настолько неудобны, что даже браузер удобней.
Или программистам стало настолько лень изучать API ОС, что они добились его дублирования в браузерах...
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, vsb, Вы писали:
vsb>>до последних версий чтобы его активировать, нужно специальный inf-файл установить.
ЕМ>В любых нужно. Иначе откуда винда догадается, что к этому устройству нужно подключить именно winusb, а не другой драйвер?
vsb>>Толи в 11, то ли в 10, то ли в последних "версиях" 10-ки оно вроде заработало совсем без дополнительных усилий.
ЕМ>Какое именно устройство заработало? Такое возможно в двух случаях: устройство стало достаточно известным, чтобы MS включила его в стандартные списки, или в этой системе оно уже когда-то устанавливалось, и описание сохранилось.
Собственно этот механизм нормально работает начиная с восьмерки, о которой уже все забыли. Должен был работать и в Win7, но M$ забыли одну строчку в winusb.inf...
По уму, конечно, не должно быть "WinUSB-совместимых" устройств, а должна быть возможность принудительно назначить устройству общий драйвер, а не только частный. Но уж как сделали, так сделали.
SIG>Должен был работать и в Win7, но M$ забыли одну строчку в winusb.inf...
Не строчку, а две секции, и не забыли, а явно оговорили, что этот INF они дают исключительно в качестве шаблона.
Здравствуйте, Евгений Музыченко, Вы писали:
vsb>>При чём тут DMA? Можно сделать запрос к устройству и получить ответ. ЕМ>Эти ответы можно получать асинхронно — тот же видеопоток? Или только то, что устройство может отдать на текущий момент?
Здравствуйте, mike_rs, Вы писали:
_>для этого есть режим usb bulk transfer
Он есть в протоколах USB, его поддерживает WinUSB, но в обсуждаемом WebUSB я его не вижу. Там есть что-то про выполнение transferIn/transferOut "in parallel", но я недостаточно знаком с этой кухней, чтобы оценить степень параллелизма.