socket/send返回值的意义
测试一款国产esc/pos打印机时发现的问题
最终只是找到了解决方法,但并不确定问题的真正原因。
现象
使用GS v *指令打印光栅图片,但总是打印不全。
更换其它图片甚至更大的图片都没有问题,只发现特定一张图有问题。后通过修改数据值测试可以完整打印了所以一度认为是数据撞指令的问题,但厂家测试又没有问题。
测试过其它款打印机也是有的正常,有的也同样打印不全。
解决办法
在完成数据传输后加了延迟断开连接后问题不存在了。
send指令返回了正确的发送数据长度,但它的返回并不代表对方已经接收成功,只代表本地缓存copy成功。再加上打印机单片机性能可能造成的接收比较慢,所以有可能是打印机没有接收完整数据。
但还是有些测试现象解释不通,所以感觉还是没有完全找对原因。