我正在使用 C# 为 Windows 7 64 位平台编写一个 .Net WPF 应用程序。我的应用程序需要与通过 USB 连接的 Zebra KR403 打印机进行通信。我的问题可能非常基本,但我希望这篇文章能帮助那些不熟悉在 .Net 中使用这台打印机的其他人。
1. 我应该使用哪个 SDK?是否像在我的项目中添加 .dll 并使用它一样简单?我曾尝试使用 Windows CE SDK,但是当 ZSDK_API.dll 尝试加载 ZebraUsb.dll 时,我得到了 BadImageFormatException。这通常意味着 dll 是为不同的平台编译的。
2. 我应该使用 SDK 打印还是应该使用普通的 .Net 打印库?两种选择的优势是什么?例如,如果我使用 .Net 库进行打印,我还必须使用 ZBI(用于与打印机通信的语言)吗?
3. 如何获取打印机的状态(缺纸、未装入介质等)?我找到了一个指南(必须删除链接;声誉不足以发布超过 2 个链接),它解释了如何在 Windows CE 或 Mobile 中执行此操作,但我找不到 Windows 7(普通桌面版本)的等效项。
如果有人可以帮助我解决这些问题,我将不胜感激,我将在此处发布我的最终解决方案(或执行上述操作所需的核心代码)供其他人使用。
预先感谢您的任何帮助。
更新:
我在这里找到了一些允许我通过 USB 直接与打印机通信的代码:http: //danielezanoli.blogspot.com/2010/06/usb-communications-with-zebra-printers.html
我还找到了 KR403 打印机的硬件集成商指南,它在此处解释了 ~HQES 命令的结果:https: //support.zebra.com/cpws/docs/crawl/UG_Kiosk/KR403_UG.pdf#xml=https :// km.zebra.com/kb/index?page=answeropen&type=open&searchid=1363543831914&answerid=16777218&iqaction=6&url=https%3A%2F%2Fsupport.zebra.com%2Fcpws%2Fdocs%2Fcrawl%2FUG_Kiosk%2FKR403_UG.pdf&highlightinfo=12583129,8815, 8825
我现在可以使用上述库通过 USB 或使用 .Net 中的 SerialPort 类通过串行端口将 ~HQES 命令发送到打印机。然后我可以使用上面的硬件集成商指南解释结果并检查打印机的状态。由于这很容易做到,我现在不打算尝试移植 SDK。