我开发嵌入式系统并需要串行端口进行通信。
在Windows XP中,USB串口加密狗的数字不断移动,这使得难以在脚本或makefile中使用(例如,通过内置的引导加载程序对NXP控制器进行闪存编程,或者用于控制目标和两个实验室设备同时)。
有没有办法修复这种加密狗的COM端口?在Linux中,我可以通过udev与FTDI加密狗的序列号进行匹配来完成此操作(在搜索此问题的答案时请参阅this answer I just gave)。
答案 0 :(得分:10)
FTDI驱动程序将通过所连接设备的序列号将串行端口分配给相同的COM端口。因此,无论USB端口如何,端口都应保持不变。但是,如果您插入新的USB设备,它将不会重复使用先前分配的COM端口。
FTDI有一个app note更详细地解释了这个过程。
我的Prolific驱动程序存在一般稳定性问题,因此我不使用Prolific USB转串口设备,也无法对其映射策略发表评论。
答案 1 :(得分:5)
根据我的经验,每次将设备插入完全相同的USB端口会导致它获得相同的COM端口号。
如果需要将其插入另一个USB端口,也可以更改分配给设备的端口号(设备管理器,编辑COM端口的属性)。在过去,我已经标记了一个带有COM端口号的设备,然后将其插入笔记本电脑上的每个USB端口,并将COM端口重新分配为该号码,无论它插在何处。
答案 2 :(得分:2)
使用ComPortMan将COM端口号绑定到设备。摘自Help page,这是一个示例ComPortMan.INI
:
[ComPorts10]
DeviceID=USB\VID_067B&PID_2517
PortName=COM5
[ComPorts20]
DeviceID=USB\VID_1234&PID_5678
PortName=COM6
注意:我发现有时需要将*
附加到设备ID才能生效。
答案 3 :(得分:1)
我相信FTDI配置工具可以设置固定的COM端口号,并重命名设备以显示为“您的产品名称”,这样可以更方便地以编程方式找到设备(如果它确实移动)(您不是只是寻找COM端口。)
答案 4 :(得分:1)
for XP
标记usb / com设备的usb端口,反之亦然。 或者将usb / com设备逐个放入所有USB端口,设置相同的设置,然后插入任何USB端口 会得到同样的。
小心!
硬件设备管理器中的高级端口设置与usb不一样 模式状态(运行cmd,模式),如果设置显示或模式状态为无
如果设置正确,真正的9/25引脚串口将不会显示在模式状态,只有那些USB2串口。如果它没有显示或没有显示正确的速度,打印机将打印有趣的字母等。
如果模式状态与设备管理器设置不匹配,尤其是波特率,则设备不起作用。 除非您的自定义软件可以在通信之前提前设置comport。
另一个问题: 如果有多个usb2serial甚至相同的驱动程序可能会出现故障,因为它们共享相同的ser2pl.sys
使用模式测试usb2serial设备: 使用模式设置com?对于硬件或XonXoff,如果它没有显示或者无法设置,则该设备的驱动程序BUG或设备是部分故障。 它仍然适用于NONE检测条件,如果您不需要任何硬件检测,那就没问题了。 例如:检查打印机是否在线打印,NONE将不提供脱机状态,..
为了保存,我现在只使用1个usb2serial设备并获得带有2个板载主板或添加串口卡用于串口,...
更不用说Pl2303 usb,... ca-42& dku-5,过去3个月都有 每个只能用于不同版本的驱动程序,.. 大多数新PC只有USB端口,所以我发现1 ca-42(com1)用于手机和手机。 1 usb2serial(com2)用于打印机。我有 面对这么多问题。尝试使用1 pl2303&由于ser2pl.sys,1 CH340(不同的驱动器)问题 看起来不像2分享。
目前,手头使用板载com1打印机& usb pl2303 ca-42(com2)手机,到目前为止还不错,还没问题。 交叉我的手指。
欢呼声。
答案 5 :(得分:1)
每个FTDI设备都有一个序列号..在您的软件中,通过可用的FTDI设备枚举(循环)..是的,您可以同时插入多个多个FTDI设备.. 要求用户选择approp。设备。每次循环使用可用设备时保存并恢复序列号..
答案 6 :(得分:0)
使用“FT_INF 2.0.61.242 - 自定义INF文件生成器” 并将“初始索引”设置为要分配的第一个COM端口号(例如32)。 然后使用新生成的.inf安装FTDI驱动程序(可能需要.cat文件自签名)
或编辑ftdiport.inf: [FtdiPort.NT.AddService.AddReg] HKR, “参数\ VID_0403&安培; PID_6001”, “InitialIndex”,0x00010001,32
答案 7 :(得分:0)
如FTDI following Application Note中所述,编辑注册表并创建一个设置为0x01的REG_BINARY值,如下所示:
HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ UsbFlags \ IgnoreHWSerNum {德 副VID,PID和接口}
例如:
IgnoreHWSerNum04030300
将忽略具有VID 0403和PID 0300的所有USB设备的序列号。所有这些设备将获得相同的驱动程序和相同的COM端口