USB混合设备 USB虚拟多串口

肖勇   2009-10-13 13:20 楼主
比如我们的手机以modem方式插入电脑后,会虚拟出很多个串口。

其中包括一般的串口和modem串口。
这是怎么实现的呢,大概原理是什么。

我的理解是:一个USB设备包含多个端点(Endpoint),一般是4个,每个端点用作不同的功能,因此当插入USB主机后,可以虚拟出多个串口,打开不同的串口时,每个被打开串口能够访问的是其中一个端点。

不知道这样的理解是否正确。

请大家指点一下,谢谢

回复评论 (13)

这个还不怎么清楚,但是帮顶一下
点赞  2009-10-13 13:32
up,mark
点赞  2009-10-13 13:34
不了解,顶
点赞  2009-10-13 13:48
应该是复合设备才对!

其实就是一个USB Modem
怎么实现的,原理
点赞  2009-10-13 13:54
不知道是不是你想要的,
一般的端口读写,其实就是读写一个端口文件。然后用文件共享的方式读写就可以了。
点赞  2009-10-13 14:49
只做过虚拟成一个的
点赞  2009-10-13 17:42
引用: 引用 5 楼 jzhang19820329 的回复:
不知道是不是你想要的,
一般的端口读写,其实就是读写一个端口文件。然后用文件共享的方式读写就可以了。


有参考的源代码吗??、
谢谢
点赞  2009-10-13 23:20
关注新技术.
点赞  2009-10-14 09:06
这个不算什么新技术吧,很多人都会了,只是我还不懂而已
呵呵
点赞  2009-10-14 10:11
标题有误,
刚刚了解到,USB设备分复合设备和组合设备

我正在开发的驱动应该是属于组合设备得驱动。

设备描述如下:


  1. Device Descriptor:
  2. bcdUSB:             0x0110
  3. bDeviceClass:         0x00
  4. bDeviceSubClass:      0x00
  5. bDeviceProtocol:      0x00
  6. bMaxPacketSize0:      0x40 (64)                //最大包大小
  7. idVendor:           0xXXXX                //生产商ID
  8. idProduct:          0xXXXX                //产品ID
  9. bcdDevice:          0x0000
  10. iManufacturer:        0x01
  11. iProduct:             0x02
  12. iSerialNumber:        0x00
  13. bNumConfigurations:   0x01

  14. ConnectionStatus: DeviceConnected
  15. Current Config Value: 0x01
  16. Device Bus Speed:     Full
  17. Device Address:       0x01                //设备地址,随机
  18. Open Pipes:              9                //端点数量

  19. Endpoint Descriptor:
  20. bEndpointAddress:     0x81
  21. Transfer Type:   Interrupt
  22. wMaxPacketSize:     0x0010 (16)
  23. bInterval:            0x80

  24. Endpoint Descriptor:
  25. bEndpointAddress:     0x82
  26. Transfer Type:        Bulk
  27. wMaxPacketSize:     0x0040 (64)
  28. bInterval:            0x00

  29. Endpoint Descriptor:
  30. bEndpointAddress:     0x02
  31. Transfer Type:        Bulk
  32. wMaxPacketSize:     0x0040 (64)
  33. bInterval:            0x00

  34. Endpoint Descriptor:
  35. bEndpointAddress:     0x84
  36. Transfer Type:        Bulk
  37. wMaxPacketSize:     0x0040 (64)
  38. bInterval:            0x00

  39. Endpoint Descriptor:
  40. bEndpointAddress:     0x04
  41. Transfer Type:        Bulk
  42. wMaxPacketSize:     0x0040 (64)
  43. bInterval:            0x00

  44. Endpoint Descriptor:
  45. bEndpointAddress:     0x87
  46. Transfer Type:        Bulk
  47. wMaxPacketSize:     0x0040 (64)
  48. bInterval:            0x00

  49. Endpoint Descriptor:
  50. bEndpointAddress:     0x07
  51. Transfer Type:        Bulk
  52. wMaxPacketSize:     0x0040 (64)
  53. bInterval:            0x00

  54. Endpoint Descriptor:
  55. bEndpointAddress:     0x88
  56. Transfer Type:        Bulk
  57. wMaxPacketSize:     0x0040 (64)
  58. bInterval:            0x00

  59. Endpoint Descriptor:
  60. bEndpointAddress:     0x08
  61. Transfer Type:        Bulk
  62. wMaxPacketSize:     0x0040 (64)
  63. bInterval:            0x00

点赞  2009-10-14 23:35
搞定
3G\CDMA\EVDO驱动开发完成,成功虚拟多个串口
点赞  2009-10-16 18:00
是否一对IN/OUT对应一个COM口,虚拟成4个串口 吗?你的注册表是怎么写的,如何加载驱动的?
点赞  2009-11-25 15:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复