软硬件环境:Wince6 + Pxa300
我的wince6的BSP是从Windows mobile项目上移植过来的,mobile项目已经成熟量产,所以板子硬件绝对没有问题。
现在碰到的问题是:插上usb之后在PC上能够发现设备,驱动也能够安装成功,但是ActiveSync不能够自动连接,注册表中已经设置了自动连接了,如下:
[HKEY_CURRENT_USER/ControlPanel/Comm]
"Cnct"="`USB"
"AutoCnct"=dword:00000001
在控制面板中新建一个网络连接,双击之后弹出连接对话框,之后设备上提示已经连接成功,PC机端的ActiveSync的绿色图标也开始转动起来了,但是却转个不停,大约3分钟后,PC上提示ActiveSync连接不成功,绿色图标变灰。
郁闷ing...
在网上搜了一圈,发现也有很多人遇到这个问题了,但是大多是问,却没有人提出解决方法,看到一个国外论坛上有人说在设备端运行repllog.exe可以自动连接成功,于是插上usb之后我也在设备的windows目录下面双击repllog.exe运行,果然,设备端自动弹出连接成功的对话框,PC机上ActiveSync的绿色图标也开始转起来了,然后一个清脆的声音提示后,ActiveSync连接成功了,哈哈。。。
但是,我总不能这样手动去运行repllog.exe来达到自动连接ActiveSync的目的吧!但是转念一想,既然这样能够连接成功,说明设备的usb驱动是没有任何问题的,usb连接的配置也是没有问题的,插上usb不能自动连接ActiveSync应该是我是设备上CE系统的问题。由于我CE6的项目的注册表也是全部来自于Mobile项目,所以开始怀疑注册表有问题。
最后,经过对比CE6项目的注册表,Mobile项目的注册表以及CE5项目的注册表,发现拿掉我CE6中注册表开始的一部分代码后,usb竟然可以自动连接成功了,这部分代码是mobile项目上的,ce5的项目上没有,所以才试着拿掉的,结果竟然OK。
拿掉的注册表部分代码如下:
IF IMGPERSISTENTSTORAGE
[HKEY_LOCAL_MACHINE/System/Platform]
"DataPath" = "//"
"PSAtRoot"=dword:1
[HKEY_LOCAL_MACHINE/System/OOM]
"Reserved"=dword:300000
[HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/LowMem]
"ProgramMem"=dword:5A
"ShellExecMem"=dword:7d000
"StorageLimit"=dword:493E00
[HKEY_LOCAL_MACHINE/SYSTEM/GWE/Notify]
"volume"="//mxip_notify.vol"
; @CESYSGEN IF FILESYS_FSDBASE
[HKEY_CURRENT_USER/Software/Microsoft/Windows]
"DbPath" = "//mxip_initdb.vol"
"LangDbPath" = "//mxip_lang.vol"
; @CESYSGEN ENDIF FILESYS_FSDBASE
[HKEY_CLASSES_ROOT/.mid]
@="midifile"
[HKEY_CLASSES_ROOT/midifile/DefaultIcon]
@="sndplay.exe,-100"
[HKEY_CLASSES_ROOT/midifile/Shell/Open/Command]
@="sndplay.exe %1"
ENDIF ; IMGPERSISTENTSTORAGE
问题虽然解决了,但是却不知道为什么!再次郁闷ing...
看上去注册表这部分代码跟usb没有任何关系啊,唉,不管了,解决了问题最重要,如果哪位达人知道为什么的话,敬请留下脚印,指导一下。谢谢。
Hzh
2010.02.21 8:23 PM