Re[8]: Зачем делают UART over USB?
От: vsb Казахстан  
Дата: 19.09.23 10:30
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>Как тогда браузер может с USB работать?


ЕМ>Вот так просто взять и начать "работать с USB" — никак.


Я делаю navigator.usb.requestDevice({filters:[]}) и оно мне показывает все USB-девайсы с возможностью подключиться к любому из них и работать на низком уровне без всяких драйверов.

Ок, девайса, под которого у меня в винде нет драйвера, под рукой сейчас нет, проверить, можно ли так работать вообще с любым девайсом, я не могу. Но API не подразумевает драйвера, там низкоуровневые USB-запросы и ответы.
Re[9]: Зачем делают UART over USB?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 19.09.23 11:04
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb>Я делаю navigator.usb.requestDevice({filters:[]}) и оно мне показывает все USB-девайсы с возможностью подключиться к любому из них и работать на низком уровне


На насколько низком? Асинхронный DMA зарядить можно?

vsb>без всяких драйверов.


Такого не бывает. За любое устройство всегда отвечает один драйвер или несколько. Судя по описанию, Chrome и Firefox работают через WinUSB. А то, что почти все остальные браузеры его не поддерживают, говорит о том, что это было добавлено относительно недавно.

Вообще, интерфейс к USB для браузера — это редкостное извращение с точки зрения программной иерархии. Это следствие явного дурдома, в котором браузер пытается подменить собой ОС.

vsb>девайса, под которого у меня в винде нет драйвера, под рукой сейчас нет, проверить, можно ли так работать вообще с любым девайсом, я не могу.


Так удалите драйверы для любого из устройств (только полностью), и сразу увидите.
Re[10]: Зачем делают UART over USB?
От: vsb Казахстан  
Дата: 19.09.23 11:07
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>Я делаю navigator.usb.requestDevice({filters:[]}) и оно мне показывает все USB-девайсы с возможностью подключиться к любому из них и работать на низком уровне


ЕМ>На насколько низком? Асинхронный DMA зарядить можно?


При чём тут DMA? Можно сделать запрос к устройству и получить ответ. Я про протоколы. В протоколе USB нет никакого DMA.

ЕМ>Вообще, интерфейс к USB для браузера — это редкостное извращение с точки зрения программной иерархии. Это следствие явного дурдома, в котором браузер пытается подменить собой ОС.


Ну что поделаешь, если традиционные ОС для пользователей и программистов настолько неудобны, что даже браузер удобней.

ЕМ>Так удалите драйверы для любого из устройств (только полностью), и сразу увидите.


Попробую в виртуалке чуть позже.
Отредактировано 19.09.2023 11:08 vsb . Предыдущая версия .
Re[11]: Зачем делают UART over USB?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 19.09.23 11:13
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>При чём тут DMA? Можно сделать запрос к устройству и получить ответ.


Эти ответы можно получать асинхронно — тот же видеопоток? Или только то, что устройство может отдать на текущий момент?

vsb>Ну что поделаешь, если традиционные ОС для пользователей и программистов настолько неудобны, что даже браузер удобней.


Или программистам стало настолько лень изучать API ОС, что они добились его дублирования в браузерах...
Re[4]: Зачем делают UART over USB?
От: Sergei I. Gorelkin Россия  
Дата: 19.09.23 11:57
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, vsb, Вы писали:


vsb>>до последних версий чтобы его активировать, нужно специальный inf-файл установить.


ЕМ>В любых нужно. Иначе откуда винда догадается, что к этому устройству нужно подключить именно winusb, а не другой драйвер?


Устройство может сообщить посредством дескрипторов, что оно Winusb-совместимое: http://msdn.microsoft.com/en-us/windows/hardware/gg463179


vsb>>Толи в 11, то ли в 10, то ли в последних "версиях" 10-ки оно вроде заработало совсем без дополнительных усилий.


ЕМ>Какое именно устройство заработало? Такое возможно в двух случаях: устройство стало достаточно известным, чтобы MS включила его в стандартные списки, или в этой системе оно уже когда-то устанавливалось, и описание сохранилось.


Собственно этот механизм нормально работает начиная с восьмерки, о которой уже все забыли. Должен был работать и в Win7, но M$ забыли одну строчку в winusb.inf...
Re[5]: Зачем делают UART over USB?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 19.09.23 13:27
Оценка:
Здравствуйте, Sergei I. Gorelkin, Вы писали:

SIG>Устройство может сообщить посредством дескрипторов, что оно Winusb-совместимое: http://msdn.microsoft.com/en-us/windows/hardware/gg463179


Об этом не там, а здесь.

По уму, конечно, не должно быть "WinUSB-совместимых" устройств, а должна быть возможность принудительно назначить устройству общий драйвер, а не только частный. Но уж как сделали, так сделали.

SIG>Должен был работать и в Win7, но M$ забыли одну строчку в winusb.inf...


Не строчку, а две секции, и не забыли, а явно оговорили, что этот INF они дают исключительно в качестве шаблона.
Re[12]: Зачем делают UART over USB?
От: mike_rs Россия  
Дата: 20.09.23 13:34
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>При чём тут DMA? Можно сделать запрос к устройству и получить ответ.

ЕМ>Эти ответы можно получать асинхронно — тот же видеопоток? Или только то, что устройство может отдать на текущий момент?

для этого есть режим usb bulk transfer
Re[13]: Зачем делают UART over USB?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 20.09.23 17:26
Оценка:
Здравствуйте, mike_rs, Вы писали:

_>для этого есть режим usb bulk transfer


Он есть в протоколах USB, его поддерживает WinUSB, но в обсуждаемом WebUSB я его не вижу. Там есть что-то про выполнение transferIn/transferOut "in parallel", но я недостаточно знаком с этой кухней, чтобы оценить степень параллелизма.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.