Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять принтер на RS232... [D7, WinXP]


ChainikDenis ©   (2006-05-17 20:08:00) 

Научился отправлять управляющие коды в принтер, а вот ответ получить не удается...

Делаю так:

procedure TForm1.Button7Click(Sender: TObject);

var  PrnHandle: THandle;
var  PrnInfo: PPrinterInfo2;
var  pcbNeeded,dwtmp: DWord;
var  DocInfo : TDOCINFO1;
var  TxDprn,RxDprn: array[0..255] of byte;

begin
    TxDprn[0] := $1b;
    TxDprn[1] := $76;

    if winspool.OpenPrinter(PChar(PrinterName), PrnHandle, nil) then begin

       DocInfo.pDocName := 'Test';
       DocInfo.pOutputFile := nil;
       DocInfo.pDatatype := 'RAW';

       if winspool.StartDocPrinter(PrnHandle,1,@DocInfo) = 0 then
         ShowMessage(SysErrorMessage(GetLastError));

       if not winspool.WritePrinter(PrnHandle, @TxDprn, 2, dwtmp) then
         ShowMessage(SysErrorMessage(GetLastError));

       if not winspool.EndDocPrinter(PrnHandle) then
         ShowMessage(SysErrorMessage(GetLastError));

       if not winspool.ClosePrinter(PrnHandle) then
         ShowMessage(SysErrorMessage(GetLastError));

       end else ShowMessage('OpenPrinter:' + SysErrorMessage(GetLastError));

    if winspool.OpenPrinter(PChar(PrinterName), PrnHandle, nil) then begin

       if not winspool.ReadPrinter(PrnHandle, @RxDprn, 256, dwtmp) then
         ShowMessage('ReadPrinter:' + SysErrorMessage(GetLastError));

       if not winspool.ClosePrinter(PrnHandle) then
         ShowMessage('ClosePrinter:' + SysErrorMessage(GetLastError));

       end;

end;

Данные в принтер уходят и он отвечает, а вот функция ReadPrinter выдает ошибку, что по дукоментации означает что принтер не может работать в bi-directional режиме.

Как быть? Может поднастроить чего надо?


tesseract   (2006-05-19 21:51:00) [1]


> Принтер-то - термо! Какая нафик краска...

:-)) - читаем смайлы.


> Там в ностойках есть опции Quality/Speed - т.е. либо быстро
> печатать, либо медленно, но качественно.

В настойках чего ? драйвера?, фтопку его.
Хотя  нет качаем sermon и изучаем, что принтер в порт пишет.
Не думай что производитель озаботиться точным соотвествием документации и реальными особенностями работы.

У термопринетров как правило скорость/нагрев не зависят друг от друга.

В своей мусорке про Custom вообще ничего не нашёл. Какие хоть языки держит?

> Подозреваю что бумага отстойная...


GAP не видит?  если не мигает и бумагой не сучит туда-сюда - бумага нормальная. Надо нагрев головки увеличить. Или с рендерингом что-то не то.
распечатй жирный круг и посмотри как оно.


ChainikDenis   (2006-05-19 18:22:00) [2]

Принтер-то - термо! Какая нафик краска...

Там в ностойках есть опции Quality/Speed - т.е. либо быстро печатать, либо медленно, но качественно.

Подозреваю что бумага отстойная...


tesseract   (2006-05-19 17:10:00) [3]


> Предварительно я на этом битмапе свой чер распечатываю.
> Выводится нормально, но такое ощущение что в черновом режиме
> - как-то блекло больно. Хотя настройки принтера - HighQuality.
>


В принципе надо повысить яркость. Причём она может сбрасываться для каждой этикетки.


>  Хотя настройки принтера - HighQuality.


В смысле highquality ? Разрешение у него что-ли меняется?

А может краска закончилась :-)))))


ChainikDenis   (2006-05-19 12:22:00) [4]

2 tesseract

Видать модератор не в духе был..

Слушай, я перевел принтер в графический режим и гоню в него байты. Байты формирую их массива TBitmap.Canvas.Pixels. Предварительно я на этом битмапе свой чер распечатываю. Выводится нормально, но такое ощущение что в черновом режиме - как-то блекло больно. Хотя настройки принтера - HighQuality.

А когда через драфвер печатал на канве принтера качество было получше.

Не сталкивался?


tesseract   (2006-05-19 10:37:00) [5]


> Видать и правда придется напрямую ручками данные засылать
> в принтер.


Думаешь у меня такой идеи не было, но так же как и в твоём случае прошла :-).

Для полного понимания рекомендую пробить драйвер :
http://www.hhdsoftware.com/sermon.html

отличный моник.


> Удалено модераторомПримечание: Выражения выбираем


вроде ничего такого


ChainikDenis   (2006-05-18 18:37:00) [6]

Короче запарился я с этим принтером.

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

Видать и правда придется напрямую ручками данные засылать в принтер.

А жать как бы не плохо было всеми преимуществами GDI попользоваться....


tesseract   (2006-05-18 11:17:00) [7]


> Драйвер может транслировать данные в принтер. Для этого
> есть функция WritePrinter. Инициализацию главное правильно
> сделать.

возможно в случае COM это и получиться.
Но вот в случае с lpt - почему-то не работает или точнее не всегда работает, твой случай не исключение.

Ни фига я не тёмный. Писал язык EZPL (GODEX) +Свой рендеринг штрихкодов для него.

Далеко не все драйверы могут транслировать данные в принтер.


> портом работать я использую библиотеку PComm от moxa (http:
> //www.moxa.com).


у меня свой компонент.


ChainikDenis   (2006-05-18 11:00:00) [8]

Удалено модератором
Примечание: Выражения выбираем


tesseract   (2006-05-18 09:41:00) [9]


> Он собственно и отвечает, да похоже драйвер его ответы игнорирует
> и соответственно на readprinter мне нифига, кроме ошибки,
>  не выдает.

Ты управляющие коды принтера посылаешь драйверу ?:-))))))))
Их надо напрямую в принтер посылать :-)))) минуя драйвер - тогда ответит.


vodvorezlaya   (2006-05-18 09:31:00) [10]


> Научился отправлять управляющие коды в принтер, а вот ответ
> получить не удается...

Подскажи как ты отправляешь на СОМ порт по Тх данные с примером плиз. Я тут новичёк.


ChainikDenis   (2006-05-17 22:43:00) [11]

2 tesseract  

Custom TPTCM60.

Хороший вроде, да что-то через ОСь никак общаться не заставлю..

Отвечать-то он должен естественно не на readprinter, а на управляющие коды которые я в него шлю. Например $1b, $76 - бапрос байта состояния. Он собственно и отвечает, да похоже драйвер его ответы игнорирует и соответственно на readprinter мне нифига, кроме ошибки, не выдает...

Письмо в Custom написал - жду....


tesseract   (2006-05-17 21:04:00) [12]


> Как быть? Может поднастроить чего надо?

А кто вам сказал, что принтер(точнее) должен отвечать на readprinter????
особенно если драйвер написан по остаточному принципу (по моей практике все нормальные производители комплектуют свои принтеры dll с обёрткой над языком).

Что за принтер хоть, опыт геммороя с ними есть.


Наверх

Титульная страница Поиск, карта сайта Написать письмо