[求助]不能正确获取打印机状态

我用的 CH375B, 参考应用资料 CH375HST.ZIP 中的 CH375PRT.C 给我的仪器增加了一个 USB 打印接口. 现在可以接 USB 打印机打印了, 但是不能检测缺纸等错误状态. USB 打印设备类协议中有 GET_PORT_STATUS 请求, CH375PRT.C 也有实现该功能的函数 get_port_status, 可是我用它获得的状态跟实际状态对不上, 我试了两款打印机, 其中一款不管缺不缺纸, 总是返回 0x10, 另一款不管缺不缺纸, 总是返回 0x18, 不知问题出在哪?

Printer Port Status 定义如下: bit 5: 1 = Paper Empty, 0 = Paper Not Empty bit 4: 1 = Selected, 0 = Not Selected bit 3: 1 = No Error, 0 = Error

你实际上可以接到计算机上面,使用BUSHOUND看下你的打印机在计算机上面获取到的数据数否和我们的CH375获取到的数据是否一样。


To hcn: 是一样的. 傻眼了, 难道这还两款打印机都不遵守 USB printer 规范? 一个是 HP D2568, 一个是 HP D5568. 可是接口描述符中: bInterfaceClass=07H, iInterfaceSubClass=01H, 这个说明它是 USB printer 啊?


呵呵,那和打印机有关系,因为现在很多打印机的一些缺纸,缺墨等信息是通过其他端点发给计算机的,所以可能会有问题的,建议你去打印机厂商联系下。


问题解决了, 汇报一下: 问题1: 为什么不管缺不缺纸都状态位都没有变化? 以前针式打印机都是实时检测并反馈缺纸状态,而我测试用的那两台USB喷墨打印机都是“有打印任务时”才检测缺纸状态,我之前用的前一种方法测试的。

问题2: 为什么其中一款状态是0x10,按规范来解释就是有打印机错误发生,而实际却可以正常打印? 该打印机只装了一个墨盒,缺一个墨盒,于是提示有错,但不影响打印。

另外通过读 HP 打印驱动 APDK 还搞清楚了 HP 打印机扩展状态信息的获取: HP USB 打印机使用 GET_DEVICE_ID 获取设备 ID,其中";S:"字段为扩展状态信息,有缺纸、卡纸等信息。


只有登录才能回复,可以选择微信账号登录