powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / И снова о принтере!!!
2 сообщений из 2, страница 1 из 1
И снова о принтере!!!
    #33369819
sportman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-нибудь знает отличаются ли команды для матричного принтера и для лазерного , если учесть то обстоятельство, что они подключены через LPT порт? А то тут нашел прогу, которая якобы печатает содержимое файла (сразу говорю принтера нет, но нужен более или менее рабочий кусок проги, ну или похожий на рабочий кусок (задание не выбирал - выдали независимо от моего желания)), так вот подойдет ли впринципе эта прога для лазерного принтера (LPT) или это впринципе невозможно.

Печать содержимого текстовых файлов:

#include <dos.h>
#include <stdio.h>


union REGS rg;

int main(int argc, char *argv[]) {

FILE *srcfile;

if( (srcfile = fopen( argv[1], "rb" )) == NULL ) {
printf("\nЗадайте имя файла в качестве параметра");
exit(-1);
}

for(;;) {
printchar(fgetc(srcfile));
if(feof(srcfile)) break;
}

fclose(srcfile);

}


int printchar(int chr) {

int status;

for(;;) {

putch(chr);

rg.h.ah = 0;
rg.h.al = chr;
rg.x.dx = 0;

int86(0x17, &rg, &rg);

status = rg.h.ah;


if((status & 0x39) != 0x10) {

if(error(chr, status)) {
printf("\nПечать завершилась аварийно");
exit(-2);
}
}
else break;
}
}


int error(char chr, int status) {


printf("\nОшибка принтера %02.2X"
"\n\nСостояние принтера:"
"\n-------------------", status);

if(status & 1)
printf("\nТаймаут при печати");

if(status & 8)
printf("\nОшибка ввода/вывода");

if(!(status & 0x10))
printf("\nПринтер находится в состоянии OFFLINE");

if(status & 0x20)
printf("\nКонец бумаги");

printf("\n\nДля отмены печати нажмите клавишу ESC,"
"\nдля повтора - любую другую клавишу\n");

if(getch() == 27) return(1);
else return(0);

}
...
Рейтинг: 0 / 0
И снова о принтере!!!
    #33369844
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если драйвер принтера эмулирует вызовы MS DOS то заработает. Иди в настройки своего принтера и ставь галочку на "разрешить печатать из ДОС программ"
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / И снова о принтере!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]