powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Печать глобала
32 сообщений из 32, показаны все 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
Печать глобала
    #35867587
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Времени на поиски прямых ссылок, извините, нет. Практика работы с сетевыми принтерами подсказывает следующее. С ними можно работать так:
Код: plaintext
 s dev="|PRN|\\имя_или_ip_сервера_печати\имя_принтера_на_сервере_печати"
или так:
Код: plaintext
s dev="|PRN|\\имя_или_ip_сервера_печати\имя_'принтшары'_на_сервере_печати"
дальше Open dev с параметрами, об этом уже было. Сервером печати я называю комп, который управляет печатью на принтере. К нему либо физически подключен принтер, либо установлен диспетчер печати на аппаратно-сетевом принтере.
...
Рейтинг: 0 / 0
Печать глобала
    #35867988
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,
Это я уже понял...
Вот ещё результаты эксперимента:
Код:
Код: plaintext
1.
2.
s dev="|PRN|\\192.168.1.1\Epson LX-300+"
o dev:(:"+K\CP866\") u dev w "Привет!" c dev
однако, отлично работает, но если запускать его из Термнала!
И вообще не работает, если запускать из Телнет!
Но да Бог с ними, мне главное запустить его из ZEN-страницы, метод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Method MyPrint() [ ZenMethod ]
{
 s dev="|PRN|\\192.168.1.1\Epson LX-300+"
 o dev:(:"+K\CP866\")
 u dev
 w "dfsgfd"
 c dev	 
 q
}
Не отрабатывает! В очередь печать не становится и через 20-30 сек - ошибка таймаут (504).
метод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Method MyPrint() [ ZenMethod ]
{
 s dev="|PRN|Epson LX-300+"
 o dev:(:"+K\CP866\")
 u dev
 w "dfsgfd"
 c dev	 
 q
}
Отлично работает, если принтер подключен к серверу Cache...
Что-то я совсем запутался...
...
Рейтинг: 0 / 0
Печать глобала
    #35868090
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot
однако, отлично работает, но если запускать его из Термнала!
И вообще не работает, если запускать из Телнет!
Но да Бог с ними, мне главное запустить его из ZEN-страницы
Терминал работает под текущим виндовым аккаунтом.
Телнетный процесс под аккаунтом под которым работает сервис каше.
Можно в настройках сервиса указать ваш текущий аккаунт, галочка взаимодействовать и перезапустить каше.
...
Рейтинг: 0 / 0
Печать глобала
    #35868144
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь SYSTEM (системная учетная запись), от имени которого по умолчанию запускается служба "Контроллер Cache для CACHE", не имеет никаких прав в сети. Все процессы, запущенные суперсервером Cache, наследуют права этой службы.
Одно из решений:
Предварительно создайте учетную запись для некоего специализированного пользователя (назовем его cacheQQQ) и включите его в локальную группу Администраторы. В редакторе Локальной политики безопасности дайте ему разрешение на «Вход в качестве службы».
Если у вас домен, то, несомненно, этот специализированный пользователь должен быть доменным. Разрешение на запуск служб доменному пользователю дается администратором домена (в Политике безопасности домена), но включение его в локальную группу Администраторы – по-прежнему ваша задача.

P.S. Вопрос давно пора в FAQ, которых у нас до сих пор нет :(
...
Рейтинг: 0 / 0
Печать глобала
    #35870621
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovПользователь SYSTEM (системная учетная запись), от имени которого по умолчанию запускается служба "Контроллер Cache для CACHE", не имеет никаких прав в сети. Все процессы, запущенные суперсервером Cache, наследуют права этой службы.
Одно из решений:
Предварительно создайте учетную запись для некоего специализированного пользователя (назовем его cacheQQQ) и включите его в локальную группу Администраторы. В редакторе Локальной политики безопасности дайте ему разрешение на «Вход в качестве службы».
Если у вас домен, то, несомненно, этот специализированный пользователь должен быть доменным. Разрешение на запуск служб доменному пользователю дается администратором домена (в Политике безопасности домена), но включение его в локальную группу Администраторы – по-прежнему ваша задача.

Контроллер Cache для CACHE не запускается от имени несистемного пользователя. Сделал как вы и описали, см. рисунок. И дал ему разрешение на вход в качестве службы, естессно - он Администратор... Мож дело всё-таки в Кащее?
...
Рейтинг: 0 / 0
Печать глобала
    #35870680
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotКонтроллер Cache для CACHE не запускается от имени несистемного пользователя. Сделал как вы и описали, см. рисунок. И дал ему разрешение на вход в качестве службы, естессно - он Администратор... Мож дело всё-таки в Кащее?
Надо указывать и подтвердить пароль этого пользователя.
...
Рейтинг: 0 / 0
Печать глобала
    #35870739
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я,
Вауу, поставил пароль и усё ЗАРАБОТАЛО!!
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Печать глобала
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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