Pull to refresh

Comments 44

куча воды с продолжением во второй серии 8))

ждём 8)
«Куча воды» сломала мой мозг при попытке визуализировать.
UFO just landed and posted this here
mono? )
тут вроде дотнет начнется…

А вообще интересно было бы почитать о разработке USB драйверов под Linux и MAC.
UFO just landed and posted this here
Драйвер на C, .net только управляющая программка.
UFO just landed and posted this here
На .net написана userspace управляющая программка.
> Причем тут mono? Вряд ли возможно писать драйвера на .NET

Не знаю как на .Net и как драйвера, но вот её старшая сестра Java с реалтаймом справлялась прекрасно, и я бы с бóльшей радостью писал на сразу ней чем на голом C с последующей C#-обёрткой.
UFO just landed and posted this here
А нативность нужна для скорости, а скорость в случае с устройствами, не отвечающими за хранение/преобразование данных, — для риалтайма. Разве не так?
UFO just landed and posted this here
Очень это просто делается с использованием библиотеки libusb
В 90% случаев хватит прочитать документацию к libusb. Собственно единственная проблема — протокол взаимодействия с устройством. Обычно эта проблема фатальна ))
Если протокол изначально задан и является черным ящиком, то единственная зацепка — заснифить и расковырять. Если протокол не шибко сложный, и функционал устройства известен, то можно разобраться. Иначе затея не стоит затрачиваемых усилий — дешевле USB-устройство и протокол для него придумать и разработать самому с нуля.
Посмотрите libusb — всё пишется с полпинка, куча примеров и документации. Её же и портировали под win, таким образом она переносимая. Единственное но — это в user-space, на сколько я понимаю
Что это у вас за камера без драйверов под линукс? Чай, не 2000-й год на дворе…
UFO just landed and posted this here
usb-id устройства и лог из dmesg разработчику в багтрекер. Если бы вообще драйвера не было — понятно, а так… В любом случае проще, чем свой драйвер писать.
Очень жду продолжения! Потому как сейчас застрял малость — вроде как что-то вроде драйвера есть, но винда категорически его не принимает как драйвер устройства. И кто виноват, что делать — абсолютно неясно, не могу найти даже, где читать…
«USB — это simple», я вас умоляю.
А ещё лучше, «это просто».
Что то по Ctrl+V запостилось... Вобщем вот:
Введение в USB

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

Поэтому сразу перейдем к менее очевидным вещам — к тому, как USB
устроен внутри.
UFO just landed and posted this here
На мой скромный взгляд, описание создания драйвера, а особенно для USB-устройства, может представлять интерес разве что для тех, кто смутно представляет, что такое драйвер в принципе. Независимо от операционной системы. Когда мне понадобилось написать драйвер для TV-тюнера, то на создание компилируемого, загружаемого и опознающего девайс каркаса мне понадобилось минут, наверное, 30 от силы (включая растерзание гугла). Оставшиеся временные затраты (процентов этак 98) — реализация протокола взаимодействия в соответствии со spec'ами устройства. При этом вам совершенно не нужно знать, сколько и каких контактов задействовано при общении компьютера и устройства, потому что благодаря таким штукам, как HAL (и вообще ядро), все действия производятся на уровне «записать n байт»/«прочитать m байт».

В общем, главный недостаток этой все же довольно неплохой статьи — полное отсутствие конкретики.
Ваш комментарий страдает тем же самым — слишком много пустой критики и никакой конкретики (может, за то и минусы?). Дали бы ссылку что ли на Вашу разработку. Наверное (надеюсь) конкретика воспоследует хотя бы в виде продолжения этой статьи.
С классом CDC USB можно работать так же, как и с привычным COM-портом. Просто втыкаете Ваше USB-устройство, и получаете на компьютере обычный COM-порт. Есть много готовых реализаций класса CDC (почти всегда бесплатных), предлагаемых производителями всех чипов с поддержкой USB. Кроме того, есть даже специальные чипы (типа FTDI) и программные библиотеки (типа V-USB), на которых этот класс CDC USB легко реализовывается. Короче, есть уже все готовенькое — бери да делай. Если нужны ссылки на конкретные примеры, которые можно взять за основу своей собственной разработки, то могу предоставить.
Виртуальный COM-порт решение распространенное. Но там в силу виртуальности есть свои грабли связанные как раз именно с этой виртуальностью.
Сталкивался с этим работая с POS-терминалами там, на новых материнках RS-232 как раз-таки и реализован как эмуляция на базе шины USB. Т.е. снаружи это ком-порт, а внутри — USB-device.
Прозрачно подменить старый терминал с нативным RS-232, на новый эмулированным не получилось — пришлось править модуль подключения устройства.
Все зависит от метода работы с COM-портом. Некоторые старые программки, которые норовят работать напрямую с контроллером COM-порта, не будут работать с COM-портом виртуальным. Но это не наш случай, поскольку в статье и комментариях идет речь о разработке CDC USB-устройства и ПО для него ЗДЕСЬ И СЕЙЧАС, а не в каком-то 1998 году под Windows 95 или 98.
Грабли были в 2009 году.
Модуль работы с девайсом был писан на дотнете, с использованием стандартного класса ком-порта дотнета — там прямой работой с контроллером и не пахнет.
Всё-таки проще всего, по-моему, было работать с LPT. Статью вроде прочитал, но как я смогу понять со стороны устройства в данный момент ноль или еденица, у меня всё равно в голове не складывается. На сколько я понимаю, на стороне устройства тоже надо воротить какой-то контроллер. С LPT можно было пины с граундом замыкать/размыкать в интересующих комбинациях, и на компе было понятно что со стороны устройства замкнуто.
Советую почитать Кулакова книжку «Программирование на аппаратном уровне», раздел «Шина USB»
Есть еще книжка Агурова, но это такое г… (ИМХО), что только затуманивает мозги. Намного зачетнее «USB in a NutShell», благо что она и на русском уже доступна.
Скачал книжку Кулакова — повторяет все то же самое, что Агуров написал. Подходит только для начального знакомства с шиной USB, в плане программирования устройств USB и программ для них — практически никакой пользы.
ИМХО: работа с libusb-win32 напорядок проще.
Присоединяюсь. Есть готовые примеры как программ для USB-устройств, так и программ для компьютера. Все с исходниками и понятными комментариями.
Вот например, ищу ответы, как писать драйвера для USB а результат кроме воды не получил :(

Вопрос когда будет часть вторая?
В связи с небольшой заминкой все технические топики будут начиная со второй недели августа.
Sign up to leave a comment.

Articles