9

我开发嵌入式系统,需要串行端口进行通信。

在 Windows XP 中,USB 串行端口加密狗的数量不断变化,这使得它难以在脚本或 makefile 中使用(例如,用于通过其内置引导加载程序对 NXP 控制器进行闪存编程,或用于控制目标和两个实验室设备)同时)。

有没有办法修复这种加密狗的 COM 端口?在 Linux 中,我可以通过 udev 通过匹配 FTDI 加密狗的序列号来做到这一点(请参阅我刚刚在搜索此问题的答案时给出的答案)。

4

8 回答 8

12

FTDI 驱动程序将通过所连接设备的序列号将串行端口分配给相同的 COM 端口。因此,无论 USB 端口如何,端口都应保持不变。但是,如果您插入一个新的 USB 设备,它将不会重新使用之前分配的 COM 端口。

FTDI 有一个应用说明更详细地解释了该过程。

我在使用 Prolific 驱动程序时遇到了普遍的稳定性问题,因此我不使用 Prolific USB 转串口设备,也无法评论他们的映射策略。

于 2012-12-08T06:39:59.777 回答
7

根据我的经验,每次将设备插入完全相同的 USB 端口会导致它获得相同的 COM 端口号。

如果您需要将设备插入不同的 USB 端口,也可以更改分配给设备的端口号(设备管理器,编辑 COM 端口的属性)。过去,我用 COM 端口号标记了一个设备,然后将其插入笔记本电脑上的每个 USB 端口,并将 COM 端口重新分配为该编号,无论它插入到哪里。

于 2012-12-06T18:01:07.900 回答
3

使用ComPortMan将 COM 端口号绑定到设备。取自帮助页面,这里有一个例子ComPortMan.INI

[ComPorts10]
DeviceID=USB\VID_067B&PID_2517
PortName=COM5

[ComPorts20]
DeviceID=USB\VID_1234&PID_5678
PortName=COM6

注意:我发现有时*需要将 a 附加到设备 ID 才能使其正常工作。

于 2018-03-24T10:59:20.250 回答
1

我相信 FTDI 配置工具可以设置固定的 COM 端口号并重命名设备以显示为“您的产品名称”,这样可以更容易地以编程方式找到设备,如果它确实移动(你不只是在寻找COM 端口)。

于 2012-12-06T13:26:27.933 回答
1

对于 XP

标记 USB/com 设备的 USB 端口,反之亦然。或者将usb/com设备一个一个地插入所有usb口,设置相同的设置,所以插入任何一个usb口都会得到相同的结果。

谨防!

如果在模式状态下设置显示或无,则 USB 硬件设备管理器中的高级端口设置将与模式状态(运行 cmd、模式)不同

真正的 9/25 针串口不会在模式状态下显示,只有那些 USB2serial 才会显示,如果设置正确。如果它没有显示或没有显示正确的速度,因为打印机会打印有趣的字母等。

如果模式状态与设备管理器设置特别是波特率不匹配,则设备无法运行。除非您的自定义软件可以在通信之前提前设置好端口。

另一个问题:如果有多个 usb2serial,即使相同的驱动程序也会出现故障,因为它们共享相同的 ser2pl.sys

使用模式测试usb2serial设备:使用模式设置com?到硬件或XonXoff,如果显示none或无法设置,则该设备的驱动BUG或设备部分故障。它仍然可以在 NONE 检测条件下工作,.. 如果您不需要任何硬件检测,那很好。例如:检查打印机是否在线进行打印,NONE 不会提供离线状态,..

为了省钱,我现在只使用 1 个 usb2serial 设备并获得带有 2 个板载的主板或为串口添加串行卡,...

更不用说 Pl2303 usb,.. ca-42 和 dku-5,过去 3 个月都拥有它们,每个只能在不同版本的驱动程序上使用,.. 大多数新 PC 只有 USB 端口,.. 所以我找到 1 个 ca-42(com1) 用于手机和 1 个 usb2serial(com2) 用于打印机。我遇到了很多问题。也尝试使用 1 pl2303 和 1 CH340(不同的驱动器)问题,因为 ser2pl.sys 看起来不像 2 共享。

目前,手头使用板载 com1 用于打印机和 usb pl2303 ca-42(com2) 用于手机,到目前为止一切顺利,还没有问题。交叉我的手指。

干杯。

于 2013-09-05T04:35:40.067 回答
1

每个 FTDI 设备都有一个序列号。在您的软件中,当枚举(循环)可用的 FTDI 设备时。是的,您可以一次插入许多多个 FTDI 设备。要求用户选择相应的设备。设备。并在每次循环可用设备时保存和恢复序列号..

于 2014-07-07T08:06:37.447 回答
0

使用“FT_INF 2.0.61.242 - 自定义 INF 文件生成器”并将“初始索引”设置为要分配的第一个 COM 端口号(例如 32)。然后使用新生成的 .inf 安装 FTDI 驱动程序(可能需要 .cat 文件自签名)

或编辑 ftdiport.inf: [FtdiPort.NT.AddService.AddReg] HKR,"Parameters\VID_0403&PID_6001","InitialIndex",0x00010001,32

于 2016-09-13T10:11:01.277 回答
0

应用说明之后的 FTDI中所述,编辑注册表并创建一个设置为 0x01 的 REG_BINARY 值,如下所示:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags\IgnoreHWSerNum{设备VID、PID和接口}

例如:

忽略HWSerNum04030300

将忽略所有具有 VID 0403 和 PID 0300 的 USB 设备的序列号。所有这些设备将获取相同的驱动程序和相同的 COM 端口

于 2017-04-19T11:35:46.707 回答