Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.131.13.194] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
То есть имеется USB устройство реализованное на микроконтроллере Pic18f2550 с под стыкованным TFT дисплеем. Для данного устройства написан функциональный драйвер. Скомпонованный с помощью DDK. Драйвер позволяет отправлять и принимать данные с USB устройства. То есть WINDOWS приложение с помощью стандартных API функций открывает ХЕНДЛ драйвера и соответственно ведет обмен данными с USB устройством, функциями WriteFile();ReadFile();. Во общем проблем нет. Но теперь данное USB устройство решил превратить в USB принтер. Изменил в дескрипторе устройств поля класс устройств на класс принтера. Диспетчер устройств определил , что это принтер и загрузил драйвер usbprint.sys поддержка usb принтера и на этом все. Теперь сам вопрос. Как превратить раннее разработанный функциональный драйвер USB устройства в полноценный драйвер принтера. Чтоб другие WINDOWS приложения могли видеть мое устройство, как принтер и отправлять документ на печать в мое устройство? Примеры из DDK D:\WINDDK\2600\src\print ,что то трудновато для понимания и не могу связать все с моим устройством. Хотелось бы написать драйвер для USB принтера. Может есть у кого опыта в подобных случаях? |
Сообщ.
#2
,
|
|
|
Написание драйвера требует глубоких знаний аппаратной части и низкоуровневого программирования, и требует большого объема работы.
Общие принципы такие: 1. Инициализация USB-устройства и TFT дисплея Перед тем как начать работу с устройствами, необходимо их инициализировать. Для этого нужно использовать соответствующие функции и библиотеки. В случае Pic18f2550 для работы с USB можно использовать библиотеку USB Stack, а для работы с TFT дисплеем - библиотеку, которая подходит для данного устройства. 2. Обработка запросов от хоста Для обработки запросов от хоста (например, команды на печать документа) используется функция USBTransferOnePacket. Эта функция отправляет данные от хоста к устройству, и наоборот. 3. Обработка команд на печать Для обработки команд на печать необходимо сначала распарсить данные, отправленные от хоста, чтобы получить информацию о том, какой документ нужно распечатать. Затем нужно отправить данные на принтер через соответствующий порт. 4. Управление TFT дисплеем Чтобы отображать информацию на TFT дисплее, необходимо использовать функции библиотеки для работы с TFT дисплеем. 5. Обработка ошибок В драйвере необходимо предусмотреть обработку ошибок, которые могут возникнуть в процессе работы с устройствами. Например, если произошла ошибка при передаче данных на принтер, нужно вывести сообщение об ошибке на TFT дисплей. Это только общая структура драйвера, и реализация зависит от конкретных требований к устройству и принтеру. Также необходимо учитывать особенности микроконтроллера и драйверов для работы с USB и TFT дисплеем. |