Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.25;
Скачать: CL | DM;

Вниз

возможно ли послать PCL-команду на принтер HP LJ1018   Найти похожие ветки 

 
chum ©   (2011-05-30 23:40) [0]

Добрый вечер!
Вопрос, который меня интересует, возник из-за учебного задания в университете:"Выполнение программной настройки струйного или лазерного принтера с помощью PCL-команд. Разработать меню не менее чем на пять режимов работы принтера".
Так вот, собственно вопрос: у меня дома лазерный принтер HP LJ1018, в его документации есть такая строка "The HP LaserJet 1018 does not support PCL 5e". Правильно ли я понимаю, что данный принтер не поддерживает PCL?
Написав в bat-файле
NOTEPAD /P readme.txt
отправляю на печать файл readme.txt, в котором сначала пробую
писать Escape-последовательность, а на следующей строке произвольный текст для проверки.
Но, увы, у меня Escape-последовательность не распознается и выходит на печать вместе с текстом....
Вот я и ломаю голову: это я косячу в самом синтаксисе написания Esc-посл., или мой принтер просто изначально не сможет распознать её?


 
Dimka Maslov ©   (2011-05-30 23:58) [1]

Неужели до сих пор студентов заставляют заниматься такой ерундой, вместо того, что бы нормально преподавать программирование?


 
antonn ©   (2011-05-30 23:59) [2]

мне бы такую "ерунду" задавали, вместо канвасных рисовалок и калькуляторов... :(


 
chum ©   (2011-05-31 00:22) [3]

antonn, есть и канвасные рисовалки и калькуляторы)))) С ними всё OK!
Но это задание по курсу "Операционные системы"....


 
NailMan ©   (2011-05-31 00:23) [4]

это значит что он не поддерживает PCL5e, а не PCL. Уже с 2000гг дрова всех офисных принтеров поддерживают только PCL6 и эмуляцию PS. Так что правду пишут - 5е нет, а 6 да.
http://en.wikipedia.org/wiki/Printer_Command_Language


 
chum ©   (2011-05-31 00:36) [5]

но если так, то как правильно проделать задание?
Чтобы создать Escape-последовательность в текстовом файле жму сначала Alt и, удерживая, набираю 27, чтоб получился Escape-символ, потом можно писать, что мне нужно для настроек, ну пусть будет, например, &l3a1o8D - выбор в принтере формата бумаги типа Legal, альбомной ориентации и печати при 8 строках на дюйм (пример взят с сайта http://www.awella.ru/hp5100-9.php.htm).
Но в результате команда настройки не выполняется....


 
chum ©   (2011-05-31 00:56) [6]

Или я изначально что-то не так делаю?
Может, в самом bat-нике её нужно где-то прописать, а не текстовом файле readme, который этим bat-ником как-раз и выводится на печать командой
NOTEPAD /P readme.txt
Только как?


 
Германн ©   (2011-05-31 01:20) [7]


> Чтобы создать Escape-последовательность в текстовом файле
> жму сначала Alt и, удерживая, набираю 27, чтоб получился
> Escape-символ

А ты посмотри Hex-вьювером этот файл. Увидишь бред.


 
chum ©   (2011-05-31 01:48) [8]

Так как правильно надо писать? И в какой системе счисления? Чтоб принтер распознал команду?


 
Германн ©   (2011-05-31 02:06) [9]


> Так как правильно надо писать? И в какой системе счисления?
>  Чтоб принтер распознал команду?

Прочитай учебник, если он у тебя есть. Если учебника нет - найди/купи его.
А учебник явно нужен!


 
chum ©   (2011-05-31 02:08) [10]

Подскажите название учебника!


 
chum ©   (2011-05-31 02:16) [11]


> Прочитай учебник, если он у тебя есть. Если учебника нет
> - найди/купи его.А учебник явно нужен!

Я только за! Пролить свет в тёмные массы!)))))


 
chum ©   (2011-05-31 02:24) [12]

Пожалуйста, кто может помочь в решении данной задачи, направьте меня в нужное русло!


 
Германн ©   (2011-05-31 02:30) [13]


