背景
用過Windows Mobile的人大概都有使用USB線連結手機到PC的經曆,這一般由ActiveSync來完成軟體功能。ActiveSync在Windows Embedded CE以及Windows Mobile 和PC的互操作中扮演重要的角色,使用了ActiveSync,PC就可以檢查 Windows Embedded CE以及Windows Mobile 裝置的硬體,作業系統,記憶體等等版本資訊,訪問和修改註冊表,增刪改檔案和傳輸檔案,甚至調用裝置的DLL。本文講述ActiveSync的開發。
什麼是ActiveSync
ActiveSync是微軟開發的資料同步程式,使得PC可以同步Windows Embedded CE以及Windows Mobile 等裝置上的文檔,郵件,日曆安排,連絡人清單等。同時ActiveSync提供手工檔案傳輸和同步功能,可以在PC上安裝和卸載Windows Embedded CE以及Windows Mobile 等裝置上程式。在Vista之後,ActiveSync被Windows Mobile Device Center所取締。
什麼是RNDIS
RNDIS(Remote NDIS)是另外一種比較常用的通過USB串連Windows Embedded CE裝置和PC的規範。
Remote NDIS Drivers for USB
圖轉自http://www.microsoft.com/whdc/device/network/ndis/rmndis.mspx
從開發人員的角度可以把RNDIS理解為IP over USB,C和Windows Embedded CE連結了以後會分配IP地址,可以基於這個IP網來進行開發。RNDIS廣泛應用於USB裝置中,例如ADSL裝置一般支援RNDIS,這樣連上USB就能對裝置進行配置了。
下載
ActiveSync只能用於XP,當前為4.5版本,下載連結如下:Download Microsoft ActiveSync 4.5
如果使用Vista,請使用Windows Mobile Device Center,目前版本為6.1,下載連結如下:Download Windows Mobile Device Center 6.1
對於ActiveSync的開發,我使用了 OpenNETCF Desktop Communication Library 庫,這是一個基於The MIT License (MIT)的開源庫。先到下面連結下載。http://rapi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29281
介面
ActiveSync的功能封裝在OpenNETCF Desktop Communication Library 庫的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。