USBSER驱动,3G模块USB转串口,该如何解决
USBSER驱动,3G模块USB转串口
最近弄3G的驱动,发现3G用得是USB转串口的方式。
根据menuconfig的博客:http://blog.csdn.net/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}"
------解决方案--------------------
我想应该用这么样的步骤吧
1. 你先把你的模块插到PC机上,先看看他本来的物理特性,按照模块本来的特点来虚拟必要的串口,因为usbser
他的本意是一个interface才能变成一个串口 ,看你的模块有多少个interface,并且你的interface是个什么
特征,一个inteface对应2个ep,或者多个,这个都可以通过usbview来看。
2. 你在usbser驱动必要的地方做打印,有一个地方是用来专门加载注册表的dll,也就是你的usbser.dll来虚拟串
口,这个dll是CLIENTCMN,不知道你是否是用他来做的
3. 然后根据你特usb的特性来修改相关串口需要满足的特性才行。
先把加载这不的流程对对,看是否真的过去了
最近弄3G的驱动,发现3G用得是USB转串口的方式。
根据menuconfig的博客:http://blog.csdn.net/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}"
------解决方案--------------------
我想应该用这么样的步骤吧
1. 你先把你的模块插到PC机上,先看看他本来的物理特性,按照模块本来的特点来虚拟必要的串口,因为usbser
他的本意是一个interface才能变成一个串口 ,看你的模块有多少个interface,并且你的interface是个什么
特征,一个inteface对应2个ep,或者多个,这个都可以通过usbview来看。
2. 你在usbser驱动必要的地方做打印,有一个地方是用来专门加载注册表的dll,也就是你的usbser.dll来虚拟串
口,这个dll是CLIENTCMN,不知道你是否是用他来做的
3. 然后根据你特usb的特性来修改相关串口需要满足的特性才行。
先把加载这不的流程对对,看是否真的过去了