解决了标签打印中文乱码的BUG
作者: 葛屹肃 | 日期: 2023-05-11 | 分类: 个人杂谈
近日,客户那边反馈,外箱标签打印时,打印一个订单的标签,常出现漏打的情况。如打印100张标签,只打印出98张标签,漏了2张,需要针对此问题进行分析并解决。
标签打印程序已应用于多个客户,其他客户从未反馈此问题,不过,既然客户反馈了,肯定是有BOG的,要分析原因才能解决问题。
前段时间修正过标签打印程序,加入了打印错误写入日志功能,我让客户将日志发给我,看了下日志,发现凡是漏打的是接收的打印指令里有中文乱码的情况,问题就在中文乱码,如何解决呢?
先想到是接收数据转换方式,byte[]转string,试过几个常见的转换方式,均不能完成解决问题。
之前指令打印指令是只管发送成功,不管是否打印成功,这样就会出现漏打情况。
既然日志已记录了错误的打印指令,那么,就是可以监测到每条打印指令是否成功处理的。而程序可以优化下,发一个打印指令后,再接收打印结果,成功则执行下一个打印指令,失败即重发当前打印指令。
如,打100张标签,修改前后对照:
修改前:服务器生成100条打印指令→将指令逐条发送标签打印程序→标签打印程序收到打印指令马上执行。
修改后:服务器生成100条打印指令→发送第一条指令至标签打印程序→标签打印程序收到打印指令马上执行→将打印结果上传给服务器→服务器接收打印结果(成功则发送下一条指令,否则继续发当前指令。
简单来说,即根据打印结果来处理,如果出现打印异常,则重发打印指令,以防止漏打的发生。
处理流程是没有问题,但要防止出现死循环情况,假如一个打印指令连续打印3次都异常,那可能是打印指令本身有问题,因此,连续打印3次异常时,必须删除当前指令,继续执行下一条。
经过这次优化,标签打印中文乱码的BUG是解决,但会否引起其他问题,那就让时间来见证。
文章链接:https://www.geyisu.com/3106.html