powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Печать глобала
25 сообщений из 32, страница 1 из 2
Печать глобала
    #35851686
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имею простую задачу: нужно вывести на бумагу значение глобала.
Работаю в терминале:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
%SYS>open "|PRN|Epson LX-300+"
 
%SYS>use "|PRN|Epson LX-300+"

//Что тут писать чтоб вывод на принтер шёл?

%SYS>close "|PRN|Epson LX-300+"


При этом в очереди печати появляется документ Cache и на этом всё.. дальше не знаю что делать.. Просто write - выводит в терминал, в документации как то всё размыто описано.
...
Рейтинг: 0 / 0
Печать глобала
    #35852156
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если предыдущее правильно, то:

w "Что нужно написать"
...
Рейтинг: 0 / 0
Печать глобала
    #35852280
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotИмею простую задачу: нужно вывести на бумагу значение глобала.
Работаю в терминале:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
%SYS>open "|PRN|Epson LX-300+"
 
%SYS>use "|PRN|Epson LX-300+"

//Что тут писать чтоб вывод на принтер шёл?

%SYS>close "|PRN|Epson LX-300+"


При этом в очереди печати появляется документ Cache и на этом всё.. дальше не знаю что делать.. Просто write - выводит в терминал, в документации как то всё размыто описано.
При возврате в терминальный режим ввода команд выполняется неявный use $principal.
Соответственно вывод - чтобы write шел в принтер, делайте перед ним use. Например
s dev="|PRN|Epson LX-300+"
o dev u dev w "Hello" c dev
...
Рейтинг: 0 / 0
Печать глобала
    #35852644
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я,

А матричном работает, а почему на струйнике не хочет?
И как настроить локаль, чтоб русские буквы понимал?
...
Рейтинг: 0 / 0
Печать глобала
    #35853100
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это известная проблема. Cache не использует подсистему печати Windows, на принтер передается поток байтов "как есть" (RAW-формат). Поэтому в принтере должны быть "аппаратно" установлены русские фонты.
Они могут быть либо (1) встроенными, либо (2) загружаемыми. В PCL6(или PCL5)-совместимый принтер, как правило, можно загружать фонты с помощью специализированного софта.
При покупке принтера полезно интересоваться "печатает ли он в DOS", тогда он автоматически попадает в категорию 1. Большинство (если не все) лазерные принтеры HP последних лет попадают в категорию 2.
Дешевые Windows-принтеры для печати из Cache абсолютно не подходят.
...
Рейтинг: 0 / 0
Печать глобала
    #35853249
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovЭто известная проблема. Cache не использует подсистему печати Windows, на принтер передается поток байтов "как есть" (RAW-формат). Поэтому в принтере должны быть "аппаратно" установлены русские фонты.

По струйнику понятно, но теперь не могу настроить матричный: русские символы он понимает, но не могу изменить кодировку RAW. Как я понял, её нужно менять при открытии устройства. Но примера нет, не знаю как прописать:
Код: plaintext
1.
2.
s dev="|PRN|Epson LX-300+ /DATATYPE= 'CP1251' "
o dev u dev w "Hello" c dev

Не работает (вообще не печатает)... А в настройках локали для принтеров стоит имено CP1251.
...
Рейтинг: 0 / 0
Печать глобала
    #35853291
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot
Код: plaintext
1.
s dev="|PRN|Epson LX-300+ /DATATYPE= 'CP1251' "

Сомнительно, чтобы строка /DATATYPE= 'CP1251' входила в имя принтера. Может, это опция открытия или юзания?
...
Рейтинг: 0 / 0
Печать глобала
    #35854279
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы матричный принтер работал именно так как Вы хотите, нужно им управлять с помощью Esc-последовательностей. По поводу Esc-последовательностей смотреть расширенную документацию на принтер, не всегда продавцы поставляют такую документацию.
У каждого принтера свои команды управления, но основные довольно похожие. Сталкивался с тем, что такая документация запаздывала на конкретные модели и содержала ошибки в описании команд.

По поводу командного управления принтерами с постраничным выводом, тоже много возни, даже на порядок больше чем с матричными. Это нужно доставать книги по управлению печтью из под Windows. Когда еще не было Дельфи и Билдеров, то многие так и программировали вывод на печать. Там масса вопросов по форматированию вывода. Взять контекст устройства, пересчитать под шрифты и пошло, поехало. Если что-то упростишь или упустишь - видимый результат на разных принтерах будет иным. Да и все это прийдется оживлять через всякие DLL и ActiveX.

