我开发嵌入式系统,需要串行端口进行通信。
在 Windows XP 中,USB 串行端口加密狗的数量不断变化,这使得它难以在脚本或 makefile 中使用(例如,用于通过其内置引导加载程序对 NXP 控制器进行闪存编程,或用于控制目标和两个实验室设备)同时)。
有没有办法修复这种加密狗的 COM 端口?在 Linux 中,我可以通过 udev 通过匹配 FTDI 加密狗的序列号来做到这一点(请参阅我刚刚在搜索此问题的答案时给出的答案)。
FTDI 驱动程序将通过所连接设备的序列号将串行端口分配给相同的 COM 端口。因此,无论 USB 端口如何,端口都应保持不变。但是,如果您插入一个新的 USB 设备,它将不会重新使用之前分配的 COM 端口。
FTDI 有一个应用说明更详细地解释了该过程。
我在使用 Prolific 驱动程序时遇到了普遍的稳定性问题,因此我不使用 Prolific USB 转串口设备,也无法评论他们的映射策略。
根据我的经验,每次将设备插入完全相同的 USB 端口会导致它获得相同的 COM 端口号。
如果您需要将设备插入不同的 USB 端口,也可以更改分配给设备的端口号(设备管理器,编辑 COM 端口的属性)。过去,我用 COM 端口号标记了一个设备,然后将其插入笔记本电脑上的每个 USB 端口,并将 COM 端口重新分配为该编号,无论它插入到哪里。
使用ComPortMan将 COM 端口号绑定到设备。取自帮助页面,这里有一个例子ComPortMan.INI
:
[ComPorts10]
DeviceID=USB\VID_067B&PID_2517
PortName=COM5
[ComPorts20]
DeviceID=USB\VID_1234&PID_5678
PortName=COM6
注意:我发现有时*
需要将 a 附加到设备 ID 才能使其正常工作。
我相信 FTDI 配置工具可以设置固定的 COM 端口号并重命名设备以显示为“您的产品名称”,这样可以更容易地以编程方式找到设备,如果它确实移动(你不只是在寻找COM 端口)。
对于 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) 用于手机,到目前为止一切顺利,还没有问题。交叉我的手指。
干杯。
每个 FTDI 设备都有一个序列号。在您的软件中,当枚举(循环)可用的 FTDI 设备时。是的,您可以一次插入许多多个 FTDI 设备。要求用户选择相应的设备。设备。并在每次循环可用设备时保存和恢复序列号..
使用“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
如应用说明之后的 FTDI中所述,编辑注册表并创建一个设置为 0x01 的 REG_BINARY 值,如下所示:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags\IgnoreHWSerNum{设备VID、PID和接口}
例如:
忽略HWSerNum04030300
将忽略所有具有 VID 0403 和 PID 0300 的 USB 设备的序列号。所有这些设备将获取相同的驱动程序和相同的 COM 端口