用过Windows Mobile的人大概都有使用USB线链接手机到PC的经历,这一般由ActiveSync来完成软件功能。ActiveSync在Windows Embedded CE以及Windows Mobile 和PC的互操作中扮演重要的角色,使用了ActiveSync,PC就可以检查 Windows Embedded CE以及Windows Mobile 设备的硬件,操作系统,内存等等版本信息,访问和修改注册表,增删改文件和传输文件,甚至调用设备的DLL。本文讲述ActiveSync的开发。
是微软开发的数据同步程序,使得PC可以同步Windows Embedded CE以及Windows Mobile 等设备上的文档,邮件,日历安排,联系人列表等。同时ActiveSync提供手工文件传输和同步功能,可以在PC上安装和卸载Windows Embedded CE以及Windows Mobile 等设备上程序。在Vista之后,ActiveSync被所取缔。
RNDIS(Remote NDIS)是另外一种比较常用的通过USB连接Windows Embedded CE设备和PC的规范。
Remote NDIS Drivers for USB
图转自
从开发者的角度可以把RNDIS理解为IP over USB,C和Windows Embedded CE链接了以后会分配IP地址,可以基于这个IP网来进行开发。RNDIS广泛应用于USB设备中,例如ADSL设备一般支持RNDIS,这样连上USB就能对设备进行配置了。
ActiveSync只能用于XP,当前为4.5版本,下载链接如下:
如果使用Vista,请使用Windows Mobile Device Center,目前版本为6.1,下载链接如下:
对于ActiveSync的开发,我使用了 库,这是一个基于The MIT License (MIT)的开源库。先到下面链接下载。
ActiveSync的功能封装在 库的ActiveSync类。
ActiveSync类通过ConnectNow()和DisconnectNow()对设备进行链接,断开。
rapi.ActiveSync.ConnectNow();
rapi.ActiveSync.ShowCommSettings();
rapi.ActiveSync.DisconnectNow();
ShowCommSettings()显示当前设备链接状态。
当设备链接时候或者断开的时候,也可以配置自动启动程序。
rapi.ActiveSync.AutoConnect = true;
rapi.ActiveSync.AutoStartOnConnect.Add(@"C:\WINDOWS\notepad.exe");
rapi.ActiveSync.AutoStartOnDisconnect.Add(@"C:\WINDOWS\regedit.exe");
设置属性 AutoConnect 为true,当设备链接的时候,activesync自动链接。设置AutoStartOnConnect和AutoStartOnDisconnect,当链接或者断开的时候,自动启动配置的程序。
通过订阅Active和Disconnect事件来处理链接状态变更消息。
rapi.ActiveSync.Active += new ActiveHandler(ActiveSync_Active);
rapi.ActiveSync.Disconnect += new DisconnectHandler(ActiveSync_Disconnect);
void ActiveSync_Disconnect()
{
labelActiveSync.Text = "Device disconnected";
}
void ActiveSync_Active()
{
labelActiveSync.Text = "Device connected";
}
讲到这里,很简单,下一篇将RAPI。