Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

Печать на матричном принтере   Найти похожие ветки 

 
ПЛОВ ©   (2008-06-11 16:46) [0]

Как научить Винду понимать что такое рулон бумаги в матричном принтере? К сожалению в драйвере принтера нет настроек, обеспечивающих такой тип печати (без "выплевывания" бумаги), поэтому после выполнения посланного на печать задания он настойчиво пытается размотать весь рулон. Может есть какое средство (программа, код, что нибудь другое), что может решить проблему?
Принтер установлен как сетевой на компьюере с Win 2003.


 
Правильный_Вася   (2008-06-11 16:56) [1]

не посылать в печатаемом документе символ конца страницы ("зеркало венеры")


 
ПЛОВ ©   (2008-06-11 16:59) [2]

А каким образом это реализовать практически?


 
Anatoly Podgoretsky ©   (2008-06-11 17:00) [3]

> ПЛОВ  (11.06.2008 16:46:00)  [0]

Печатать в файл.


 
ПЛОВ ©   (2008-06-11 17:02) [4]


> Anatoly Podgoretsky ©   (11.06.08 17:00) [3]

???

К сожалению нужно именно на бумагу. И именно на рулонную. Объем информации очень большой, и она содержит в себе не только строки текста, но и графику.


 
MsGuns ©   (2008-06-11 17:03) [5]

Винда специально не "умеет" печатать в текстовом режиме. Любой принтер в ней описан как лист, на котором РИСУЮТ. Поэтому печатать как в ДОСе или Фаре (который лезет на принтер мимо винды) не выйдет, разве что напрямую через порт.
Всякие команды (ESC/p или типа того) тоже нужно посылать непосредственно в порт или писать в текстовик для фара.


 
Anatoly Podgoretsky ©   (2008-06-11 17:04) [6]

> ПЛОВ  (11.06.2008 16:59:02)  [2]

А я не знаю как ты печатаешь, стандартными средствами Дельфи - AssignFile(F, "LPT1");


 
Alien1769 ©   (2008-06-11 17:05) [7]


> К сожалению нужно именно на бумагу.

Ты не понял открой файл с именем PRN и вперед пока бумага/рулон/  есть


 
MsGuns ©   (2008-06-11 17:05) [8]

>Anatoly Podgoretsky ©   (11.06.08 17:04) [6]
>А я не знаю как ты печатаешь, стандартными средствами Дельфи - AssignFile(F, "LPT1"

Этого недостаточно - будут вместо символов печататься квадратики


 
@!!ex ©   (2008-06-11 17:06) [9]

> [8] MsGuns ©   (11.06.08 17:05)

Можно поподробне??


 
ПЛОВ ©   (2008-06-11 17:07) [10]


> AssignFile(F, "LPT1");

Это будет работать как построчная печать текста?


 
ПЛОВ ©   (2008-06-11 17:13) [11]


> MsGuns ©   (11.06.08 17:05) [8]

Может есть пример какой чтобы без квадратиков? :)

Я вообщем-то нашел в Сети какой-то код для построчной печати (и помню как-то давненько весьма успешно его использовал на Вин 98 совместно советским матричным монстром формата А3), но ни на ХР, ни на 2003 код не работает :(


 
MsGuns ©   (2008-06-11 17:20) [12]

>@!!ex ©   (11.06.08 17:06) [9]
>Можно поподробне??

Большинство матричных принтеров понимают только "досовскую" кодировку.


 
Renegat   (2008-06-11 17:20) [13]

это потому что код, видимо, напрямую выводит данные в порт, что в ХРеновине запрещено. Выход один - запускать этот код из-под Ring0, модифицировав GDT через \Device\PhysicalMemory. Я где-то на форуме приводил урлос на одну интересную статейку...


 
Renegat   (2008-06-11 17:21) [14]

в смысле, я про то что
> ни на ХР, ни на 2003 код не работает :(


 
ПЛОВ ©   (2008-06-11 17:32) [15]


> Большинство матричных принтеров понимают только "досовскую"
> кодировку

Т.е. будет достаточно перевести текст в такую кодировку?


> Renegat

Нет, код работает с клоном TPrintera. Никаких Ring0 там нету :)


 
Anatoly Podgoretsky ©   (2008-06-11 18:42) [16]

> MsGuns  (11.06.2008 17:05:08)  [8]

Ну так файл должен быть в соответствующей кодировке, поддерживаемый принтером. Обычно 866


 
Anatoly Podgoretsky ©   (2008-06-11 18:43) [17]

> ПЛОВ  (11.06.2008 17:07:10)  [10]

Это будет работать как поток байт на порт.


 
@!!ex ©   (2008-06-11 18:49) [18]

У меня есть юнит, который умеет читать и писать на LPT. Могу дать, если надо.


 
ПЛОВ ©   (2008-06-11 21:43) [19]

Разобрался. Чего-то типа такого работает, правда еще осталось разобратся с кирилицей :)

