本人有个设备,内部实现了USB驱动,实现USB转串口,但是如果超过2台接入XP系统就很容易出现串口冲突的问题,表现在接入两台设备,分配一个串口号COM7、COM8,再接入一台设备,结果还是COM7和COM8,感觉像是前面接入的一台设备被冲掉了。
用BUSBOUND抓的数据如下:
Device Phase Data Description Cmd.Phase.Ofs(rep)
------ ----- ------------------------ ---------------- ------------------
27.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 1.1.0
27.0 DI 12 01 00 02 02 00 00 40 .......@ 1.2.0
18 80 84 80 00 02 01 02 ........ 1.2.8
00 01 .. 1.2.16
bLength 0x12
bDecriptorType 0x01
bcdUSB 00 02
bDeviceClass 02
bDeviceSubClass 00
bDeveicePortocol 00
bMaxPacketSize0 40 //64bytes
idVendor 18 80 //8018
idProduct 84 80 //8084
bcdDevice 00 02 //设备发行号
iManufacturer 01
iProduct 02
iSerialNumber 00
bNumConfigurations 01
27.0 CTL 80 06 00 02 00 00 09 01 GET DESCRIPTOR 2.1.0
27.0 DI 09 02 43 00 02 01 00 c0 ..C..... 2.2.0
32 09 04 00 00 01 02 02 2....... 2.2.8
01 00 05 24 00 10 01 05 ...$.... 2.2.16
24 01 00 01 04 24 02 02 $....$.. 2.2.24
bLength 09
bDescriptorType 02
wTotalLength 43 00
bNumInterfaces 02
bCongfigurationValue 01
iConfiguration 00
bmAttrributes c0 ???有错误???
MaxPower 32
bLength 09
bDescriptiorType 04
bInterfaceNumber 00
bAlternateSetting 00
bNumendpoints 01
bInterfaceClass 02 //CDC控制类
bInterfaceSubClass 02
bInterfaceProtocol 01
iInterface 00
27.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 3.1.0
27.0 CTL a1 21 00 00 00 00 07 00 GET LINE CODING 4.1.0
27.0 DI 00 c2 01 00 00 00 08 ....... 4.2.0
27.0 CTL 21 22 00 00 00 00 00 00 SET CTRL LINE ST 5.1.0
抓的数据看不懂
假设后插入的设备重复用了com8,那把其中一个用com8的设备改到其他端口不可以么插上设备应该不会有这样的情况啊,串口号应该不相同的啊是不是因为你向系统上报虚拟串口设备的时候,用了固定的ID?
可以每次生成个随机的ID或者SN什么的,至少要跟前一次有区别,不然系统会认为这是同一个设备。