Wince 运行一段时间后同步出错的问题

来源:互联网 发布:今日重要财经数据 编辑:程序博客网 时间:2024/04/30 12:43

最近在研究Wince6.0设备的开发,远望谷的手持读写器太恶心,除了几个写的错误百出的手册什么都不给,网站论坛都打不开,问工程师也不搭理,全靠自己摸索,这种产品态度迟早要出事。

   毋庸赘言。最近遇到了个问题,在开发时,Wince设备突然出现不能与pc机同步的情况。前几天还好好的,昨天下午突然就不能通过USB连接了。具体现象是Wince设备端显示可以连接,而且pc机处也能够检测到设备的存在,但是无法打开设备,无法进行同步传输与调试。每次断开重连后,PC机端的Windows Mobile Device Center有一瞬间的状态表明能够检测到设备,但是不能进行连接。我使用的环境是Win7 64位+Vs2008+Wince6.0,由于工程师通过USB Connection来进行部署,这样一来,无法进行程序调试,进度受阻。询问远望谷客服,完全没有回应,只好自己尝试解决。

   xp操作系统的PC机是通过 ActiveSync来与Wince设备进行同步,在Vista和Win7中,微软内置了Windows Mobile Dece Center来取代之前的 ActiveSync。经过测试,PC端的USB端口与数据线都完好无损,断定问题出现在Wince设备端,同时在xp虚拟机下进行断开重连,显示“无法验证您设备上ActiveSync的版本,可能有程序(例如防火墙)正在阻止使用ActiveSync端口连接到设备,或者可能需要升级到PC上教新版本的ActiveSync”。在试过重启、重装等各种方法之后已经无效。

   在网上发现大多数Wince设备其实都存在这个问题,Wince系统在使用USB同步功能一段时间就会出现无法同步,问题在于Documents and Settings\default.vol这个文件。如果没有找到,需要在Wince设备中的“查看/选项”中设置显示隐藏的文件。详细内容请参见renpine的博客《一个ActiveSync无法连接的解决方法》,文章地址为http://blog.csdn.net/renpine/article/details/4709437#comments。解决方案即是删除掉这个文件。但是这个文件一直在被系统占用着,采用常规方式无法删除。于是我到msdn论坛网站上找到了另一种解决方案,地址为:http://social.msdn.microsoft.com/Forums/en-US/00dc8049-167b-4bd9-9e84-0a0bee02832b/defaultvol?forum=winembmngdapp。根据论坛中的帖子内容,Henrik也认为是default.vol的问题,并解释了原因。Bruce Eitman则给出了移除通知时间的方法,此方法可以避免default.vol越滚越大。根据Bruce Eitman的方法,Conrad de Wet则在论坛中给出了更详细的代码:

//some defines

[DllImport("coredll.dll", EntryPoint = "CeRunAppAtEvent", SetLastError = true)]
        private static extern bool CeRunAppAtEvent(string pwszAppName, int lWhichEvent);

        public static int NOTIFICATION_EVENT_RS232_DETECTED = 9;
        public static int NOTIFICATION_EVENT_NONE = 0;

CeRunAppAtEvent("repllog.exe\0", NOTIFICATION_EVENT_NONE);

CeRunAppAtEvent("repllog.exe\0", NOTIFICATION_EVENT_RS232_DETECTED);

就是这几行代码编写成的修复程序,转存到wince设备中一运行,测试成功。又可以重新连接了,问题解决!

如果你不愿意编译,修复程序可以在这里下载的到:http://download.csdn.net/detail/facai_sdu/6942531



0 0
原创粉丝点击