Лучше пользоваться отчетными системами, или выбрасывать все в Word и печатать как документ любым доступным способом.

Но уж если очень сильно надо, и без этого ну вообще никак - тогда нужно сильно морщить лоб и много думать, а иногда даже потеть.
...
Рейтинг: 0 / 0
Печать глобала
    #35854837
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, имхо, печать на сервере - вещь сама по себе не очень хорошая. Хотя бы еще потому, что виндовая служба печати сама по себе очень хрупкая вещь.

Печатью должен заниматься клиент через те же отчетные системы, экспорт в word и т.д.
...
Рейтинг: 0 / 0
Печать глобала
    #35855007
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Принтер точно русифицирован, стоит таблица РС 866 (из под ДОС печатает аж бегом русские буквы), чувствую, что проблема именно в кащейской локали. Когда подобные символы (?) печатались в Терминале - достаточно было установить сетевую кодировку, такую же как и для терминалов в NLS (не RAW), теперь здесь похожая проблема. К тому же в документации говорится что:

Код: plaintext
1.
2.
3.
4.
5.
Additional OPEN Keyword Parameters for Windows Printers
Keyword Default Description 
/DOCNAME= “name” “Cache” /DOCNAME enables you to redefine the printer job name. 
/OUTPUTFILE= “filename” NULL /OUTPUTFILE redirects print to a file. Specify a fully-qualified pathname. 
/DATATYPE= “type” “RAW” /DATATYPE enables you to redefine the datatype of the printer spool data. One frequently-used datatype is TEXT.  
и ни слова как эти параметры прописывать.. Очевидно нужно правильно прописать параметр
/DATATYPE= “type” (который по умолчанию RAW) - но как это сделать не знаю..
...
Рейтинг: 0 / 0
Печать глобала
    #35855031
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot,
Используйте собственную трансляцию выводимого потока. Так будет проще и полностью Вам подконтрольно.
И еще, лучше используйте для печати отдельный процесс, чтобы избежать тормозов, когда осуществляется сам вывод на принтер.
А еще лучше не используйте прямое подключение принтера к железяке, на которой крутится Cache, используйте принт-сервер, это значительно разгрузит Вашу систему.
...
Рейтинг: 0 / 0
Печать глобала
    #35855340
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может помочь (для печати на принтере с DOS-фонтами):

