Почитать описание USB - это верно, только вот лень перечитывать все доки, если мне всего то нужно надыбать пример и переделать под себя. Вобщем, смог наладить отправку через interrupt_in endpoint, при значении bInterval 0x01 получаю, почему-то, 500 пересылок в секунду. Где то читал, что минимальный интервал 2 мс, это верно? Тогда все логично. Взял готовый пример hidio от атмел. Долго ковырялся, пока понял, что для того чтобы получать байты на хосте с libusb32 необходимо сначала выполнять usb_set_configuration и usb_claim_interface. Система у меня такая: Монитор вращается на оси, энкодер меряет угол поворота, контроллер считывает и по usb передает на комп, на котором прога выводит изображение на экран (opengl) таким образом, что как ты не вращаешь монитор, картинка всегда ориентирована горизонтально. Чтобы измерить задержку - я просто быстро вращал монитор и снимал на вебкамеру, получилось при 30 кадрах/сек картинка запаздывает на 2 кадра - т.е. ~50 мс (30<x<60ms). В живую же эту задержку очень хорошо видно, когда начинаешь быстро вращать монитор, картинка отклоняется на 15-30 градусов в сторону движения. Скоро проверю какая задержка получается с новым девайсом, сообщу.
Сообщение отредактировал Gogan - May 25 2009, 11:30
|