Есть-ли здесь СПЕЦЫ ?, QUSB-master |
Здравствуйте, гость ( Вход | Регистрация )
Есть-ли здесь СПЕЦЫ ?, QUSB-master |
JohnZ |
13.11.2017, 13:40
Сообщение
#1
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Пытаюсь написать универсальные "дрова" для USB сканера ШК.
Универсальные в том смысле что под Lin/Win и с учётом разновидности протоколов самих ШК (USB-COM / KB) Всё что перерыл - работает в основном на тредах, и даже не "подозревает" о аппаратных прерываниях Было уже обрадовался увидев в LibUSB вызов
но как оказалось её реализация организует свой "внутренний" тред для раздачи event-ов и опроса устр-в ... ... поэтому call-back - чная ф-ция у меня не вызывалась. На обслуживание (и перехват) USB прерываний у гугля почему-то затык, или я его неправильно спрашивалЪ ... Что нужно ? В пространстве пользователя ( т е в ПО ) "сесть" на НУЖНОЕ прерывание и формировать сигналы с принятым и расшифрованным кодом ШК из call-back - чной ф-ции. (как в DOS-e для COM-Port ) Расшифровывать ШК нужно т к разные сканеры по разному его формируют ... Кто в курсе, подскажите куда копать ?! Буду премного благодарен за ссылки и примеры. |
|
|
Алексей1153 |
14.11.2017, 6:47
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
я использовал в винде libusb, именно в отдельном потоке. Нормальная штука, работает чётко, в отличие от зависающего майкрочиповского драйвера
|
|
|
Iron Bug |
15.11.2017, 11:51
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
я использовал в винде libusb, именно в отдельном потоке. Нормальная штука, работает чётко, в отличие от зависающего майкрочиповского драйвера под вендой она иногда зависает, судя по отзывам. честно говоря, я уже давно венду живьём не видела, так что меня сейчас этот вопрос мало волнует. но судя по форумам, проблема остаётся актуальной. Для потока и LibUSB у меня тоже реализовано, но некузяво это, при наличии аппаратного IRQ. В том-то и вопрос, как выцарапать это IRQ у системы ?! Где и как сказать драйверу что-бы он отдал конкретный EVENT моей Call-Back-чной ф-ции ? Пишу под ARM на Linux (RPi-2) ... я тебе ещё раз говорю: почитай хотя бы основы про систему, под которую ты собрался что-то писать. последний раз, когда прерывания были доступны юзеру - это времена MS-DOS. с тех пор системы стали сложнее и драйвер в принципе не обязан ничего предоставлять юзеру. конечно, ты можешь написать свой драйвер, но это довольно сложная задача и главное, что это в принципе не нужно. потому что драйвер как раз предоставляет интерфейсы для libusb и всяких там HID интерфейсов и юзерский софт пользуется стандартизированными интерфейсами библиотек, а не затачивается под разные драйвера. на самом деле, с драйверами всё несколько сложнее, их там несколько уровней и они передают между собой сообщения. но то, о чём ты говоришь, доступно только драйверам самого низкого уровня и они точно ничего о прерываниях юзеру не сообщают. это загрузило бы ядро системы ненужными коллбеками вплоть до полного зависания. |
|
|
Текстовая версия | Сейчас: 4.12.2024, 22:38 |