【问题标题】:Define the COM port for other computers为其他计算机定义 COM 端口
【发布时间】:2021-09-08 12:25:52
【问题描述】:

我有一个 Silicon Labs CP2102 USB 到 UART 桥,我需要它来将数据从我的 GUI 传输到 Nucleos F446RE。 我想知道是否有办法为其他计算机定义桥接器的 COM 端口,因为在我的计算机上它是 COM8,而对于不同的计算机它是 COM7。 我知道我可以手动更改它,但没有人拥有管理员权限,如果有任何方法可以自动更改它会很棒。

【问题讨论】:

  • 什么语言?什么操作系统? How do I get a list of available serial ports in Win32? 您可能不想硬编码或重新分配端口号。让您的软件足够灵活,可以使用任何端口。
  • 我使用 c++ 进行 GUI 和 Nucleos 之间的通信,并希望将其用于 windows。将来我也想让它在 linux 上运行。

标签: windows bash serial-port


【解决方案1】:

如果可以,请避免使用 USB 转 UART 桥接器,原因正是您所描述的:它基本上会妨碍良好的用户体验。

安装后可以更改COM端口号,只是不要预先选择它。在安装虚拟 COM 设备期间,Windows 会自动选择一个尚未使用的 COM 端口号。避免冲突部分很重要,它揭示了为什么不可能让硬件选择数字。 (感谢 Ben Voigt 的这一部分。)

您有多种选择:

  • Nucleo F446RE 板具有 UBS 接口。因此,您可以直接将其连接到您的 PC,而无需 USB 转 UART 桥接器。当然,固件需要实现 USB 设备,最好使用自定义协议和 WinUSB 描述符。这样,无需安装设备驱动程序,您的应用程序就可以使用 WinUSB API 与开发板通信。

  • 如果这不可行,另一种选择是选择具有匹配属性的 COM 端口,特别是具有匹配的供应商和产品 ID(VID 和 PID) - 请参阅下面的链接。这样,您至少可以将范围缩小到具有 Silicon Labs CP2102 的设备,这通常足以唯一识别端口。

  • 另一种选择是使用允许配置字符串描述符的 USB 到 UART 桥接器。这样,您可以唯一地识别 COM 端口。要获得真正的即插即用体验,您需要选择不需要安装驱动程序的桥接芯片,因为它实现了标准化的 USB CDC ACM 协议(例如 PL2303GD),或者可以自动安装驱动程序(例如 FTDI 芯片)。

链接:

【讨论】:

  • 您的第一段与您的其余答案无关。单独的桥接芯片可以枚举为虚拟 COM 端口或另一个设备类(例如 FTDI 的 D2XX 模式)。单独的桥接芯片可以具有已知的 VID/PID 或特殊字符串描述符,以便您识别它。是的,这些都是依赖于一致的 COM 端口号的更好方法,但这完全与 USB 功能是集成在 MCU 中还是单独的芯片中无关。
  • 我同意可以创建提供即插即用体验的 USB 桥接芯片。但我不知道存在任何这样的芯片。 D2XX模式的FTDI芯片需要在Windows上安装驱动,所以不是即插即用的。
  • 唯一的例外是带有可配置字符串描述符和 Windows 中已包含的驱动程序的 USB 转 UART 桥接芯片。这样的芯片存在吗?
  • 在 Windows 上,任何 USB 设备都需要安装驱动程序。唯一的区别在于收件箱驱动程序(由 Microsoft 共同签署并预加载在计算机上)、通过 Windows Update 提供的驱动程序(由 Microsoft 共同签署但未预加载)或第三方驱动程序。除非您使用了自定义 VID/PID,否则 FTDI 驱动程序会自动安装。
  • 我不推荐它(我讨厌基于多产芯片的产品)但是“PL2303GD 实现了大多数操作系统本机支持的标准 USB CDC 设备;所以 PL2303GD 不需要任何自定义驱动程序安装.....OTPROM 允许供应商自定义一些 USB 描述符和配置,例如 USB 供应商 ID (VID)、产品 ID (PID)、制造商和产品字符串、USB 序列号、电源配置以及 GPIO 和其他 IO配置。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
  • 2020-09-01
  • 2023-02-05
相关资源
最近更新 更多