【发布时间】:2013-12-21 20:02:18
【问题描述】:
我正在尝试使用 ESC/POS正确打印到 USB 端口上的串行票据打印机(使用 USB-SERIAL 适配器)。
我对 PYTHON 和 PHP 都有同样的问题。
我在 PHP 上使用 phpSerial 打开并写入串行端口,在 PYTHON 上使用 pyserial。
我遇到的问题是 它似乎 可以工作,除非我尝试打印更长的消息。我找到的所有示例都是使用 Basic 或 Java 的,它们似乎使它像我想要的那样工作。
这是我的python代码:
import serial
ser = serial.Serial('COM5');
ser.write('\x1b\x40'); # esc @ (init)
ser.write('\x0a'); #line feed
ser.write('\x0a'); #line feed
ser.write('Hello World'); #text
ser.write('\x0a'); #line feed
ser.write('\x1d\x56\x42\x03'); #cut the paper
这有效。除非我试试这个:
import serial
ser = serial.Serial('COM5');
ser.write('\x1b\x40'); # esc @ (init)
ser.write('\x0a'); #line feed
ser.write('\x0a'); #line feed
ser.write('Hello World'); #text
ser.write('Hello World'); #text
ser.write('Hello World'); #text
ser.write('Hello World'); #text
ser.write('Hello World'); #text
ser.write('\x0a'); #line feed
ser.write('\x1d\x56\x42\x03'); #cut the paper
然后它会打印 Hello World 几次,然后突然停止(它没有剪纸或打印正确数量的行)。
在 PHP 上我有这个(我正在使用我在网上找到的一个类来生成 ESC/POS 命令):
require('php_serial.class.php');
require('php_receipt.class.php');
$serial = new phpSerial;
$recibo = new Receipt;
$serial->deviceSet("COM5");
$serial->deviceOpen('w');
$recibo->init();
$recibo->writeLf("Testing printer");;
$recibo->feedCut();
$recibo->finalize();
$escribir = $recibo->__toString();
$serial->sendMessage($escribir);
$serial->deviceClose();
再一次,效果很好。除了这个:
$recibo->init();
$recibo->writeLf("Testing printer");
$recibo->writeLf("Testing printer");
$recibo->writeLf("Testing printer");
$recibo->writeLf("Testing printer");
$recibo->writeLf("Testing printer");
$recibo->writeLf("Testing printer");
$recibo->feedCut();
$recibo->finalize();
$escribir = $recibo->__toString();
$serial->sendMessage($escribir);
在打印的纸上我得到Testing printer 3 次,然后它就死了。
我现在解决这个问题的方法是打开和关闭我打印的每一行的端口。但它的打印速度如此那么慢。
我错过了什么?我在网上没有找到任何东西!
【问题讨论】:
标签: php serial-port