【问题标题】:LibUsbDotNet does not list USB printerLibUsbDotNet 未列出 USB 打印机
【发布时间】:2019-01-08 18:28:44
【问题描述】:

我的 C# 程序中有这段代码:

UsbRegistry reg = null;
if (productId == 0)
    reg = UsbDevice.AllDevices.FirstOrDefault(d => d.Vid.Equals(vendorId));
else
    reg = UsbDevice.AllDevices.FirstOrDefault(d => d.Vid.Equals(vendorId) 
          && d.Pid.Equals(productId));

if (reg != null)
    reg.Open(out _device);

UsbDevice.AllDevices 属性仅列出 USB 指纹设备,即使我有 USB 打印机也连接到 USB 连接器。

打印机已牢固连接并打开,事实上,如果我使用 Winspool 驱动程序打印,它可以工作。

我需要绕过 Winspool 驱动程序,但直接将字节发送到连接打印机的 USB 端口进行打印。

这里可能发生了什么?

这已被交叉发布到this Github issue

【问题讨论】:

  • 请参阅meta.stackoverflow.com/questions/266053/…。你用github.com/LibUsbDotNet/LibUsbDotNet/issues/80 交叉发布了这个。通常不鼓励这样做。
  • 仍在交叉发布。有充分的理由在多个网站上发帖并不会改变您在多个网站上发帖的事实。只需在此处引用您打开的问题,就不再有问题了。这只是良好的礼仪。另外,我知道 Stack Overflow 和 Github 问题是什么。我不知道你为什么要解释这些网站是什么。
  • 你没有抓住重点。你可以在这两个地方发帖,但你应该告诉别人。一旦在一个地方回答了问题,另一个地方的人就会知道,并且不会浪费时间回答已经回答的问题。请阅读我在第一条评论中粘贴的第一个链接。 30 多年来,这一直是一种良好的在线礼仪。您坚持做的事情被认为是不恰当的,有些网站会直接禁止。
  • “由于多种原因,很多问题都没有得到回复......发布的问题并不是真正的错误”。没错。

标签: c# libusb-1.0 libusbdotnet


【解决方案1】:

在Windows上,libusb只支持少数驱动,请阅读https://github.com/libusb/libusb/wiki/FAQ#How_to_use_libusb_under_Windows

找到您的指纹设备是因为它使用了 HID 驱动程序(可能)。您的打印机不是 HID,也不是 WinUSB.sys,也不是 LibusbK.sys 它也不使用“winspool 驱动程序”(正如您的问题错误地声称的那样)。 Winspool 是一项服务而不是设备驱动程序。

使用打印机 API 查找设备路径,然后使用 CreateFile 打开并写入。见the question you should have asked.

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2021-09-27
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多