После программного обновления или физической замены некоторых частей множительной техники, возникают ситуации полного стирания серийного номера или изменения на не существующий. Серийный номер представляет собой десятизначный буквенно-цифровой идентификатор, уникальный для каждого устройства. Просмотреть серийный номер можно двумя способами: прочитать его с этикетки универсального кода продукта, расположенного на задней панели устройства или из отчета конфигурации устройства. В данной ситуации именно второй способ будет выдавать вам ложную информацию. Для исправления серийного номера на подлинный с этикетки универсального кода продукта, необходимо воспользоваться языком PJL (HP Printer Job Language) – это разработанный Hewlett Packard язык, реализующий уровень контроля заданий и расширенного управления принтером.
Команды для изменения или установки серийного номера на множительной техники, имеют следующий вид:
@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 – Текстовое поле для ввода серийного номера.
У вас получится приведенный ниже пример:
Сделайте двойной клик по компоненту «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@PJLrn");
writer.Write("@PJL SET SERVICEMODE=HPBOISEIDrn");
writer.Write(string.Format("@PJL SET SERIALNUMBER={0}rn",
textBox2.Text.Trim()));
writer.Write("@PJL SET SERVICEMODE=EXITrn");
writer.Write("@PJL RESETrn");
writer.Write("x1B%-12345Xrn");
writer.Write("_x1BZrn");
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
Ссылка для скачивания примера: Яндекс.Диск
0.00 (0%) 0 votes







