Возникла необходимость настроить печать диагностического отчета из программы DIS установленной в виртуальной машине.
На просторах интернета нашел несколько возможных вариантов настройки:
1. Проброс локально установленного принтера в VmWare
2. Печать на сетевой принтер
3. Переадресация портов
4. Печать в файл
Я выбрал четвертый вариант по следующим причинам:
1. Проброс принтера подключенного через USB можно сделать используя VmWare tools, но версия для SCOUnix имеется только в версии VmWare Server
источник. Возможно автору удастся использовать VMTools из Server в Workstation.
2. Обязательным условием является, то что и принтер и диагностическая головка и компьютер должны находится в одной подсети. Добавлением дополнительного адаптера виртуальной машине и настройкой его в мост с реальным адаптером хоста привело только к тому что сеть видна, но на принтер нельзя ничего отправить (Уверен что можно и этот вариант доработать.)
3. В этом варианте используется ПО которое переадресовывает пакеты с виртуального принтера на реальный. Мне не понравился тем что используется много компонентов (GhostScript, LPR, Portmon).
4. В данном варианте используется вывод данных с COM-порта виртуальной машины в файл и затем обработка этого файла с помощью GhostScript. На выходе получаем готовый к печати PDF документ.
Оригинальная инструкция на английском языке
The way over COM1/LPT1
SSS PROGMAN
1) add parallel port in vm (output to file)
2) change printer in SSS to Local Printer LPT1 (shoud be default)
3) install on host Ghostscript 9.0
4) install on host Bullzip PDF Printer
5) add C:\Program Files\gs\gs9.00\bin to path variable in windows on host (reboot required)
6) create batch file on Desktop
"C:\Program Files\gs\gs9.00\lib\ps2pdf.bat" %1 %1.pdf
Saved as ps2pdf.cmd on desktop. Just drag the outputfile on ps2pdf, and bang… PDF will be created.
DIS/GT1
1) add serial port in vm (output to file)
2) set up VM-BIOS, COM1 = 3F8/IRQ4
3) check in scoadmin if COM1/tty1a has the same values (3F8/IRQ4)
4) change printer (default one) in scoadmin to COM1/tty1a
5) change printer (default one) in scoadmin to 9600/none/none/8
6) change printer in DIS to Local Printer (shoud be default)
7) install on host Ghostscript 9.0
8) install on host Bullzip PDF Printer
9) add C:\Program Files\gs\gs9.00\bin to path variable in windows on host (reboot required)
10) create batch file on Desktop
"C:\Program Files\gs\gs9.00\lib\ps2pdf.bat" %1 %1.pdf
Saved as ps2pdf.cmd on desktop. Just drag the outputfile on ps2pdf, and bang… PDF will be created.
Свободный перевод по пунктам:
1. Виртуальной машине добавляем последовательный порт (serial port) с выводом данных в файл. Файл имеет смысл разместить во временной папке. Может понадобится установка VmWare Workstation для того чтоб была возможность редактировать параметры виртуальной машины.
2. В BIOS виртулаьной машины выставляем параметры последовательного порта
3. В настройках ОС нужно также выставить правильные параметры (scoadmin->Hardware/kernel manager->Serial Port -> Откроется окно Configured serial cards on gt1ap. Проверяем значения для порта IBM-COM1. Нас интересуют значения IRQ и I/O addr. Должно быть 4 и3F8 соответственно)
4. Изменяем интерфейс подключения принтера (scoadmin->Printers->Printer Manager-> Выбираем принтер laserpr (Lokaler Laserdrucker) -> Settings -> Connection -> Из выпадающего списка выбираем COM1
5. Изменяем настройки порта (Settings -> Serial Comm…)
6. В DIS устанавливаем локальный принтер как принтер по умолчанию. После внесения изменений DIS нужно перезагрузить.
Теперь при печати данные в формате PostScript пойдут на COM1 виртуальной машины и будут записаны в файл который мы указали при добавлении COM-порта.
Замечание: запись в файл идет последовательно, файл не очищается, поэтому при обработке файла скриптом в pdf документ будет передаваться все содержимое файла. Что бы этого не происходило нужно отключить и снова подключить com порт к виртуальной машине, либо перезапустить машину, при этому появится диалог в котором будет запрос на дальнейшие действия с файлом (очистить или продолжить писать в него). Нам нужно выбрать очистить. Далее проводим настройку хостовой машины.
7. Установим Ghostscript (можно взять
здесь)
8. Этот пункт не совсем ясен. Так как на выходе мы уже получим готовый к печати PDF-документ который можно распечатать из любого просмотрщика.
9. Добавить в переменную PATH путь к исполняемым файлам GhostScript-a (Мой компьютер – Свойства – Переменные среды. Нужно именно добавить путь к уже имеющейся переменной PATH через точку с запятой, а не создавать новую переменную)
10. Создать пакетный файл который будет конвертировать получившийся файл в PDF документ готовый к печати. Обратить внимание на путь к исполняемым файлам GhostScript (различные версии по умолчанию устанавливаются в разные папки)
Дополнительно:
Приведенный пример пакетного файла оперирует двумя файлами просто перезаписывая pdf. Модифицируя пакетный файл можно получить следующее:
– Имя PDF-файла будет содержать дату и время печати отчета.
– Готовые PDF-ки будут складываться в отдельную папку-хранилище
Алгоритм работы пакетного файла:
Определяем переменные
– папка для готовых отчетов
– временный файл из которого будет браться информация
Цитата:
@echo off
set dd=%DATE%
set tt=%TIME%
set /a ddd=%dd:~0,2%
IF %ddd% LSS 10 (
SET day=0%ddd%) else (
SET day=%ddd%)
set month=%dd:~3,2%
set year=%dd:~6,4%
set /a ttt=%tt:~0,2%
IF %ttt% LSS 10 (
SET hour=0%ttt%) else (
SET hour=%ttt%)
SET minute=%tt:~3,2%
SET sec=%tt:~6,2%
:: Рабочая папка
set workdir=D:\DIS-Reports\
:: Исходный файл (Этот файл нужно указать в настройках виртуальной машины как выходной файл для данных из COM-порта)
set input=%workdir%dis-out
:: Файл отчета
set output=%workdir%%year%-%month%-%day%_%hour%-%minute%.pdf
:: Конвертируем
"C:\Program Files\gs\gs9.06\lib\ps2pdf.bat" %input% %output%
|
В планах:
1. Реализация анализа PS файла до конвертации и запись информации об авто и дате проведения диагностики в имя файла отчета.
2. Автоматическая очистка файла com-порта после конвертации (просто удалять его нельзя-этот файл заблокирован приложением)
3. Автоматическая конвертация input-файла после того как в него попадут свежие данные.
Печать из DIS
1. Если при запуске виртуальной машины появился вопрос
Serial port output file “D:\dis-out” already exists.
Do you want to replace it with any newly created content, or append new content to the end of the file?
нужно ответить Replace.
2. После проведения диагностики жмем кнопку печати отчета
3. Ждем некоторое время и запускаем пакетный файл. Для удобства можно создать ярлык на рабочем столе.
4. В папке с отчетами открываем нужный файл и отправляем на печать.