2017-01-01 277 views
0

如何在發送PJL命令後從打印機接收Windows響應?PJL狀態回讀命令

我試圖用WireShark間諜網絡打印機,並直接讀取打印機套接字,但沒有任何工作。

+0

我已發現兩件事情: 1.打印機驅動器必須支持雙向雙向通信 2.有工具PCL用具經由網絡回讀PJL:[鏈接](http://www.pclparaphernalia.eu /index.html) – tosiek

回答

0

在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