php发送指令到斑马打印机
2020-03-24 本文已影响0人
哈哈新开张
方法一
$qr = '123456789';
$label = '^XA^FO20,100^BQN,2,8^FDLA,'.$qr.'^FS^XZ';
$fp = stream_socket_client("tcp://192.168.1.5:6101", $errno, $errstr);
if (!$fp) {
echo $errno - $errstr;
} else {
fwrite($fp, $label);
fclose($fp);
}
方法二
$ip = '192.168.1.5';
$port = '9100';
$qr = '123456789';
$label = '^XA^FO20,100^BQN,2,8^FDLA,'.$qr.'^FS^XZ';
if( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) ){ //IPv6
$socket = socket_create(AF_INET6, SOCK_STREAM, SOL_TCP);
}elseif( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ){ //IPv4
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
}
if ($socket&&@socket_connect($socket, $ip, $port)) {
@socket_write($socket, $label);
@socket_close($socket);
}
方法二需要 php_sockets.dll 扩展支持
对比以上两种方法,在设备及网络正常情况下,第一种方法有一些延迟,还是选择了第二种方法。
如果对ZPL不是很熟悉,查手册又怕麻烦,这里有个小方法:安装Bartender软件版本选7.75,再安装
seagull斑马打印机驱动(例如105sl),要注意打印机分辨率是多少,这个关系到打印位置、字体大小等;
安装之后,按实际情况设计标签,打印时选输出到文件。输出的文件就是ZPL。
当条形码过小时,我们当时是一行两个,标签纸是5.1cm * 1cm 是无法打印出正确比例的,这时候就需要先把条形码生成图片,然后再打印,图片转zpl指令的,可查阅 https://github.com/robgridley/zebra
需要注意的是需要PHP7.1版本,同时不要使用github上写的使用composer安装,会缺少文件的,直接下载为zip或composer安装后按要求调用下看缺少哪个文件再手动补下