Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт окт 17, 2017 1:05 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 170 сообщений ]  На страницу 1 2 3 4 512 След.
Автор Сообщение
 Заголовок сообщения: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 2:24 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
CleverMouse писал(а):
Для желающих писать USB-драйвера я обновила ядро, теперь для устройств классов не 3 = hid и не 8 = mass storage ядро пытается загрузить драйвер usbother.obj. HID-устройства обрабатываются в usbhid.obj, исходный текст которого лежит рядом с ядром на ftp, mass storage - в usbstor.obj.




Драйвер usbother.obj - тест работы принтера. При подключении принтера он должен напечатать "KolibriOS print!".
Драйвер глючный (то есть многократное отключение-подключение скорее всего работать не будет), API пока что тоже никакого нет для печати. В принципе, всё, что может дать API, это:
1) Отправка на принтер raw-данных
2) Получение форматов, которые принтер знает: обычно это ASCII, PCL и PS (в который уже можно сохранять из Колибри, если кто не в курсе)
3) Нет ли замятия бумаги
4) Есть ли бумага в принтере


Спецификация: http://www.usb.org/developers/devclass_ ... rint11.pdf


Вложения:
USBOTHER.OBJ [4.04 КБ]
278 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Тестируем поддержку USB
СообщениеДобавлено: Чт апр 11, 2013 2:59 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Если принтер поддерживает PCL, то этот драйвер заставит напечатать его сложную страницу.
Не забудьте переименовать в usbother.obj и положить в /rd/1/drivers
Починить баги так и не получилось - это нужна консультация умных людей.
Тест для PostScript скоро тоже выложу - только картинку подготовлю.


Вложения:
usboth_pcl.obj [28.54 КБ]
283 скачивания
Вернуться к началу
 Заголовок сообщения: Re: Тестируем поддержку USB
СообщениеДобавлено: Чт апр 11, 2013 3:15 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Держите котяток, владельцы принтеров с поддержкой PostScript. Размер драйвера большой (ещё бы, в нем картинка на четверть листа!), поэтому придется что-то удалить с rd навроде demos или 3d.
У меня на hp1200 получилось вот так:
Изображение

Было бы интересно посмотреть на результаты печати для цветных принтеров.


Вложения:
usboth_ps2.obj [179.25 КБ]
283 скачивания
Вернуться к началу
 Заголовок сообщения: Re: Тестируем поддержку USB
СообщениеДобавлено: Чт апр 11, 2013 3:43 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Исходники - прилагаются. Основаны на usbhid.asm.
Многие места я не понял, и поэтому..
Изображение

Собственно, потому оно и падает.

Ложка дёгтя
На принтерах, требующих "прошивки", тестовые программы работать просто так не будут.
Так, мой HP1200 бодро печатает из Колибри только в том случае, если перед этим на нём что-то печаталось из Linux при помощи cupsd. Эта печать из Linux (и, вероятно, Windows) похоже что-то загружает в принтер, и в итоге принтер печатает даже из Колибри. Если же принтер включить и выключить, то печатать из Колибри уже не получится - до следующей печати из "большой" ОС.
Есть и другой вариант - возможно, я совсем не понял, что и как работает, и не инициализирую принтер правильным образом через control pipe, но это делает за меня Linux или Windows. В любом случае, и то, и другое можно исправить - надеюсь, желающие найдутся.


Вложения:
USBOTHER.ASM [7.9 КБ]
285 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 8:16 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Протестировал с двумя принтерами: Brother HL-2030R и Canon Pixma MP250. Первый лазерный, второй - струйный.
Оба принтера, к моему удивлению, оказались 07/01/02, а не 07/01/03, что потребовало правок драйвера. То есть, короче говоря, они вроде как не поддерживают протокол обмена IEEE. А может и поддерживают, но конфигурация по умолчанию usb bidir.

На обоих принтерах напечатать ничего не получилось. В первом случае драйвер принтера упал со странными, невиданными доселе ошибками. Во втором случае принтер вел себя корректно, подвигал головкой и надумал было печатать, но так ничего и не напечатал. Возможно/вероятно, причина в том, что в нем кончилась краска, и даже из Windows он не горит желанием печатать без почесывания левой пятки правым ухом. Предварительная загрузка Windows на результат второго теста (Кэнон) никак не повлияла. Сейчас проверю бразер, но надежды мало. Такие вот дела.

