1

Тема: VBS: посыл PJL команд в LPT1

Коллеги, приветствую !
Данная тема стала актуальна в связи с тем, что руководство придумало ежемесячно снимать показания счётчиков распечатанных страниц со всех принтеров OKI 4xxx!!!
Есть решение методом копирования файлика командой

copy /b filename.txt lpt1:

работает - в файле содержиться набор PJL команд по распечатыванию карты памяти, в ней в том числе содержиться счётчик распечатанных страниц. Хотелось бы реализовать данное на VBS'е без копирования файла.
Никто с таким не встречался ?

Времени не хватает... :-(

2

Re: VBS: посыл PJL команд в LPT1

Не совсем понимаю почему файл передаётся как бинарный если в нём набор команд(или файл не текстовой?).

На матричном принтере копирование на LPT работает и в текстовом и в бинарном режиме. Правда не похоже что прописанные мной наугад команды прописаны правильно - Epson LX-300+ их распечатывает как текст

option explicit
dim fso, fprn
Set fso = CreateObject("Scripting.FileSystemObject")
Set fprn = fso.OpenTextFile("LPT1:", 8, -2)
fprn.WriteLine "If you connect to an LPT port in Print Manager with no physical printer connected to your computer, you will not be able to print to the connected shared printer on the network ..."
fprn.Close

Мне кажется что либо я не правильно задавал команды, либо(это более вероятно) для экспериментов мне требуется принтер с поддержкой PCL(которого на данный момент у меня под рукой нету).
Но скорее всего и первое и второе

Можно увидеть содержимое файла filename.txt?

З.Ы. безумная идея использовать fso взята отсюда

3 (изменено: Евген, 2010-10-12 13:18:59)

Re: VBS: посыл PJL команд в LPT1

Афигеть !!!
Это ведь просто супер !!!
Я и не знал что всё настолько просто !!!

Кстати, все заметили "особенности" именования порта ?
В одном случае LPT1 в другом LPT1: так и надо или очепятка ?

Времени не хватает... :-(

4

Re: VBS: посыл PJL команд в LPT1

Не всё решилось...
С локальными принтерами - вопрос на лопатках, с сетевыми - проблема...   вот код...

Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForAppending = 8
strSend=Array(27,37,45,49,50,51,52,53,88,64,80,74,76,10,64,80,74,76,32,74,79,66,32,78,65,77,69,32,61,32,34,80,114,105,110,116,32,80,97,103,101,32,99,111,117,110,116,101,114,32,115,119,105,116,99,104,32,116,111,32,69,78,65,66,76,69,34,10,64,80,74,76,32,68,69,70,65,85,76,84,32,79,75,73,80,65,71,69,67,79,85,78,84,80,82,73,78,84,32,61,32,69,78,65,66,76,69,10,64,80,74,76,32,69,79,74,32,78,65,77,69,32,61,32,34,80,114,105,110,116,32,80,97,103,101,32,99,111,117,110,116,101,114,32,115,119,105,116,99,104,32,116,111,32,69,78,65,66,76,69,34,10,64,80,74,76,32,79,75,73,80,82,73,78,84,32,77,69,78,85,10,64,80,74,76,32,79,75,73,73,78,70,79,80,82,73,78,84,32,77,69,78,85,61,65,76,76,10,27,37,45,49,50,51,52,53,88,10,13,10)
strOut=""
For Each symbol in strSend
strOut=strOut & chr(symbol)
Next

Set WshNetwork = CreateObject("WScript.Network")
On Error Resume Next
WshNetwork.RemovePrinterConnection "LPT1:"
On Error Goto 0
WshNetwork.AddPrinterConnection "LPT1:", "\\rem_comp\oki",,"rem_comp\Администратор","parol"
WshNetwork.SetDefaultPrinter "\\rem_comp\oki"

Set objPrinter = objFSO.OpenTextFile("LPT1:", ForAppending,True) ' здесь ругается
objPrinter.Write strOut
objPrinter.Close

Как можно решить ?

Времени не хватает... :-(

5 (изменено: BeS Yara, 2010-10-12 15:03:46)

Re: VBS: посыл PJL команд в LPT1

Евген пишет:

Афигеть !!!
Кстати, все заметили "особенности" именования порта ?
В одном случае LPT1 в другом LPT1: так и надо или очепятка ?

В WriteLine просто скопировал с какой-то статьи в MSDN кусок текста, поэтому там просто LPT
Если речь про японскую MSDN, то "LPT1" там добавлении принтера используется, а для FSO там "LPT1": (хотя для удаления принтера тоже написано "LPT1:", но судя по RemovePrinterConnection Method там должно было быть "LPT1")

В примере(Technet Script Center:Assign Printers Based on Group Membership) - тоже без ":" пишется.

С перенаправлением LPT1 на сетевой принтер пробовал(правда перенаправлял не скриптом, а через NET USE), но там скрипт ошибку давал при попытке открыть "файл":

\\10.103.4.151\c$\print.vbs(5, 1) (null): Недостаточно памяти сервера для обработки команды.

Такая ошибка?

Дальше я пока не копал, тем более что принтер был Kyocera(и драйвера стояли на их язык работы с принтером).

__________________________
Возможно это помогает: “Недостаточно памяти сервера для обработки команды” при доступе к расшаренным папкам. Решение., но перезагрузка у меня слишком много времени займёт, а виртуалки настроенной нет под рукой.

6

Re: VBS: посыл PJL команд в LPT1

2

Я конечно далек от мысли... (с)

7

Re: VBS: посыл PJL команд в LPT1

Ошибка выходит

Недопустимый вызов или аргумент процедуры

:-(   ХЗ чо делать, через вызванный cmd.exe нормально чепятаеца

copy /b filename.txt lpt1:
Времени не хватает... :-(

8

Re: VBS: посыл PJL команд в LPT1

2
а так, достаточно

Set objPrinter = objFSO.OpenTextFile("\\rem_comp\oki", 2)

Я конечно далек от мысли... (с)

9

Re: VBS: посыл PJL команд в LPT1

smaharbA пишет:

Set objPrinter = objFSO.OpenTextFile("\\rem_comp\oki", 2)

Так не работает...   пробовал уже...

Времени не хватает... :-(