首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PJL状态读取命令

PJL状态读取命令
EN

Stack Overflow用户
提问于 2017-01-01 16:13:44
回答 1查看 1.5K关注 0票数 0

如何在发送PJL命令后从打印机接收Windows上的响应?

我试图用WireShark监视网络打印机,并直接读取打印机套接字,但没有工作。

EN

Stack Overflow用户

发布于 2017-01-06 14:52:10

在windows上,只有使用用具的网络打印机才有可能。普通型号没有双向打印机驱动程序。所以我已经在虚拟机器上安装了linux。

我在linux上使用了双向USB驱动程序(同样的驱动程序在mint,*buntu发行版上),并使用下面的bash脚本从cmd.txt导出一个pjl命令。

但我还是不知道什么时候该读PJL回应。使用fuser命令识别/dev/usb/lp0繁忙状态不起作用,所以我尝试在循环中读取dd并检查read的大小。它可以工作,但有时必须在得到响应之前发送PJL几次。

代码语言:javascript
运行
复制
#!/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%-12345X@PJL\r\n@PJL 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
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41416870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档