【问题标题】:USB port name for serial communcation用于串行通信的 USB 端口名称
【发布时间】:2016-02-04 15:39:53
【问题描述】:

我想编写代码,让我可以将命令(不仅仅是视频)从计算机发送到电视,具体来说,是一个可以改变输入的命令。代码需要 C++ 语言,并且必须通过 USB 电缆进行通信。

我目前正在使用 Qt 与端口进行通信,但我可以与之通信的唯一端口是“com1”。我想知道,如何获取我的鼠标、USB 声音适配器等设备当前正在使用的 USB 端口的名称?

如果有任何 Qt 代码可以让我向 USB 设备发送命令,那就太糟糕了。

【问题讨论】:

  • 串口与USB是完全不同的技术,不能随意访问USB口,需要连接设备驱动(除非设备是虚拟的com口,会创建一个串口)。
  • 你正在开发什么操作系统?
  • @Gusman 严格来说,USB,即Universal Serial Bus,是一种串口。它只是不适用于 RS-232C 之类的通信。
  • @MikeCAT 不,不是,数据是串行传输的,但这是与串行端口的唯一相似之处,USB 通过具有端点的 USB 控制器进行管理,每个端点描述一个注册设备,并且当您需要传输数据时,您不只是通过端口敲击数据,您必须根据描述符创建一个结构来传输数据。即使您能够创建该结构,您也不会被允许访问底层控制器,因为操作系统将控制 USB 控制器。
  • @Z Rev:你的问题有点零散,但我设法清楚地了解了你想要什么。首先是如何将电视上的 RS-232 连接到 PC 的 USB 端口。这需要一个小型转换器,而 converter 将获得类似 COM2 的名称。这不适用于其他 USB 设备。

标签: c++ qt usb


【解决方案1】:

仅仅因为 USB 意味着通用串行总线,并不能使每个 USB 设备都成为串行端口

USB 设备有不同的类,由不同的驱动程序处理。鼠标和键盘等人机界面输入设备属于 HID 类。这些设备不是串口,不会出现在串口列表中。大多数其他流行设备也是如此,例如扫描仪、摄像机等。

唯一 将出现在串行端口列表中的设备是通信类设备 (CDC),以及具有将它们公开为串行端口的驱动程序的 USB 到串行转换器,例如FTDI 芯片。

至于您的电视,您需要弄清楚您的电视显示为哪种设备类别。您可以使用usbview 之类的工具来枚举 USB 设备并查看它们的属性。您的电视甚至可以是具有 HID 类设备和其他一些设备类的复合设备。

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2017-04-02
    相关资源
    最近更新 更多