> chum ©   (31.05.11 01:48) [8]
>
> Так как правильно надо писать?

Ну например #27.


 
chum ©   (2011-05-31 02:34) [14]

Хм, это я попробовала в первую очередь, не помогло, поэтому и начала дальше извращаться.


 
chum ©   (2011-05-31 02:38) [15]

Может быть, мне нужно сделать как-то ссылку на использование ANSI-драйвера?


 
chum ©   (2011-05-31 03:43) [16]

Или всё-таки к принтеру HP 1018 нельзя обращаться с помощью pcl-команд?


 
Anatoly Podgoretsky ©   (2011-05-31 09:08) [17]

Можно, но только это делать правильно, а не пытаться использовать notepad. Проще всего написать программу на Дельфи.


 
sniknik ©   (2011-05-31 10:08) [18]

> а не пытаться использовать notepad. Проще всего написать программу на Дельфи.
NC или Far эскейп задается в тексте как Ctrl+Q (переключение в режим) после Alt+27 (появится символ стрелочки влево)
получившийся файл нужно не печатать (там драйвер ненужного на преобразовывает) а копировать (F5) на PRN
(давно это было т.что возможны неточности...)


 
chum ©   (2011-05-31 14:52) [19]

Anatoly Podgoretsky,

> Проще всего написать программу на Дельфи.

Можно, но мне нельзя, так как это задание по учебе в университете - проделать нужно всё средствами bat-файлов и команд PCL.

sniknik,

> копировать (F5) на PRN

Как проделать нечто подобное, только для принтера с usb-портом.
Есть вариант какой-нибудь без расшаривания и без сторонних программ.


 
VirEx ©   (2011-05-31 15:03) [20]

>chum ©   (31.05.11 14:52) [19]

наверно есть драйвер присваивающий юэсби порту COM порт, а писать в компорт через writefile


 
chum ©   (2011-05-31 15:26) [21]


> Как проделать нечто подобное, только для принтера с usb-
> портом.

Причем, принтер несетевой.


 
Pavia ©   (2011-05-31 19:39) [22]

Думаю команде WritePrinter не важно какой порт главное чтобы в системе принтер был правильно настроен.
Думаю через эту команду и надо слать коды.


 
Slym ©   (2011-06-01 11:35) [23]

procedure TDirectPrint.PrintStr(const Str: String);
var
 s,PrinterName:string;
 hPrinter:THandle;
 DocInfo:TDocInfo1;
 Len,Writed:DWORD;
begin
 s:=Str;
 Len:=Length(s);
 if Len=0 then exit;
 if s[Len]<>#12 then
 begin
   s:=s+#12;
   inc(Len);
 end;
 PrinterName:=GetDefaultPrinterName;
 if not OpenPrinter(PChar(PrinterName),hPrinter, nil) then RaiseLastOSError;
 try
   DocInfo.pDocName:="DirectPrint";
   DocInfo.pOutputFile:=nil;
   //DocInfo.pDatatype:="RAW";
   DocInfo.pDatatype:="TEXT";

   if StartDocPrinter(hPrinter,1,@DocInfo)=0 then RaiseLastOSError;
   //if not StartPagePrinter(hPrinter) then RaiseLastOSError;
   if not WritePrinter(hPrinter,PChar(s),Len,writed) then RaiseLastOSError;
   if writed<>Len then RaiseLastOSError;
   //if not EndPagePrinter(hPrinter) then RaiseLastOSError;
   if not EndDocPrinter(hPrinter) then RaiseLastOSError;
 finally
   ClosePrinter(hPrinter);
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2011.09.25;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.021 c
2-1307342146
Сергей
2011-06-06 10:35
2011.09.25
Совпадает ли время на компьютере с настоящим


15-1303285883
virex(work)
2011-04-20 11:51
2011.09.25
ADMClient - andriod клиент форума


2-1307120302
IPranker
2011-06-03 20:58
2011.09.25
Как получить кол-во элементов в ординал типе?


15-1307162500
boriskb
2011-06-04 08:41
2011.09.25
Не смог не поделиться


15-1306179935
DmitriyG.
2011-05-23 23:45
2011.09.25
Возврат интерфейса в Builder