Здравствуйте!
Мое устройство выдает 512-байтные пакеты данных в шину USB в строгой последовательности. Шина нагружена совсем не много: пакет передается порядка 42 микросекунд, пауза между передачами - 80 микросекунд и более. Работы произвожу на PC с пентиумом 4, система WinXP.
Воспользовавшись примерами из USB Developer's uStudio, я набросал тестовое приложение, которое просто принимает пакеты из шины. Прием производится порциями (блоками) по 8 (пробовал 16) пакетов, т.е. 4-8 кбайт. Все прекрасно принимается до тех пор, пока Windows не залепит паузу. В результате получается, что время от времени один-два пакета выпадает.
Попробовал принимать по одному пакету - вообще кошмар, пропадает порядка половины пакетов (чуть меньше). Пропадание сильно уменьшается начиная с величины буфера приема порядка 2 кбайт.
Подскажите, пожалуйста, как лучше написать программу приема пакетов из шины USB, чтобы не было их пропадания? Мне никак нельзя терять пакеты. Все они гарантированно должны быть приняты.
Особенность моего железа такова, что я не могу буферировать пакеты на передающей стороне, они выдаются автоматом, беспрерывно. Поэтому приемная сторона должна гарантированно принимать переданные устройством пакеты.
Спасибо!