Я пытаюсь напечатать 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 paperfclose($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).
изменить это:
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 = hom много символов ты хочешь напечатать? Вы посылаете «TEXTO DE PRUEBA DE CODIGO QR» (28).
k = (31 + 0 x 256) - 3
k = (31 + 0) - 3
k = 31 - 3
k = 28
все остальные вещи просто следуют значениям по умолчанию для команд.
Я вижу, что у вас есть те же проблемы, что и у меня, по крайней мере, ниже, это один из примеров печати 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 // 10 символов
1D 28 6B 03 00 31 51 30
00 1B 33 00 00 0A 1D 56 42 00 1B 32 // межстрочный интервал, подача и резка бумаги …
Я надеюсь, что приведенный выше код может поддержать вас.