var
 F : TextFile;
begin
 AssignFile(F,"LPT1");
 Rewrite(F);
 Writeln(F,"Hello");
 //Writeln(F,#12); // выброс бумаги
 CloseFile(F);
end;


 
MsGuns ©   (2008-06-11 22:20) [20]

>Anatoly Podgoretsky ©   (11.06.08 18:42) [16]
>Ну так файл должен быть в соответствующей кодировке, поддерживаемый >принтером. Обычно 866

Ну да. Только вот как мне "заставить" при выгрузке в текстовый файл, например, из мемо, переключить страницу 1251 на cp866 ?


 
Anatoly Podgoretsky ©   (2008-06-11 22:56) [21]

> MsGuns  (11.06.2008 22:20:20)  [20]

Зачем переключать, а CharToOem для чего тогда


 
Anatoly Podgoretsky ©   (2008-06-11 22:58) [22]

> ПЛОВ  (11.06.2008 21:43:19)  [19]

Смотри предыдущее сообщение.
А работать просто обязано, здесь же подсистема печати не используется, простой вывод в файл с именем "LPT1" as is


 
Германн ©   (2008-06-12 00:28) [23]

Почти оффтоп, но не совсем.
Сколько я усилий затратил 9 лет назад, чтобы QR печатал наряды для пожарной охраны одного из Ижевских военных заводов на рулоне
> без "выплевывания" бумаги


 
ПЛОВ ©   (2008-06-12 11:19) [24]


> Зачем переключать, а CharToOem для чего тогда

Мне оно не помогло - вместо кириллицы печатается каша из латиницы и спецсимволов. Но зато какие-то символы способны включать курсив, полужирный шрифт и т.п.

У меня еще вот такой вопрос возник - можно ли каким-то образом "объяснить" принтеру что поток данных не нужно преобразововать в текстовые символы, а печатать как "кусок" изображения? Как бы та же построчная печать, только фрагментов изображения, или это я уже лихо загнул? :)
Было бы как раз то что нужно - я и сам смог бы нарисовать все нужные и не нужные символы, и вообще все что только угодно. И вопроса с кодовыми страницами бы не возникло...


 
MsGuns ©   (2008-06-12 12:08) [25]

>ПЛОВ ©   (12.06.08 11:19) [24]
>Мне оно не помогло - вместо кириллицы печатается каша из латиницы и спецсимволов.

Чем (какой программой) печатаешь ?

>Но зато какие-то символы способны включать курсив, полужирный шрифт и т.п.
>У меня еще вот такой вопрос возник - можно ли каким-то образом >"объяснить" >принтеру что поток данных не нужно преобразововать в текстовые >символы, а печатать как "кусок" изображения? Как бы та же построчная печать, >только фрагментов изображения, или это я уже лихо загнул? :)

При выводе на матричный принтер "нарямую" графики в понимании винды нет. Все надо самому посредством вставки в отправляемые на принтер (порт) строки esc-последовательности, которые достаточно подробно описаны в доке к принтеру (т.н. система команд Esc/p, которая понимаема большинством принтеров, в т.ч. не Эпсон, хотя есть исключения, насколько помню в старовских и микролай-принтерах, у которых есть свои системы команд). Т.е. схема примерно такова:

<Esc-команды для установки режимов печати текста><Текст1>,
<Esc-команды для установки режимов печати текста><Текст>,
 ...
<Esc-команды для установки режимов графики>,<Графика,заданная с помощью двоичных кодов-байтов >
 ...

При этом нужно помнить, что перевод каретки, прогон листа и т.д. принтером автоматически не делается (если не было установлено ранее теми же Esc-командами) - все нужно "ручками". Другими словами, принтер воспринимает входные данных просто как бесконечную последовательность байтов, часть из которых он распознает как Esc-команды, а часть печатает.

Перемешивать текст и графику весьма сложно и без крайней нужды не советую.

>И вопроса с кодовыми страницами бы не возникло...

Его не может не возникать, т.к. большинство матричных принтеров ничего не знают про кодовые страницы винды, у них собственные таблицы, "зашитые" производителем в ПЗУ либо загружаемые программно теми же Esc-последовательностями.
Для "нормальной" печати текста следует сам текст из кодировки w1251 переводить в cp866 (для русской раскладки), и только после этого посылать символы (строки) в порт принтера.


 
ПЛОВ ©   (2008-06-12 12:10) [26]

Спасибо! Нашел целый воз инфы, в том числе по командам и даже с примерами. Буду копать дальше...


 
MsGuns ©   (2008-06-12 12:25) [27]

Вот сейчас вспомнил, что Стар вроде полностью эпсон-совместимый. А вот микролайны (были такие дешевые широкие принтеры, кстати весьма неплохие) - там точно что-то было свое ;)


 
ПЛОВ ©   (2008-06-12 12:35) [28]

У меня Панасоник. Думаю он тоже совместимый )


 
AndreyV ©   (2008-06-12 12:38) [29]