o device:(:"+K\CP866\")

(это в случае, если принтер печатает, но вывод, мягко говоря, отличен от желаемого). Если же совсем не печатает, значит вы круто промахнулись при задании имени принтера. При малейших сомнениях лучше всего описать его в Windows как принтер по умолчанию, тогда в Cache он будет доступен как device="|PRN|".
...
Рейтинг: 0 / 0
Печать глобала
    #35855924
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,
То что нужно было! Теперь печатает аж бегом именно русские символы!
Код: plaintext
1.
2.
s dev="|PRN|Epson LX-300+"
o dev:(:"+K\CP866\") u dev w "Привет!" c dev
...
Рейтинг: 0 / 0
Печать глобала
    #35858355
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла необходимость теперь управлять содержимым вывода.
Скачал даташит на принтер по управляющим кодам (ESC), но не могу их прменить правильно?
Как это делается?
Из документации код:
Код: plaintext
1.
ESC k  4 
должен изменить шрифт на курсив..
Команда:
Код: plaintext
1.
w "ESC k 4"

Просто печатает на бумагу ESC k 4, т.е. не распознаётся как управляющий код..
Как управлять выводом с пом. этих кодов? Поскажите плз. кто сталкивался с этой задачей!
...
Рейтинг: 0 / 0
Печать глобала
    #35858438
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot,

команду ESC k 4

нужно писать примерно так: w *27,"k",4.

Но опять же, код символа "k" может не соответствовать тому коду, который ожидает принтер.
Тогда нужно знать какой код для символа ожидает принтер и уже посылать вместо символа "k" - *{код символа "k"}, при этом имейте ввиду что после звездочки Вы посылаете десятичный код символа, а в Ваших таблицах кодов может быть шестнадцатеричный код символа.
Тут же может быть символ представленный в DOS кодировке и прочая, прочая ерунда.
...
Рейтинг: 0 / 0
Печать глобала
    #35859205
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovПри малейших сомнениях лучше всего описать его в Windows как принтер по умолчанию, тогда в Cache он будет доступен как device="|PRN|".

А как быть если это сетевой принтер, будет работать?
Пытался прописываь путь:
Код: plaintext
1.
2.
 s dev="|PRN|\\192.168.1.1\Epson LX-300+"


глухо.. даже в очередь печати не становится.. хотя принтер по умолчанию в Windows стоит имеено этот удалённый. При обычной печати из Блокнота - всё нормально, печать идёт!
...
Рейтинг: 0 / 0
Печать глобала
    #35859217
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKB,

Пасиб., принцип понятен, работает, хотя и не все коды понимает, буду искать...
...
Рейтинг: 0 / 0
Печать глобала
    #35863198
petro_shevchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не только с Блокнота. Из терминала Кащея (файл,распечатать экран) печатается кирилица.
Подсказал бы кто каким кодом реализуется такая печать.
Может окажется полезным.

KOD ; выдача кодовой таблицы
S S=1
; U 0
U S U="|PRN|" O U U U
F I=33:1:256 W *I," ",$J(I,3)," " W:I=127 " " S S=S+1 I S=10 W ! S S=1
W ! C:U'=0 U Q
...
Рейтинг: 0 / 0
Печать глобала
    #35866738
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petro_shevchukНе только с Блокнота. Из терминала Кащея (файл,распечатать экран) печатается кирилица.
Так и есть - лог Терминала выводит на удалённый принтер, из Студии тоже печатает код на удалённый принтер, при этом в настройках печати Студии и Терминала стоит принтер:

\\192.168.1.1\EPSON LX-300+

НО код:
Код: plaintext
1.
2.
s dev="|PRN|\\192.168.1.1\Epson LX-300+"
o dev:(:"+K\CP866\") u dev w "Привет!" c dev
НЕ РАБОТАЕТ!
Хотя даже в документации сказано (где о принтерах):
Код: plaintext
1.
OPEN "|PRN|\\business\accounting"

И что ему не нравится?
...
Рейтинг: 0 / 0
Печать глобала
    #35866793
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot,
посмотри состояние задания в очереди принтера бывает пока не передашь в конце перед закрытием принтера "конец страницы" W *12 (W #) то задание остается в ожидании пока не закроется процесс Cache порадивший это задание на принтер.
...
Рейтинг: 0 / 0
Печать глобала
    #35867072
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Сойников,
В очереди печати ничего нет, и после выполнения кода (см. выше) Терминал подвисает на неопределённо долгое время.. Хотя при посылке печати на тот же локальный Microsoft Office Document Image Writer - всё как положено становится в очередь и происходит печать..
Не знаю то ли глючит open, use и close, то ли что то с сетью, то ли с виндоусами..
или даже с лицензией??
...
Рейтинг: 0 / 0
Печать глобала
    #35867092
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ещё интересно что:
Код: plaintext
1.
2.
USER>s dev="|PRN|\\192.168.1.2\Epson LX-300+"
USER>o dev u dev w "Hello!" c dev

Работает! НО 192.168.1.2 - адрес компа, к которому подключен принтер..
...
Рейтинг: 0 / 0
Печать глобала
    #35867140
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot192.168.1.2 - адрес компа, к которому подключен принтерПоэтому и работает :) Каше игнорирует локальные описания сетевых принтеров (их собственно может не быть вообще), ему прямую ссылочку подавай.
...
Рейтинг: 0 / 0
Печать глобала
    #35867337
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot,
в понедельник Рыжов получит программку которая возможно тебе поможет
...
Рейтинг: 0 / 0
Печать глобала
    #35867435
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovCacheLot192.168.1.2 - адрес компа, к которому подключен принтер
Поэтому и работает :) Каше игнорирует локальные описания сетевых принтеров (их собственно может не быть вообще), ему прямую ссылочку подавай.


Прямую ссылку в студию! Рабочий примерчик если можно!
Или я не так понял и работать с сетевыми принтерами невозможно таким образом?
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Печать глобала
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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