По-крайней мере, хотя бы что-то работает. И главное - я почти уверен, что у меня в коде не хватает инициализации чего-то. CleverMouse наверняка сможет объяснить, чего именно - если это так. Возможно, причина в этом.


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 8:33 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1599
"А может и поддерживают, но конфигурация по умолчанию usb bidir." - USB-ядро не слишком старых версий при инициализации устройства печатает все варианты для интерфейса устройства, типа
Код:
K : USB interface class/subclass/protocol = 07/01/03
K : note: alternate setting with 07/01/02
K : note: alternate setting with 07/01/01

Альтернативные настройки нужно явным образом активировать - запрос SET_INTERFACE к устройству - но факт их наличия ядро отображает.
В коде грубейшая ошибка в callback-функции. Она должна иметь сигнатуру
Код:
void __stdcall CallbackFunction(
    void* pipe,
    int status,
    void* buffer,
    int length,
    void* calldata
);

В частности, при выходе вычищать из стека 5 параметров командой ret 20, а ни в коем случае не ret 4.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 8:37 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
HP1020 / USBOTHER.OBJ (первый вариант драйвера)
Без предварительно инициализации в больших ОС.
Спойлер: Показать
Вложение:
0BOARDLOG.TXT [15.69 КБ]
264 скачивания

После предварительной инициализации в W7 (распечатана тестовая страница).
Спойлер: Показать
Вложение:
1Boardlog.txt [15.68 КБ]
274 скачивания

Нет печати в обоих случаях.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Последний раз редактировалось Mario_r4 Чт апр 11, 2013 8:37 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 8:37 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Блин, точно. Спасибо больше. Исправлю.
Для моего hp1200 есть три варианта, а вот brother и canon альтернативные конфигурации не предоставляют


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 8:39 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Mario, у тебя 07/01/02, я поправлю и выложу рабочий драйвер в течении 15 минут. Должно заработать


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 8:41 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
CleverMouse
А можно грузить не usbother, а usb_xx, где xx код класса ?


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 8:45 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Должны работать принтеры unidir (07/01/01), bidir (07/01/02), ieee (07/01/03). Ошибка с ret 4 вместо ret 20 поправлена. Mario, тестируй.


Вложения:
usbother_pcl.obj [120.76 КБ]
350 скачиваний
usbother_ps.obj [268.92 КБ]
370 скачиваний
usbother_ascii.obj [2.07 КБ]
357 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 9:02 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
usbother_ascii.obj
Спойлер: Показать
Вложение:
BOARDLOG.TXT [14.18 КБ]
348 скачиваний

Не печатает в обоих случаях, после отключения шнура происходит вылет USB подсистемы в обоих случаях.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 9:17 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
usbother_pcl.obj
Без предварительно инициализации в больших ОС.
Спойлер: Показать
Вложение:
0Boardlog.txt [14.18 КБ]
353 скачивания

После предварительной инициализации в W7 (распечатана тестовая страница).
Спойлер: Показать
Вложение:
1Boardlog.txt [14.18 КБ]
358 скачиваний

Не печатает в обоих случаях, после отключения шнура происходит вылет USB подсистемы в обоих случаях.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 9:30 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1599
SoUrcerer, определись, тебе нужно постоянно хранить данные об устройстве или нет. Если нужно, то не освобождай выделенную память в AddDevice, а возвращай её в eax. Если не нужно, то не освобождай мусор в DeviceDisconnected. Сейчас ты из AddDevice возвращаешь 1, ядро радуется, что это не ноль, и запоминает эту единицу у себя, при дисконнекте вызывает DeviceDisconnected с параметром 1 - который ты вернул из AddDevice - и ты пытаешься сделать free на нём.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: USB-принтеры для USB-ядра
СообщениеДобавлено: Чт апр 11, 2013 9:34 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
А, вот оно как. Хорошо, понятно, исправлюсь. Спасибо.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 170 сообщений ]  На страницу 1 2 3 4 512 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB