После программного обновления или физической замены некоторых частей множительной техники, возникают ситуации полного стирания серийного номера или изменения на не существующий. Серийный номер представляет собой десятизначный буквенно-цифровой идентификатор, уникальный для каждого устройства. Просмотреть серийный номер можно двумя способами: прочитать его с этикетки универсального кода продукта, расположенного на задней панели устройства или из отчета конфигурации устройства. В данной ситуации именно второй способ будет выдавать вам ложную информацию. Для исправления серийного номера на подлинный с этикетки универсального кода продукта, необходимо воспользоваться языком PJL (HP Printer Job Language) – это разработанный Hewlett Packard язык, реализующий уровень контроля заданий и расширенного управления принтером.
%-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 и добавьте три компонента на форму:
Более подробную информацию вы можете получить из первой инструкции по использованию данного языка - PJL (HP Printer Job Language).
Команды для изменения или установки серийного номера на множительной техники, имеют следующий вид:@PJL SET SERVICEMODE=HPBOISEID
@PJL SET SERIALNUMBER=
@PJL SET SERVICEMODE=EXIT
@PJL RESET
Первая и последняя команда начинается с «Esc» и имеет десятичный код 27 (Hex код 1В). Данный код переводит принтер в режим приёма команды. Внутренние команды между этими двумя, воспринимаются принтером как команды управления. Принтер пытается распознать их как команду, входящую в его набор команд и если это ему удается, то он ее выполняет.
Для отправки команд на принтер необходимо воспользоваться классом «TcpClient». Данный класс обеспечивает TCP-сервисы для соединений на стороне клиента. Отправка команд на принтер осуществляется с использованием класса «StreamWriter», который реализует класс «TextWriter» (класс представляющий средство записи, позволяющее записывать последовательные наборы символов) для записи символов в поток, используя кодировку UTF-8 и размер буфера по умолчанию.
Прежде чем отправлять и получать любые данные, необходимо определить базовый поток. Класс «TcpClient» предоставляет метод «GetStream()» исключительно для этих целей. С помощью базового сокета он создает экземпляр класса «NetworkStream» и возвращает его вызывающей программе. Создайте проект Windows Form в Microsoft Visual Studio и добавьте три компонента на форму:
- Button1 – Кнопка отправки команд на принтер;
- textBox1 – Текстовое поле для ввода Ip адреса принтера;
- textBox2 – Текстовое поле для ввода серийного номера.
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
Ссылка для скачивания примера: Яндекс.Диск
Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!