Как получить ответ на Windows из принтера после отправки команды PJL?Команды чтения статуса PJL
Я попытался подключить сетевой принтер с помощью WireShark и напрямую прочитать разъем для принтера, но ничего не работает.
Как получить ответ на Windows из принтера после отправки команды PJL?Команды чтения статуса PJL
Я попытался подключить сетевой принтер с помощью WireShark и напрямую прочитать разъем для принтера, но ничего не работает.
В окнах возможно только сетевые принтеры с Paraphernalia. Существует нет двунаправленных драйверов принтера для обычных моделей. Поэтому я установил linux на virtualmachine.
Я использовал двунаправленный драйвер USB на linux (те же самые драйверы на mint, * buntu distro) и выполнил команду pjl из cmd.txt с помощью этого сценария bash ниже.
Но я все еще не могу узнать, когда читать PJL Ответ. Использование fuser команда для распознавания /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
Хорошо, после прочтения вы можете отправить ESCAPE и следующую работу PJL для чтения в первый раз. echo - "\ e"> "$ PRINTER" – tosiek
я нашел две вещи: водитель 1. Принтер должен поддерживать bị коммуникацию 2. Там находится инструмент PCL Атрибутика для READBACK PJL через сеть: [ссылка] (http://www.pclparaphernalia.eu /index.html) – tosiek