The Hellfire Road to Solve a Problem: IoException raise when Serials Port Open in WinCE-(2)
Posted on 2010-01-06 00:27 大米猫咪来回变 阅读(1286) 评论(0) 收藏 举报WinCE打开串口时抛出IoException的一种原因及其处理方法-2
(4)串口驱动问题?
上一篇我们提到已经发现不是程序的问题而是Os的问题,因此我首先检查的就是在Core OS里面是否将串口驱动是否已经勾选。检查的结果是Core OS-Core OS Services-Serial Port以及相关的Device Drivers-Serial的复选框内都是绿方块的标志。以我现在的理解应该是缺省选中,并且不能去除的意思(如果这个理解有错,麻烦牛人们帮忙纠正)。当时并不知道,所以将绿方块都变成了绿勾勾。重新编译的结果依然是有问题。
(5)其他问题?
于是我就想啊想,在2010.1.1早上还没有醒的时候,我突然想到是不是我勾选了Location服务,Location自动占用了COM口呢,于是兴致勃勃地跑去build了2个小时,结果依然是残念。于是继续搜索, baidu开始的搜索词是 “wince serial port os 配置”,这个搜索词没有合适的结果。然后改为“wince serial port os IOException”,也没有什么合适的结果。后来google到一个帖子,大概得意思是用try块将sp.open()封起来,不处理异常就可以了。当时觉得就有点不可思议,不过还是试了一下。效果是有点意思的,就是收数据的那个线程是工作的,也就是有数据收到的消息发出,但是所有的串口传入的数据都读不到。
(6)终于找到一个答案
这个答案的找到有点偶然因素,将google搜索词直接改为了 wince serial port IOException。然后在比较后面找到一条消息,是CF 2.0 SP2的修复的bug。
CF2 SP2
看到这个想必大家都明白了,这个错误根本就和我们可怜的开发者根本没有关系….是CF2.0的bug…我当时就想到了1年多前IC Local final之前DC遇到的那个问题,这种问题害人啊。于是去下载SP2,兴致勃勃地再次build了os,结果是….依然不行。当时我就觉得非常奇怪,按道理这应该是这个问题的答案但是为啥不行呢?
(7)问题的解决
需要注明的是,我认为打了cf sp2补丁以后,然后rebuild and cleansysgen应该是能解决这个问题,但是事实上问题没有解决。我觉得原因可能和我build老失败有关,但是不能确定。于是我重新装了台式机的系统,在最干净的状态下build,依然不能解决。然后我就想是不是BSP也有影响了,还有其他配置?于是上网搜索Vdx6354专用的BSP,没有找到,但是找到了同系列另一块板vdx6xxx的BSP,也就是前面提到的Vortex86DX_60B_BSP_091028这个,由于这个前面已经测试过,是不能用在6354上的,所以也就没有多浪费时间,事情的转机出现在找到了一个文档Vortex86DX_SPARK_WINCE600_JumpStart_Rev1.0,这个文档和ebox3300和ebox4300的JumpStart没有什么特别的区别。就是在这个文档里面使用的cf3.5而不是CF2.0,当时我就想是不是补丁没有正确作用,如果我换成cf3.5不就可以规避补丁没有起作用这个问题么。于是将Core Os-Application and Services Development里面的.net compact framework改为3.5,rebuild and cleansysgen。。然后经过几次暴力编译(参见另一篇pb失败后的一种解决方案)以后,成功Build的OS的实验结果是OK。需要注意的是此时建议用vs2008开发应用程序,虽然我用vs2005没有发现太多问题,但是vs2005开发应用程序使用的依然是cf 2.0,总感觉不牢靠,呵呵。
三、总结
(1)一句话解决问题: IF Ioexception occur in Wince When Serial ports open ,first patch cf2 sp2.rebuild and clean sysgen. if it dose not works,then use cf3.5 instead of cf2.0-rebuild and clean sysgen.
在解决这个问题中,自己感觉有几个经验就是,首先要对ms platform有一定的敏锐性,与此相关的看文档要仔细,事实上Vortex86DX_SPARK_WINCE600_JumpStart_Rev1.0这个文档中就提到要安装每月更新,只不过当时我没注意到。其次就是搜索能力对于一个开发者实在太重要了。最后耐心…
浙公网安备 33010602011771号