我正在一个项目中使用斑马打印机来打印条形码标签。我们使用 C#,在发送原始的 ZPL 字符串到打印机上(使用 winspool.drv)的打印方面已经做得不错。
但是,我们还需要从打印机读取信息,这方面一直没有进展。
我们需要获取打印机的状态,即 ZPL 命令“~HS”的输出,以便我们可以知道有多少标签在内存中等待打印。Winspool.drv 中的 EnumJobs() 只列出了在 Windows spool 上的作业,一旦它们被发送到打印机上,它们就从列表中消失了。但这并不意味着标签已经被打印了,因为打印机有一个剥离传感器,并且一次只打印一个标签,而我们显然有兴趣向打印机发送批量标签。
我已经尝试了类似以下的代码(使用 winspool.drv 调用):
OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero);
WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); // send the string "~HS"
ReadPrinter(hPrinter, data, buff, out pcRead);
但是在ReadPrinter调用中我什么也没有得到。我甚至不知道这是否是正确的方法。
有人之前解决过这个问题吗?
谢谢。