在电动汽车真正意义上大面积进入私人消费选项之前,是应该先有充电桩还是先有电动汽车呢?这无疑是个“先有鸡还是先有蛋”的无解难题。尽管在政策和舆论层面,从中央到地方都在为电动车进入私人消费领域摇旗呐喊,比如由于城市拥堵而加入限行和摇号的城市增多趋势下,摇号摇了几年未果,等不及了去买了电动车,虽然能直接上牌,国家还给予一定的补贴,但是充电是个大问题,而真正由谁来建设这些充电设施的问题上,几乎所有的资本力量都选择了三思而后行。即便前路仍潜藏风险和不确定性,但民营资本仍希望最早切分到充电桩这块市场蛋糕,因此,英蓓特基于自身技术优势,于几年前就开始启动了与几大客户合作,展开电动汽车充电桩的研发工作。
基于WinCE系统的稳定性及实时性,以及拥有相当出色的图形用户界面带给用户桌面式使用习惯的良好体验,因此它在工业控制领域中一直得到广泛应用。在WinCE上进行应用程序开发大致与PC机上的开发类似,而且程序互相移植性高,只要有过PC应用层程序开发经验就可以直接上手,大大节省应用程序开发周期。因此,基于以上优势客户选择了基于WinCE系统的充电桩方案。
我们搜集了一些客户在基于WinCE系统进行充电桩系统开发的时候遇到的一些问题,这次先暂时分享一个,今后有机会再跟大家分享。
下面就针对文章标题中的问题进行分析与解决。
注:基于保密协议,下面涉及到的客户信息做打码处理。
问题现象描述:
图1:
据客户反馈,在进行充电桩批量生产测试时出现了这样的问题:此前WinCE系统同步正常ok,最近因为要重新配置IP使用,发现重新配置IP后USB ActiveSync无法同步了,并出现“winsock服务无法启动”的通信错误,如图1和图2所示。
图2:
在回答这个问题之前,我们来谈一谈同步功能在实际调试中有什么样的作用。
WinCE设备能与PC同步对调试应用程序会提供很大便利,能极大地提高调试效率,比如在LCD驱动调试ok的情况下,最直接的就是针对某款LCD屏能正常显示了,但有可能因为不同厂家的LCD屏细小的差异如时序参数不同,导致更换屏后,同一个LCD驱动参数有可能不兼容,换屏后实际屏显示不正常,这时通过与PC同步,通过pc机虚拟出一个和实际屏同尺寸的屏显示出来,就可以进行应用程序的桌面显示的调试了(如下图5),这样可以避免因屏无法正常显示而无法调试应用程序。此外,批量生产测试每块板子其他功能时也可以不用接LCD屏,而大大提高测试效率。
另外,如果能够同步成功,在调试应用程序时可以直接在vs2005上实时部署应用程序到WinCE设备上,而不用每次修改程序都要编译后通过SD卡或U盘等拷贝到WinCE设备上,大大提高效率;同时通过同步还可以在线调试应用程序,比如断点调试等。
问题分析与解决:
同步功能是WinCE一个出色功能,可以通过USB,serial等物理连接,与PC端通讯进而实现同步功能.当然,不只是同步些数据那么点功能,最关键的,PC端提供很多软件包括pb和evc的remote tools这些工具很多时候要和目标设备连接,借由ActiveSyc功能可以轻松达到目标。这样我们在pc端就可以轻松获得WinCE设备的注册表、进程管理、系统信息等几乎所有数据。
在研究了WinCE系统对ActiveSync同步原理后发现,其通信其实是基于TCP的连接方式,即WinCE设备的USB虚拟出一个虚拟网卡,当WinCE设备与PC通过ActiveSync的方式连接后,WinCE设备的USB虚拟网卡会被分配到192.168.55.101的IP地址,PC会分配到192.168.55.100的IP地址,值得注意的是PC上的这个IP地址是无法通过Ipconfig指令查找到的,也无法ping通,无法Bind,不算是一个真正意义上的IP地址,而在WinCE设备上是能够通过Ipconfig指令查找到。而且任何一台WinCE 设备通过ActiveSync连接后,地址都相同(PC:192.168.55.100,WinCE设备:192.168.55.101)。
经验证,出现无法同步问题现象如下图3示,在WinCE系统上通过ipconfig命令查看发现客户设置的实际网卡网段刚好是设置到了192.168.55.xx网段,而同步时虚拟出的网卡正是WinCE系统默认分配的这个网段,板子上实际的网卡与USB虚拟出来的网卡产生冲突:
图3:
Ethernet Adapter [EMACB1] :板子实际网卡
Ethernet Aaapter [USB CABLE CONNECTION] :同步时USB虚拟出来的的网卡
给出的解决方案如下:
将两个网卡设置到不同的网段,这样就不会产生冲突了。如下图4示,将实际网卡设置到另一网段后同步正常,问题解决。后面向客户了解,他们IT网管确实更改了他们的IP刚好到这一网段。
图4:
同步成功后,PC机和WinCE设备同步,正常显示应用程序状态(如下图5示)。好了,至此,问题全部解决。
图5: