PJL状态回读命令
答
在Windows上,只能使用Paraphernalia的网络打印机。常见型号没有双向打印机驱动程序。所以我已经在virtualmachine上安装了linux。
我使用的双向USB驱动程序在Linux(在同一驱动程序是薄荷,* buntu发行),并从下方的这个bash脚本cmd.txt execeute一个PJL命令。
但我仍然无法识别何时阅读PJL回应。使用定影器命令识别/dev/usb/lp0繁忙状态不起作用,所以我尝试读取与dd的循环并检查回读大小。它的作品,但有时必须发送PJL几次才得到回应。
#!/bin/bash
PRINTER=/dev/usb/lp0
ESCAPE=$(echo -e "\e")
FF=$(echo -e "\x0C")
char=
IFS=""
SSKIP=0
echo "" > a.txt
echo "" > b.txt
echo "" > temp.txt
while read p; do
echo -e "#######BEGIN$p-\r\n" >> a.txt
echo $p
while true
do
#WAIT FOR NOT BUSY
while true
do
fuser -s $PRINTER
if [ $? -ne 0 ]
then
break
fi
done
#send PJL to printer
echo -e "\e%[email protected]\r\[email protected] INQUIRE $p \r\n\e%-12345X" > $PRINTER
#TRY TO READ IMMEDIATELY
char=$(dd if=$PRINTER of=temp.txt 2>&1)
#send escape after read
echo -e "\e" > "$PRINTER"
#CHECK THAT dd READ ANY BYTES
echo "$char" | grep "bytes copied" > /dev/null
if [ $? -ne 0 ]
then
printf "."
else
echo "$char" | grep "^0 bytes copied" > /dev/null
if [ $? -ne 0 ]
then
cat temp.txt >> b.txt
echo "" > temp.txt
break
else
printf "."
fi
fi
char=""
done
echo
echo -e "#######END$p-\r\n" >> a.txt
done <cmd.txt
+0
好吧,看完后你可以发送ESCAPE和下一个PJL回读工作在第一时间。 echo - “\ e”>“$ PRINTER” – tosiek
我已发现两件事情: 1.打印机驱动器必须支持双向双向通信 2.有工具PCL用具经由网络回读PJL:[链接](http://www.pclparaphernalia.eu /index.html) – tosiek