wince6.0通过USB与Windows进行通讯
原理说明:
wince与windows通过USB进行资料传输的时默认采用的是ActiveSync的通信方式
而在查找了一些资料后发现ActiveSync通信其实是基于TCP的连接方式:
当PDA与PC通过ActiveSync的方式连接后,PDA会得分配到192.168.55.101的IP地址,
PC会分配到192.168.55.100的IP地址,值得注意的是PC上的这个IP地址是无法通过Ipconfig指令查找到的,也无法ping通,无法Bind,
不算是一个真正意义上的IP地址。而且任何一台PDA通过ActiveSync连接后,地址都相同(PC 192.168.55.100,PDA 192.168.55.101)。
固此demo采用PC作为Socket Server端,PDA作为Socket Client端进行数据通信这种方式(反过来不可行)
服务端代码与普通Socket Server代码没什么两样,值得注意的是Bind的IP地址不能为192.168.55.100,也不能为该计算机的网络IP地址,而需要绑定“127.0.0.1”。
客户端代码与普通Socket Client代码差不多,连接的地址设置为“192.168.55.100”
另外值得注意的是Socket的Connected属性,在PC端的Socket Server服务关闭(Close)的情况下,PDA只要Connect后 Connected属性都会变成true。
因此不能仅仅通过Connected属性来判断Socket是否连接正常,需要单独开一个线程,采用心跳包的方式进行检测。
最好在Socket.Connect后执行一下Socket.Receive,如果成功则说明网络正常,不成功说明网络断开。
为防止Receive阻塞,PC服务端程序在与PDA连接后应立即发送一个短字节给客户端,让客户端接收。
demo环境为:
语言:C#
开发程序:VS2008
PC端:WIN7-64,ActiveSync_6.1
PDA端:WINCE6.0
作者:吴兵
时间:2018-09-20