> [27] MsGuns ©   (12.06.08 12:25)
> А вот микролайны (были такие дешевые широкие принтеры, кстати
> весьма неплохие) - там точно что-то было свое ;)

Вроде переключатель был IBM/Epson.


 
VICTOR_   (2008-06-12 12:44) [30]

С кириллицей может помочь - перед печатью каждой формы использовать последовательность символов (в шестнадцатиричном представлении)
1B 74 11
То есть данную последовательность символов надо посылать перед печатью всего остального.

Просьба также уточнить модель принтера. Возможно нужно просто обновить драйвер через интернет - и в нем будет поддержка рулонной печати.
Работал с чековым (матричным принтером) Epson TM-U220D
Там из Windows печатало без прогона рулона
Еще хорошая вещь - принтеры EPSON TM-88 и совместимые с ними (чековые)

Еще одно замечание - при работе чековыми принтерами и печати из под Windows используйте только LPT - модели, а не USB и тем более не COM. Скорость печати отличается в разы.


 
ПЛОВ ©   (2008-06-12 12:53) [31]


> 1B 74 11

Было бы интересно узнать что это за команды?


 
Alien1769 ©   (2008-06-12 12:55) [32]


>
> > 1B 74 11
>
> Было бы интересно узнать что это за команды?

Esc последовательность перевода печати в альтернативную кодировку


 
Anatoly Podgoretsky ©   (2008-06-12 13:22) [33]

> ПЛОВ  (12.06.2008 11:19:24)  [24]

Так это, а какой у тебя шрифт(язык) установлен в принтере по умолчанию. Проверь вот это.


 
Anatoly Podgoretsky ©   (2008-06-12 13:25) [34]

> MsGuns  (12.06.2008 12:25:27)  [27]

Зато сейчас они пишут, мол система команд совместима с Epson - именно так, без указания модели, поскольку сами эпсоны не совместимы и выбрать драйвер в Виндоус это проблема, нет драйвера Epson


 
Anatoly Podgoretsky ©   (2008-06-12 13:26) [35]

> AndreyV  (12.06.2008 12:38:29)  [29]

Был, но при этом не понимал ряд команд, скажем в режиме Epson, но при этом почему то понимал не существующие для эпсон команды IBM


 
Anatoly Podgoretsky ©   (2008-06-12 13:27) [36]

> VICTOR_  (12.06.2008 12:44:30)  [30]

> используйте только LPT - модели, а не USB

Какой то у тебя печальный опыт.


 
VICTOR_   (2008-06-12 13:48) [37]


> Какой то у тебя печальный опыт.
>

Возможна проблема была в драйвере, потому что насколько я понял - печать через USB эмулировалась как печать через COM. Использовалась модель, совместимая EPSON TM-88.
Пересмотрел все варианты этой модели (COM, USB, LPT)  и на основании собственного опыта пришел к такому выводу. Имеется ввиду именно печать через Windows-драйвер.
P.S. А многие производители материнских плат уже не комплектуют их LPT-портом :(


 
AndreyV ©   (2008-06-12 13:51) [38]

Вот на перфорированной бумаге, в соответсвующем режиме, прокрутка идёт только до конца страницы.
Может посмотреть на принтере переключатели какие-нибудь.


 
Anatoly Podgoretsky ©   (2008-06-12 14:11) [39]

> VICTOR_  (12.06.2008 13:48:37)  [37]

Ну так и надо жаловаться на СОМ а не на USB, у USB2 скорость может достигать 60мб/сек, LPT даже самые скоростные так не могут. Это же половина скорости 1 гигабита.


 
VICTOR_   (2008-06-12 14:26) [40]


> Ну так и надо жаловаться на СОМ а не на USB, у USB2 скорость
> может достигать 60мб/сек, LPT даже самые скоростные так
> не могут. Это же половина скорости 1 гигабита.

Согласен, неправильно сформулировал замечание.
Переформулирую так

При работе с чековыми принтерами и печати из под Windows (через Windows-драйвер) будьте внимательны при выборе USB или LPT - моделей. Вследствии реализации драйвера (либо самой модели принтера) разница в скорости печати может достигать несколько раз. Причем как в сторону LPT так и в сторону USB. COM - модели принтеров в данном случае не рекомендуется использовать, так как скорость печати через Windows-драйвер очень низкая.



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

Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.009 c
15-1213783775
Алекс
2008-06-18 14:09
2008.08.03
С использ чего писать БД


15-1213713463
Palladin
2008-06-17 18:37
2008.08.03
Opera Mobile


2-1215184038
fog
2008-07-04 19:07
2008.08.03
ADO. Присвоение результата Execute


2-1215040775
Si13
2008-07-03 03:19
2008.08.03
VSL Form, проблемы с открытием


2-1214932363
Pasha L
2008-07-01 21:12
2008.08.03
Есть ли аналог FillChar, работающий с шагом более единицы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский