gpt4 book ai didi

c - 如何通过CreateFile获取USB打印机文件名以进行原始直接打印?

转载 作者:行者123 更新时间:2023-11-30 15:12:49 25 4
gpt4 key购买 nike

简而言之:如何获取与 USB POS 打印机关联的设备路径?例如\\?\usb#vid_5986&pid_0535#200901010001#{a5dcbf10-6530-11d2-901f-00c04fb951ed}如果我知道打印机的端口是 USB001 并且我知道它的名称?

全文:我有这台无名 POS 打印机,我需要在上面打印。它附带了一个 SDK,一个简单的 DLL,具有 OpenPort(“USB001”)、SendData(“hello world”) 和 ClosePort() 等函数,对于简单的打印来说是可以的。如果您需要重新编程打印机,那就不行了 - SendData 的空终止参数会阻止您向打印机发送零,而这对于某些命令来说是绝对必要的。

我花了一些时间研究是否可以找到其他方法,但没有发现任何实质性内容。最后我找到了this article about Setupapi.lib并尝试了一下:我编写了一个简单的程序,枚举所有设备路径,在打印机打开的情况下运行它,在打印机关闭的情况下运行它,设备路径消失了,我用作 CreateFile 的参数,将数据写入打开的句柄中,然后 - 万岁! - 有效。打印机确实打印了我发送到那里的数据。 :)

现在我需要更简单和优雅的方式来获取此设备路径。我仍在深入研究 Setupapi.lib 引用,但也许有人可以给我一个提示以加快该过程或建议替代路线?

提前致谢。

最佳答案

我在谷歌上搜索“setupapi get device path”,我得到的第一个结果是 SetupDiGetDeviceInterfaceDetail api 。查看该页面,您会发现它返回一个 SP_DEVICE_INTERFACE_DETAIL_DATA,其中包含设备路径。如果您在 google 上搜索该 API,您将找到一个代码示例以及几个有关其使用的问题/答案。

关于c - 如何通过CreateFile获取USB打印机文件名以进行原始直接打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34946586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com