检查PHP7中的打印机状态
我正在测试下面的代码以打印带有自定义文本的标签检查PHP7中的打印机状态,php,printing,php-7,zebra-printers,Php,Printing,Php 7,Zebra Printers,我正在测试下面的代码以打印带有自定义文本的标签 $outputString='^XA ^FO100, 200 ^AD,50,25 ^FH_^FD Hello world _7E ^FS ^XZ'; $Ip='xxx.xxx.x.xx'; $port='xxxx' $fp = fsockopen($Ip, $port, $errno, $errstr); if (!$fp) { echo "$errstr ($errno)<
$outputString='^XA
^FO100, 200
^AD,50,25
^FH_^FD Hello world _7E ^FS
^XZ';
$Ip='xxx.xxx.x.xx';
$port='xxxx'
$fp = fsockopen($Ip, $port, $errno, $errstr);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
try {
$kk=fwrite($fp, $outputString, strlen($outputString));
fclose($fp);
echo 'Successfully Printed';
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
$outputString='^XA
^FO100200
^广告,50,25
^你好,世界
^XZ′;
$Ip='xxx.xxx.x.xx';
$port='xxxx'
$fp=fsockopen($Ip、$port、$errno、$errstr);
如果(!$fp){
回显“$errstr($errno)
\n”;
}否则{
试一试{
$kk=fwrite($fp,$outputString,strlen($outputString));
fclose($fp);
echo“成功打印”;
}捕获(例外$e){
回显“捕获的异常:”,$e->getMessage(),“\n”;
}
}
它工作正常,但我正在寻找任何方法或途径,以确定打印机是否已成功打印数据,即如果没有纸张,它仍会打印成功打印您需要的是ZPL命令
~HS
(主机状态)。它返回一个三行响应,其中包含许多关于打印机当前状态的有用信息。前两行提供标签显示、出纸、平视、温度过高/过低等标志
有关更多详细信息,请参阅我怀疑,如果不从打印机编码某些内容,它将返回成功,因为您只检查它是否进入队列,而不检查它是否打印(使用
mail()
函数时也会出现类似问题)@treyBakefwrite
始终返回相同的内容,即使打印机是否打印。那么,您是否有其他方法来确定?如果是关于队列的,则可能会分析队列数据:(不,PHP要做的就是检查它是否成功添加到队列中,这就是PHP连接结束的地方。我已经将~HS添加到我的zpl代码中,但它仍然没有返回任何内容。请指导我!!~HS
是一个独立的zpl命令(不需要包含在^XA
..^XZ
中)。我发现最好在打印标签之前发送。在发送~HS
之后,您的代码需要从套接字/端口读取,直到它看到三个\r\n
终止的行。然后解析大部分固定格式的标志集,如果没有错误条件,则可以安全地发送标签格式。