|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 23, 2003 18:13:43 Не сталкивался-ли кто-нибудь с такой проблемой: Необходимо вывести результаты работы DOS-приложения на принтер, подключенный к USB. В DOSовские времена USB-то не было, программа пытается выпихнуть свой вывод на LPT. Можно, конечно, перенаправить вывод в файл, а потом распечатать средствами Винды, но это как-то неэлегантно, да и для операторов, работающих с этой прогой, лишняя головная боль. |
|
|
Дата: Июл 23, 2003 21:18:00 можно печатать на сетевой usb принтер |
|
|
Дата: Июл 24, 2003 04:33:22 Andy_the_Old Можно ... перенаправить вывод в файл, а потом распечатать средствами Винды, но это как-то неэлегантно, да и для операторов ... лишняя головная боль Из dos'овской программы запускать невидимую windows'ную программу, которая распечатает приготовленный файл. |
|
|
Дата: Июл 24, 2003 10:59:32 Может написать BAT файл? program >result.prn copy /b result.prn prn или что-то похожее. |
|
|
Дата: Июл 24, 2003 11:43:02 misyachniy Как result.prn попадет с PRN в USB? Если и попадет, то dos-программа должна уметь делать bin-файл, который поймет принтер. |
|
|
Дата: Июл 24, 2003 12:34:06 Автор пишет "Можно, конечно, перенаправить вывод в файл" То есть на диске будет создан двоичный образ для печати. Программе не обязательно знать, где находится принтер. На LPT, com, USB или совсем на другом компьютере. Я так печатал на сетевой принтер. Устройство PRN ото принтер по умолчанию. И обращение к нему берет на себя Операционная система. Cо стороны периложения все просто. CreateFile("PRN") WriteFile CloseFile |
|
|
Дата: Июл 24, 2003 12:49:53 misyachniy Устройство PRN ото принтер по умолчанию. Вы заблуждаетесь. Сетевой принтер не обязательно может быть завязан на LPTx. У меня, например, по умолчанию печатается на сетевой принтер "\\user01\lazer" и есть сетевой принтер "\\prog1\epson", который ассоциирован с LPT1. Я выполню команду: copy /b c:\autoecec.bat prn и печать пошла на \\prog1\epson. Автор пишет "Можно, конечно, перенаправить вывод в файл" Разве это подразумевает, что dos-программа может приготовить файл, который поймет принтер? Не знаю как на принтере Andy_the_Old, а я сталкивался с такими, которые текстовые dos-файлы не переваривают (например, нет cyr-фонтов). |
|
|
Дата: Июл 24, 2003 14:00:43 Ну а чего не правильно я сказал "Я выполню команду: copy /b c:\autoecec.bat prn и печать пошла на \\prog1\epson." на этой страничке: http://www.vfrazee.com/ms-dos/6.22/help/mode%20(configure%20printer).h tm сказано: "For parallel-printer modes, you can use PRN and LPT1 interchangeably" То есть PRN и LPT1 синонимы. Если Andy_the_Old укажет как программа обращается к принтеру(через прерывание надеюсь) и есть ли возможность перенаправить вывод в файл. То перейдем к более конструктивному диалогу. |
|
|
Дата: Июл 24, 2003 16:55:08 Привет всем, заинтересовавшимся темой. Спасибо за участие! Я, честно говоря, не думал, что кто-то воспримет ее всерьез, мелкая она какая-то...но (для меня)-насущная. Давайте, я ее еще поменяю вводные. Печатать надо не в DOS-mode, а в чистом DOSe. То-есть Винды нет и в помине. Но BIOS поддерживает USB. Исходника BIOSовского, правда, нет, но его можно где-нибудь найти, это не есть проблема. DOS-то USB не поддерживает точно. Так вот я и думаю, не придется ли писать самопальный драйвер, который будет перехватывать поток, направляемый в LPT, и после обработки(перекодировки, например) отправлять его на USB. Тут, наверное, можно попользоваться прерываниями BIOS. Как задачка? Не очень тривиальная? |
|
|
Дата: Июл 24, 2003 17:05:54 У меня есть только одна ссылка на доступ к USB из под DOS. http://pascal.sources.ru/hardware/usb4pas.htm |
|
|
Дата: Июл 24, 2003 17:49:28 За ссылочку спасибо! Я мельком на нее глянул... Что-то в этом есть, но мне все-таки кажется, что придется работать на уровне дров. В конце-концов, не боги горшки обжигают. Может быть, кто-нибудь что-нибудь еще посоветует. |
|
|
Дата: Июл 25, 2003 03:56:09 misyachniy Ну а чего не правильно я сказал misyachniy Июл 24, 2003 12:34:06 > Устройство PRN ото принтер по умолчанию У меня по умолчанию \\user01\lazer. Или мы по-разному интерпретируем этот термин. Andy_the_Old Почему Вы склоняетесь к дровам, dos'овскую программу можно изменять или нет? |
|
|
Дата: Июл 25, 2003 09:17:30 Программа скомпилированная, исходника нет. Можно, конечно, дизассемблировать, хоть это и муторно, но дело не в этом. На этом же компе могут запускать и другие программы, и всем им нужна печать. Не переделывать же их все подряд! |
|
|
Дата: Июл 25, 2003 10:41:18 "Устройство PRN это принтер по умолчанию" фраза может относится только к DOS. По существу скажу следующее. Нужно запустить программу на печать под NT или WinXp. Если программа напрямую общается с LPT то она будет завершена с ошибкой. Перехватить обращение к порту довольно сложная задача. Но думаю программа использует стандартное прерывание INT 17h. Более 10 лет назад я встречал программу на PASCAL с исходными текстами для перенаправления вывода в файл. В сети она наверное где-то есть. Так что можно модифицировать предложенный мной bat файл. 1) запуск перехватчика. Он становится резидентом 2) запуск рабочей программы 3) Запуск перехватчика. Он удаляет резидентную часть из памяти. 4) copy /b result.prn prn |
|
|
Дата: Июл 25, 2003 10:42:40 "Устройство PRN это принтер по умолчанию" фраза может относится только к DOS. По существу скажу следующее. Нужно запустить программу на печать под NT или WinXp. Если программа напрямую общается с LPT то она будет завершена с ошибкой. Перехватить обращение к порту довольно сложная задача. Но думаю программа использует стандартное прерывание INT 17h. Более 10 лет назад я встречал программу на PASCAL с исходными текстами для перенаправления вывода в файл. В сети она наверное где-то есть. Так что можно модифицировать предложенный мной bat файл. 1) запуск перехватчика. Он становится резидентом 2) запуск рабочей программы 3) Запуск перехватчика. Он удаляет резидентную часть из памяти. 4) copy /b result.prn prn |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.039 |