如何访问 USB 驱动程序以直接发送命令? C#

Posted

技术标签:

【中文标题】如何访问 USB 驱动程序以直接发送命令? C#【英文标题】:How to access a usb driver to directly send commands? C# 【发布时间】:2019-04-12 17:18:38 【问题描述】:

我目前正在开发与 TM-T88V Epson 打印机通信的软件。通过串行端口一切正常,但是,我还需要能够通过 USB(以及后来的以太网)发送和接收命令。我发现这比串行端口复杂得多,没有用于控制 USB 端口的本机库。

有关此主题的大多数问题和教程都涉及通过 System.Drawing.Printing 进行打印,或使用外部下载的库来访问总线。此外,还有很多关于使用一些 System.Management 类来搜索 USB 端口的事件和属性的参考资料,非常有用,但没有消息交换。 尽管如此,我认为最好的办法是尽可能使用打印机驱动程序并将其用于此任务,我想这就是驱动程序的用途......我绝对不是专家,我只使用过串行通信无论出于何种原因,通过我的专业。

基本上,我想检测、选择、发送和接收来自 USB 端口的消息。如果打印机驱动程序可以胜任这项任务,那么即使不是任何有用的资源。请注意,我已经有了所有的消息和消息结构。

【问题讨论】:

除了更改 Com 编号外,USB 不需要任何更改。一旦工作正常,您可以升级以自动查找 com 号。 @jdweng COM 号用于串行通信,我对此没有任何问题。我现在要做的就是纯粹的 USB 没有串行属性。它在通用串行总线控制器下的设备管理器中显示为 EPSON USB Controller for TM/BA/EU Printers。 USB是串口!!! : 通用串行总线控制器 是的,但它们的工作方式不同。据我所知,至少不是在代码中。如果有一种方法可以声明任何连接的 USB(例如打印机)与 C# System.IO.Ports.SerialPort 一起使用,请告诉我。这太棒了,我真的需要解决这个问题。 USB 只是一个增强型串口。速度更快,即插即用。只要您保持相同的连接器,它就是相同的端口号。 PC 上的传统 25 针连接器同时具有并行打印机模式和串行模式。 USB 仅增强了串行模式。 【参考方案1】:

这是非常简单的入门代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;


namespace ConsoleApplication108

    class Program
    
       static void Main(string[] args)
        
            string[] names = SerialPort.GetPortNames();

        
    


【讨论】:

以上是关于如何访问 USB 驱动程序以直接发送命令? C#的主要内容,如果未能解决你的问题,请参考以下文章

如何将字节发送到 USB 到并口以控制 LED?

uvc无驱摄像头怎么连接电脑

win7无法自动更新,xbox one手柄怎么驱

如何使用 Java 从 USB 麦克风录制声音

技巧.在虚拟机Vmware中使用HID设备(如USB免驱键盘)

NASM直接访问声卡(无操作系统)