Как распечатать qr-код в epson tm-t88v из php

Я пытаюсь распечатать код qr в форме epson pos TM-T88V php и не могу. Информация, которую я получаю с epson-biz.com, совершенно непонятна, и я ищу и не получаю ни одного примера о правильных шагах для печати QR-кода. Я печатаю текст без проблем, но QR-код не работает. Это код, который я использую в документации epson о ESC-POS:

if(($handle = @fopen("LPT1", "w")) === FALSE){
    die('I can't print, check your connection');
}

fwrite($handle,chr(27). chr(64));//restart    
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(33). chr(8));
fwrite($handle, chr(27). chr(97). chr(1));
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(1));
fwrite($handle, chr(27). chr(32). chr(3));
fwrite($handle," No 1005 ");
fwrite($handle, chr(27). chr(32). chr(0));
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(33). chr(8));
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(100). chr(1));
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(3));
// to here work, but the rest is the problem:
    fwrite($handle, chr(29).chr(40).chr(107).chr(4).chr(0).chr(49).chr(65).chr(50).chr(0));  // Function 165
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(67).chr(20)); // Function 167 
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(69).chr(48)); // Function 169
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(80).chr(48)); // Function 180
    fwrite($handle,"TEXTO DE PRUEBA DE CODIGO QR");  // this text go to QR
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(81).chr(48)); //Function 181
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(82).chr(48)); //Function 182

fwrite($handle, chr(27). chr(100). chr(6));
fwrite($handle, chr(29). chr(86). chr(1));// cut paper


fclose($handle); 
$exitmsj = shell_exec('lpr LPT1');

Например, документация, которую я получаю с epson-biz.com, говорит о функции 165 (я пытаюсь следовать десятичной части в своем php-коде):

    GS ( k   <Function 165>
________________________________________
[Models]    •   TM-J2000
•   TM-J2100
•   TM-L90
•   TM-P60
•   TM-P60II
•   TM-P80
•   TM-T20
•   TM-T20II
•   TM-T70
•   TM-T70II
•   TM-T82II
•   TM-T88IV
•   TM-T88V
•   TM-T90
•   TM-U220
•   TM-U230
[Name]  QR Code: Select the model
[Format]    ASCII       GS      (       k       pL      pH      cn      fn      n1      n2
Hex     1D      28      6B      04      00      31      41      n1      n2
Decimal     29      40      107     4       0       49      65      n1      n2

[Range] (pL + pH × 256) = 4 
cn = 49 
fn = 65 
n2 = 0 
n1: different depending on the printers
[Default]   n1 = 50, n2 = 0
[Description]   Selects the model for QR Code.
n1  Function
49  Selects model 1
50  Selects model 2
51  Selects Micro QR Code

[Notes]    Settings of this function affect the processing of Function 181 and 182.
   Settings of this function are effective until ESC @ is executed, the printer is reset, or the power is turned off.

Пожалуйста, у кого получилось распечатать QR-код с помощью команды ESC-POS? Я не знаю, правильный ли порядок функций (165, 167, 169, 180, 181, 182).


person Ignacio Guillen    schedule 02.12.2014    source источник


Ответы (2)


изменить это:

fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(80).chr(48)); // Function 180

за это:

fwrite($handle, chr(29).chr(40).chr(107).chr(31).chr(0).chr(49).chr(80).chr(48)); // Function 180

<Function 180> GS ( k pL pH cn fn m d1…dk (cn = 49, fn = 80)

k = (pL + pH x 256) – 3

k = сколько символов вы хотите напечатать?, вы отправляете «TEXTO DE PRUEBA DE CODIGO QR» (28).

k = (31 + 0 x 256) - 3
k = (31 + 0) - 3
k = 31 - 3
k = 28

все остальное просто соответствует значениям по умолчанию для команд.

person Jesus Ernesto Castelo Estrada    schedule 22.09.2015
comment
Большое спасибо за вашу помощь, извините, раньше не было ответа, я оставил проблему для других занятий, но теперь мне нужно решить эту проблему, и теперь благодаря вам я МОГУ ПЕЧАТЬ QR-КОД в Epson TM-T81. Только еще один вопрос: как я могу изменить размер QR? Это немного, и мне нужно увеличить размер, я имею в виду, что сейчас я печатаю в формате 14 мм x 14 мм, но мне нужно больше до 20 мм. Я пытаюсь изменить значение функции 167, но ничего не получается. Вы можете помочь мне? Большое спасибо. - person Ignacio Guillen; 14.03.2016
comment
В конце концов я мог решить проблему следующим образом: fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(67) .хр(5)); //167 Большое спасибо за помощь, проблема исправлена. - person Ignacio Guillen; 14.03.2016

Я вижу, что у вас те же проблемы, что и у меня, по крайней мере, ниже приведен один пример печати QR-кода, попробуйте настроить принтер на cups linux и после использования команд echo -e "\x" | lpr -P , этот пример работает нормально:

1D 28 6B 03 00 31 43 04 1D 28 6B 03 00 31 45 33 1D 28 6B 0d 00 31 50 30 // Примечание 0d = 13 символов 56 69 76 61 20 43 68 69 6c 65 // 0 3 2 1D 31 51 30 00 1B 33 00 00 0A 1D 56 42 00 1B 32 // межстрочный интервал, подача и обрезка бумаги...

Я надеюсь, что приведенный выше код может вас поддержать.

person ozymandias    schedule 17.12.2014
comment
Спасибо за ответ, извините, пишу только сейчас, но где я могу использовать приведенный вами пример? Код, который вы копируете, как я могу вставить код php, который я пишу в начале этого вопроса? - person Ignacio Guillen; 20.03.2015