最近弄3G的驱动,发现3G用得是USB转串口的方式。
根据menuconfig的博客:http://blog.youkuaiyun.com/menuconfig/article/details/6122396弄的。
平台:TI AM3715 WINCE6.0
模块:实创兴的一个3G模块
存在几个问题:
1. usb连接后枚举没有问题,打开串口调试助手能看到由一个COM4的设备
2. COM4能打开,也能发送AT指令,但是收不到模块的回复。
3. 在网上下了一个UsbCdcDriver.dll,用它能枚举出5个COM口,AT指令通讯也好使,所以肯定是我们程序的问题
我的注册表如下:
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\7326\Default\Default\USBSER_CLASS]
"Prefix"="COM"
"Dll"="usbcdc.DLL"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\USBSER_CLASS]
"Prefix"="COM"
"Dll"="usbcdc.DLL"
"DeviceArrayIndex"=dword:1
"RxBufferSize"=dword:4000
"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\1478\Default\Default\SERIAL_CLASS]
"Prefix"="COM"
"Dll"="usbcdc.DLL"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\SERIAL_CLASS]
"Prefix"="COM"
"Dll"="usbcdc.DLL"
"RxBufferSize"=dword:4000
"DeviceArrayIndex"=dword:0
"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
解决问题的方案:
理解 USB interface与其枚举出来的设备的关系,按USB协议来理解,一个interface至少包含一个in端点和一个OUT端点,一个interface可以枚举成一个设备,所以在枚举的时候要把每一个interface用ActivateDevice来加载驱动枚举成一个设备