【问题标题】:Using a USB printer with C#, with and without driver or API使用带有 C# 的 USB 打印机,有和没有驱动程序或 API
【发布时间】:2013-03-16 20:57:23
【问题描述】:

我不完全是 C# 专家,我做了一些尴尬的事情,比如为音乐程序制作钢琴卷轴(因此生成一个 WPF 画布,全部包含数学等)和一些简单的程序来完成常见任务,比如详细说明飞行(数学运算、GUI 交互等。

我需要对如何在自己的计算机上检测 USB 打印机并使用它有一个非常概括的了解。我已经在这里和谷歌上搜索过,这就是我发现的:

Link 1

Link 2

Link 3

Link 4

Link 5

Link 6

以及其他类似的链接告诉我几乎一无所知的各种方法:(

好的,这就是我想出的(我会尽量简短):

A) 使用没有驱动程序的打印机(这个定义可能不准确,但我有点困惑......)

我应该:

1) 找到一种方法来检测 USB 门以及通过产品 ID 和供应商 ID 连接到它们的设备。在 Developerfusion 文章的特定案例中,作者解释了 USB 的一些基础知识,并告诉您使用人机接口设备来检测它。 (我使用的是 Windows 7,但找不到任何 HID,只有其他随机 USB 驱动器,而且我完全不知道如何与它们交互)

2)创建数据流并将它们与命令一起发送到正确的消息管道上的 USB 打印机(或您打算试运行的水设备)。

B)使用带有驱动程序或 Windows API 或预烘焙驱动程序的打印机:

我应该:

1) 使用在 [MSDN System.printing 库][Link number 6] 中找到的所有 .NET 类,并使用这些类的正确方法...

好的,说明重点:

我真的不知道正确的步骤,这就是我想问你的:

关于如何做到这一点的分步指南,特别是第一个(正如我在 MSDN 论坛问题上看到的,第二个实际上是研究代码的问题)。我不希望您为我编写代码(尽管您可以根据需要)。我只是问一个一般指导方针,哪些是实现最终结果的正确步骤。发布链接,任何可行的...

【问题讨论】:

  • I'm asking just a general guideline on which are the right steps to follow to achieve the final result. 但 SO 不适合它。
  • 那么把代码放好,我也很好,因为我不知道如何开始。谢谢。
  • 根本不做任何“检测”。隐藏打印机之间的差异是 Windows 的工作。每台打印机在您的程序中看起来都一样。
  • @user2212907 Well put the code then,这是我们希望你做的:),否则请尝试谷歌。
  • 你不想尝试接近 A。那里有疯狂。您最终会编写自己的打印机驱动程序。使用方法 B,您首先要找到所需的打印机。例如,请参阅stackoverflow.com/questions/2354435/…。

标签: c# api printing usb driver


【解决方案1】:

此答案适用于选项 A

确实是非常困难的问题。从这样一种高级编程语言访问低级硬件非常困难。我曾经使用 Assembly 来实现,它可以为您提供非常低级的控制。我唯一能想到的是libusb,它也有很好的 C# 包装器。它提供对 USB 设备(如打印机)的直接访问。一个好的 C# 开始将是控制更简单的 USB 设备来掌握它。确保您知道您的打印机如何解释从 USB 端口写入的数据。

C# bindings

【讨论】:

  • 谢谢,这是一个有用的答案!如果几天后我没有收到更好的答案,我会检查你是否为最佳答案。好吧,我需要控制 COM 串行打印机,但我发现 C# 有一些库可以做到这一点,所以我通过使用 System.IO.Ports.SerialPort 命名空间解决了这个问题。由于您回答的主题仍然让我感兴趣,因此我也会检查 libusb 的工作。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多