LINUX.ORG.RU

История изменений

Исправление Stanson, (текущая версия) :

В девайсе возникает событие, которое нужно передать в запущенную на компьютере программу

Как в USB отправить информацию из девайса?

Это принципиально невозможно. Микрософт постарался участвуя в разработке USB чтобы оно было максимально черезжопным.

Фактически, USB девайс всегда поллится хостом. Девайс передаёт данные только если получил IN токен от хоста. Даже если это interrupt или isochronous. Просто в interrupt или isochronous режимах поллингом обычно занимается микруха хоста, а не система или софт. Если девайс не получит IN токен от хоста - то даже если обпередаётся, то хост его проигнорирует.

Соответственно, если твои события редкие, то используй interrupt. Если средненькой периодичности, то bulk или setup. Если это что-то очень частое - то isochronous, позволит передать несколько событий произошедших в течении одного фрейма. Теоретически, можно и bulk/setup несколько раз за фрейм запросить, но это придётся делать ручками в софте.

Исходная версия Stanson, :

В девайсе возникает событие, которое нужно передать в запущенную на компьютере программу

Это невозможно. Микрософт постарался участвуя в разработке USB чтобы оно было максимально черезжопным.

Фактически, USB девайс всегда поллится хостом. Девайс передаёт данные только если получил IN токен от хоста. Даже если это interrupt или isochronous. Просто в interrupt или isochronous режимах поллингом обычно занимается микруха хоста, а не система или софт.

Соответственно, если твои события редкие, то используй interrupt. Если средненькой периодичности, то bulk или setup. Если это что-то очень частое - то isochronous, позволит передать несколько событий произошедших в течении одного фрейма. Теоретически, можно и bulk/setup несколько раз за фрейм запросить, но это придётся делать ручками в софте.