Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Печать глобала / 25 сообщений из 32, страница 1 из 2
04.03.2009, 18:29
    #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
05.03.2009, 05:38
    #35852156
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
Если предыдущее правильно, то:

w "Что нужно написать"
...
Рейтинг: 0 / 0
05.03.2009, 08:56
    #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
05.03.2009, 11:07
    #35852644
CacheLot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
ну я,

А матричном работает, а почему на струйнике не хочет?
И как настроить локаль, чтоб русские буквы понимал?
...
Рейтинг: 0 / 0
05.03.2009, 13:07
    #35853100
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
Это известная проблема. Cache не использует подсистему печати Windows, на принтер передается поток байтов "как есть" (RAW-формат). Поэтому в принтере должны быть "аппаратно" установлены русские фонты.
Они могут быть либо (1) встроенными, либо (2) загружаемыми. В PCL6(или PCL5)-совместимый принтер, как правило, можно загружать фонты с помощью специализированного софта.
При покупке принтера полезно интересоваться "печатает ли он в DOS", тогда он автоматически попадает в категорию 1. Большинство (если не все) лазерные принтеры HP последних лет попадают в категорию 2.
Дешевые Windows-принтеры для печати из Cache абсолютно не подходят.
...
Рейтинг: 0 / 0
05.03.2009, 13:51
    #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
05.03.2009, 14:03
    #35853291
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
CacheLot
Код: plaintext
1.
s dev="|PRN|Epson LX-300+ /DATATYPE= 'CP1251' "

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

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

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

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

Печатью должен заниматься клиент через те же отчетные системы, экспорт в word и т.д.
...
Рейтинг: 0 / 0
06.03.2009, 09:35
    #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
06.03.2009, 09:50
    #35855031
AlexKB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
CacheLot,
Используйте собственную трансляцию выводимого потока. Так будет проще и полностью Вам подконтрольно.
И еще, лучше используйте для печати отдельный процесс, чтобы избежать тормозов, когда осуществляется сам вывод на принтер.
А еще лучше не используйте прямое подключение принтера к железяке, на которой крутится Cache, используйте принт-сервер, это значительно разгрузит Вашу систему.
...
Рейтинг: 0 / 0
06.03.2009, 11:28
    #35855340
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
Может помочь (для печати на принтере с DOS-фонтами):

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

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

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

команду ESC k 4

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

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

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


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

Пасиб., принцип понятен, работает, хотя и не все коды понимает, буду искать...
...
Рейтинг: 0 / 0
11.03.2009, 19:50
    #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
13.03.2009, 10:54
    #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
13.03.2009, 11:05
    #35866793
Игорь Сойников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
CacheLot,
посмотри состояние задания в очереди принтера бывает пока не передашь в конце перед закрытием принтера "конец страницы" W *12 (W #) то задание остается в ожидании пока не закроется процесс Cache порадивший это задание на принтер.
...
Рейтинг: 0 / 0
13.03.2009, 12:09
    #35867072
CacheLot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
Игорь Сойников,
В очереди печати ничего нет, и после выполнения кода (см. выше) Терминал подвисает на неопределённо долгое время.. Хотя при посылке печати на тот же локальный Microsoft Office Document Image Writer - всё как положено становится в очередь и происходит печать..
Не знаю то ли глючит open, use и close, то ли что то с сетью, то ли с виндоусами..
или даже с лицензией??
...
Рейтинг: 0 / 0
13.03.2009, 12:15
    #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
13.03.2009, 12:27
    #35867140
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
CacheLot192.168.1.2 - адрес компа, к которому подключен принтерПоэтому и работает :) Каше игнорирует локальные описания сетевых принтеров (их собственно может не быть вообще), ему прямую ссылочку подавай.
...
Рейтинг: 0 / 0
13.03.2009, 13:19
    #35867337
Игорь Сойников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
CacheLot,
в понедельник Рыжов получит программку которая возможно тебе поможет
...
Рейтинг: 0 / 0
13.03.2009, 13:44
    #35867435
CacheLot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать глобала
Alexey MaslovCacheLot192.168.1.2 - адрес компа, к которому подключен принтер
Поэтому и работает :) Каше игнорирует локальные описания сетевых принтеров (их собственно может не быть вообще), ему прямую ссылочку подавай.


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


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