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安装后按要求调用下看缺少哪个文件再手动补下

上一篇下一篇

猜你喜欢

热点阅读