首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ESC/POS PHP条码打印

ESC/POS PHP条码打印
EN

Stack Overflow用户
提问于 2013-12-30 19:52:42
回答 1查看 4.2K关注 0票数 1

我对ESC/POS的事情完全陌生,我已经四处寻找,但找不到解决我的问题的方法。我正在尝试使用通用USB POS-58热敏打印机打印条形码,但打印机上显示的只是条形码数据,而不是条形码本身。我使用的代码如下:

代码语言:javascript
运行
复制
$barcode = "12345678901";

$handle = fopen('/dev/usb/lp0', 'w');

if (!$handle) {
    echo 'Cannot open printer';
    exit(0);
}

fwrite($handle, chr(hexdec('1D')).'f'.chr(0)); 
fwrite($handle, chr(hexdec('1D')).'H'.chr(2)); 
fwrite($handle, chr(hexdec('1D')).'h'.chr(60)); 
fwrite($handle, chr(hexdec('1D')).'w'.chr(2)); 
fwrite($handle, chr(hexdec('1D')).'k'.chr(1)); 
fwrite($handle, $barcode.chr(0));
fwrite($handle, chr(hexdec('0A')));
fclose($handle);

请注意,我使用的是PHP,但我从命令行(或C)使用printf得到了相同的结果。我在打印机上看到的是

代码语言:javascript
运行
复制
12345678901

完全没有条形码。有没有可能打印机不支持条码打印?“手册”不是很有用,它只是说明打印机与ESC/POS命令集兼容。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2013-12-30 20:19:37

目前您正在尝试解决四个问题:

1)使用ESC/POS将数据编码为打印机可识别的格式

2)管理对多处理/多用户操作系统上的物理设备的访问

3)使用PHP实现您的系统

4)确定打印机上的命令集支持

一次只处理一个问题会让你的生活变得简单很多。

你确实特别问过打印机是否支持条形码--你必须检查手册/联系供应商--毕竟你为这件事支付了他们一大笔钱,不是吗?

从你的设备命名我猜到你在使用Linux/Unix/BSD。因此,我建议您首先创建静态文件来表示打印作业-您可以通过以下方法从命令行将它们发送到打印机:

代码语言:javascript
运行
复制
 cat print_sample_v1.0 >>/dev/usb/lp0

您可以考虑的另一件事是从OpenOffice等应用程序通过CUPs打印到设备。这将允许您尝试不同的打印机模拟(但如果它是一个特别便宜的设备,那么您将需要使用条形码的大光栅,以避免混叠)。

您不应该直接写入打印机端口。这在单任务系统(DOS、CP/M)上很好,但迟早会遇到问题--这就是为什么在过去20年中编写的每个操作系统都有一个打印机后台进程。从PHP提交打印作业的最简单方法是生成一个临时文件并在其上执行lpr。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20838985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档