网络打印,不良标签打印的数据包分析

时间:2018-09-12 07:44:02

标签: networking printing wireshark

我们这里有一台打印机,该打印机应该在木头上打印标签,但是某些标签的数据似乎被切断了一半(例如,当前作业被下一个更新),因此数据是不完整,或者传输到打印机的数据有问题,并且正在打印一半标签。

我对网络打印和使用“异步”打印机进行打印有点陌生。我已经问过卖家,如何解决这个问题;他告诉我检查工作中的脚本,但该脚本仅调用IP,没有其他内容。

这里是图片以及Wireshk捕获的链接,乍一看似乎很正常,但是我在数据包方面经验不足,无法注意到是否有问题(冲突等)。他们似乎也出了问题。标签被切掉时会发生这种情况(左半部分)。这样的顺序可能是15、14、13(截止),13、13、12、10 ......没有真实的模式。

Picture of the problem

Wireshark文件:https://www.dropbox.com/s/8bchsnoxr68jgxu/ws1.pcapng?dl=0

Python脚本:https://www.dropbox.com/s/532xqtv8ee0qgzz/REA.py?dl=0

Image of actions on printer

1 个答案:

答案 0 :(得分:1)

如果您要进行更改,则无法测试是一个严重的问题。您的照片没有打印代码;您需要进一步看。 通常,将代码发布到此处比将其放置在保管箱中更好。您的保管箱文件有时会过期,然后您在此问题中添加的链接突然失效。将来,由于缺少信息,在这个问题上绊脚石的人会感到困惑。

这可能无法解决您的问题,但应该给您一些想法。

这些预备知识之后:您提供的pyhon代码具有许多例程。大多数代码将简单地将XML代码抛出到您的打印机。这些可以在您的pcap文件中找到。

您需要从保管箱上的rea模块了解的事情:

def STARTJOB(ip):
    xml = '<REA-JET><REA-PI version="3.3"><Command name="STARTJOB" id="0"><Data /></Command></REA-PI></REA-JET>'
    return ExecuteCommand(ip,xml)

def STOPJOB(ip):
    xml = '<REA-JET><REA-PI version="3.3"><Command name="STOPJOB" id="0"><Data /></Command></REA-PI></REA-JET>'
    return ExecuteCommand(ip,xml)

ExecuteCommand将数据发送到打印机。所有内容均以明文形式发送。这样您就可以在pcap文件中看到确切的调用顺序。

当我检查pcap时,我发现每个作业都被明确停止。在数据包的十六进制副本中,您可以每次在Command name="STOPJOB"之前看到带有Command name="STARTJOB"的数据包。顺序似乎是setjob,startjob,stopjob。

我的疑问是,在标签完全打印之前发送了stopjob,从而中止了打印。但是可以肯定的是,您必须进行一些测试。

因此,可以选择在停止作业之前进行睡眠,正如您所说,这会使每张标签打印的生产速度降低一秒钟。另一个选项是检查打印是否准备就绪,只有在打印未完成时才进入睡眠状态。

最后一个选项意味着您必须能够从打印机检索作业状态。

def Feedback(data):
    # Get feedback from the controller, so we can display it in the UI
    # Two parameters are returned, the status code and the status message
    import xml.etree.ElementTree as ET1
    root = ET1.fromstring(data)
    try:
        code = root.find('REA-PI/Status/Code').text  
    except:
        code = ''
    try:
        message = root.find('REA-PI/Status/Message').text
        if message == None:
            message = ''
    except:
        message = ''

    return code, message

但是我不知道返回码和消息的含义。含义在REA-PI/Status/Code中。