PJL (HP Printer Job Language). Часть 2. Смена/установка серийного номера принтера

      После программного обновления или физической замены некоторых частей множительной техники, возникают ситуации полного стирания серийного номера или изменения на не существующий. Серийный номер представляет собой десятизначный буквенно-цифровой идентификатор, уникальный для каждого устройства. Просмотреть серийный номер можно двумя способами: прочитать его с этикетки универсального кода продукта, расположенного на задней панели устройства или из отчета конфигурации устройства. В данной ситуации именно второй способ будет выдавать вам ложную информацию. Для исправления серийного номера на подлинный с этикетки универсального кода продукта, необходимо воспользоваться языком PJL (HP Printer Job Language) – это разработанный Hewlett Packard язык, реализующий уровень контроля заданий и расширенного управления принтером.
      Более подробную информацию вы можете получить из первой инструкции по использованию данного языка - PJL (HP Printer Job Language).
      Команды для изменения или установки серийного номера на множительной техники, имеют следующий вид:
%-12345X@PJL
@PJL SET SERVICEMODE=HPBOISEID
@PJL SET SERIALNUMBER=
@PJL SET SERVICEMODE=EXIT
@PJL RESET
%-12345X
      Первая и последняя команда начинается с «Esc» и имеет десятичный код 27 (Hex код 1В). Данный код переводит принтер в режим приёма команды. Внутренние команды между этими двумя, воспринимаются принтером как команды управления. Принтер пытается распознать их как команду, входящую в его набор команд и если это ему удается, то он ее выполняет.
      Для отправки команд на принтер необходимо воспользоваться классом «TcpClient». Данный класс обеспечивает TCP-сервисы для соединений на стороне клиента. Отправка команд на принтер осуществляется с использованием класса «StreamWriter», который реализует класс «TextWriter» (класс представляющий средство записи, позволяющее записывать последовательные наборы символов) для записи символов в поток, используя кодировку UTF-8 и размер буфера по умолчанию.
Прежде чем отправлять и получать любые данные, необходимо определить базовый поток. Класс «TcpClient» предоставляет метод «GetStream()» исключительно для этих целей. С помощью базового сокета он создает экземпляр класса «NetworkStream» и возвращает его вызывающей программе.      Создайте проект Windows Form в Microsoft Visual Studio и добавьте три компонента на форму:
  • Button1 – Кнопка отправки команд на принтер;
  • textBox1 – Текстовое поле для ввода Ip адреса принтера;
  • textBox2 – Текстовое поле для ввода серийного номера.
У вас получится приведенный ниже пример:
      Сделайте двойной клик по компоненту «Button1» и перейдите в автоматически созданный метод «button1_Click», события «Click». Добавьте приведенный ниже листинг в данный метод:
System.Net.IPAddress ipAddr = 
    System.Net.IPAddress.Parse(textBox1.Text.ToString());

System.Net.Sockets.TcpClient client =
    new System.Net.Sockets.TcpClient();
client.Connect(ipAddr, 9100);
System.IO.StreamWriter writer = 
    new System.IO.StreamWriter(client.GetStream());
writer.Write("\x1B_%-12345X@PJL\r\n");
writer.Write("@PJL SET SERVICEMODE=HPBOISEID\r\n");
writer.Write(string.Format("@PJL SET SERIALNUMBER={0}\r\n", 
                           textBox2.Text.Trim()));
writer.Write("@PJL SET SERVICEMODE=EXIT\r\n");
writer.Write("@PJL RESET\r\n");
writer.Write("\x1B%-12345X\r\n");
writer.Write("_\x1BZ\r\n");
writer.Flush();
writer.Close();
client.Close();
      Результат работы приведенного выше кода вы можете увидеть только на веб страничке самого устройства или выпустив страницу конфигурации. Ниже представлены модели, на которых был успешно протестирован данный код.
  • HP 9250C Digital Sender
  • HP Color LaserJet 3600
  • HP Color LaserJet 4650
  • HP Color LaserJet 5550
  • HP Color LaserJet CP3525
  • HP Color LaserJet CP5520 Series
  • HP Designjet 1055cm
  • HP Designjet 4020ps
  • HP Designjet 5500PS
  • HP Designjet T790 PostScript 44in
  • HP LaserJet 4050
  • HP LaserJet 4200
  • HP LaserJet 4250
  • HP LaserJet 500 MFP M525
  • HP LaserJet 5000
  • HP LaserJet 5100
  • HP LaserJet 5200
  • HP LaserJet 9040
  • HP LaserJet M1536dnf MFP
  • HP LaserJet M3035 MFP
  • HP LaserJet M5035 MFP
  • HP LaserJet MFP M725
  • HP LaserJet P2055dn

Ссылка для скачивания примера: Яндекс.Диск


Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!