摘 要: 針對宿舍衛生和違規信息及時發送的需求,設計并實現了基于GPRS及Synchronization Services for ADO.NET同步技術的宿舍信息發送系統。該系統由服務器端、移動終端(采用基于ARM9的S3C2440微處理器)、GPRS網絡和手機接收終端組成。ARM控制器通過串口向GPRS模塊發送AT指令,將宿舍相關信息以短信形式發送至手機端,移動終端通過基于服務的同步技術實現與服務器端信息的同步。
關鍵詞: ARM; GPRS; Synchronization Services for ADO.NET; AT指令; 同步
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2013)11-77-03
0 引言
宿舍是學生在校期間重要的生活場所,為保證有一個衛生、整潔和安全的生活環境,除了需要學生自我約束外,還需有相應的規章制度及定期的檢查督促制度,其中包括對違章電器進行不定期的檢查,對夜不歸宿、使用違章電器及衛生沒有達到要求的宿舍及時通知班主任。
傳統的做法是采用紙質的表格形式,操作流程是宿管人員將內容設計成表格,然后將表格打印出來,每天進行檢查時,將檢查的數據填寫到表格中。一般情況下,一個宿管人員負責整棟宿舍的檢查工作,待檢查完畢,已近中午。宿管人員上交材料后再由宿舍管理部門分發到系部,系部再將信息反饋給班主任,班主任時常是第二天上午才能接收到信息,這樣的信息不具有及時性。為了能將宿舍的各種信息及時反饋,本系統采用移動解決方案——基于ARM/GPRS的宿舍信息發送系統。宿管人員只需帶上移動設備,進入系統后,將檢查的結果直接錄入系統中,對于環境不理想或有違規情況的宿舍,通過系統的GPRS模塊以短信的形式及時反饋給相應的班主任。同時,將檢查的結果存入移動數據庫中,待檢查完后將移動數據庫中的信息同步到服務器(PC機),可以從桌面的數據庫系統中將所有信息導出到EXCEL中,這樣便于學期末匯總,以及優秀學生宿舍的評選,解決了信息發送不及時和紙質信息不易管理的問題。
1 系統設計
系統主要由服務器端、移動終端、GPRS網絡和手機終端四部分組成。GPRS網絡是移動終端和手機終端的傳輸介質。GPRS采用分組交換技術,它具有“高速”和“永遠在線”等優點,非常適合應用于信息傳送系統的無線傳輸。通過微軟ActiveSync同步程序或無線網絡可以將移動終端連接到服務器,實現信息的同步。系統框架如圖1所示。
1.1 移動終端
移動終端選擇Samsung公司基于ARM920T內核的S3C2440微處理器,嵌入式Windows CE 6.0操作系統以及Siemens公司的GPRS模塊MC39i組成信息發送平臺。GPRS模塊是實現信息發送功能的主要電子元件,通過串口接收AT指令,在模塊內插入手機SIM卡,可以與移動運營商的短信中心建立無線連接,從而實現短信的自由發送。
1.2 服務器端
服務器端主要是完成與移動設備端中的信息同步,數據庫采用SQL Server 2005,數據庫中數據表及表間關系如圖2所示。
2 系統實現
2.1 開發環境與關鍵技術
2.1.1 開發環境
系統采用交叉編譯的方式,使用Visual Studio 2008開發。
⑴ 服務器環境
服務器:IIS
數據庫:使用ADO.NET提供程序的任何數據庫,本系統使用SQL Server 2005。
安裝的組件:SQL Server Compact設備運行時的組件 (SSCEDeviceRuntime-CHS.msi)、支持移動設備數據同步的組件(SyncServices.msi)。
⑵ 移動設備環境
操作系統:Windows CE 6.0
在定制操作系統時,需勾選.Net FrameWork 3.5框架和支持SQL Server Compact 3.5本地數據庫管理組件。檢查設備是否支持SQL Server Compact 3.5,可以打開設備端Windows CE 6.0操作系統中的Windows文件夾,查看是否包含與SQL Server Compact數據庫有關的DLL文件。
2.1.2 關鍵技術
⑴ GPRS
GPRS是通用分組無線服務技術(General Packet Radio Service)的簡稱,它是GSM移動電話用戶可用的一種移動數據業務,它以封包(Packet)方式來傳輸,具備隨時隨地聯機的特點,可以讓使用者隨時都在上線的狀態[1]。
本系統利用GPRS實現短信息的發送,通用的GPRS發送短信主要采用兩種模式:PDU模式與TEXT模式[2]。國內手機基本上不支持TEXT模式,它主要用于歐美地區。PDU模式被所有手機支持,可以使用任何字符集,也是手機默認的編碼方式。PDU模式收發短信可以使用三種編碼:7-bit、8-bit和UCS2編碼[3]。UCS2編碼是Unicode編碼的一種,它采用兩個字節來編碼一個字符,一般用十六進制表示。本系統采用大多數手機默認的PDU模式的UCS2編碼,即短信以UCS2碼的形式進行發送,所以在發送信息之前需要對發送的信息內容按照指定的UCS2碼格式進行編碼,這樣才能正確地發送到目標手機上。
⑵ AT指令
AT即Attention,最初由美國Hayes公司推出,專門用于數據傳輸通信領域,目前已成為全球通用的標準[4]。本系統中使用的GPRS模塊是指帶有GPRS功能的GSM 模塊,它連接了移動設備與GPRS網絡,通過AT指令來控制短信的發送。
本系統中用到的AT指令主要有:AT+CSCA獲取短信中心號;AT+CMGS發送短消息;AT+CMGF選擇短消息信息格式[5],設置0值時表示PDU模式,設置1值為TEXT模式。
⑶ Synchronization Services for ADO.NET同步技術
Synchronization Services for ADO.NET (以下簡稱Sync Services)是微軟公司推出的同步框架(Microsoft Synchronization Framework)中的一員,也是其重要的組成部分[6]。它支持數據庫與應用程序本地緩存之間的數據同步,SQL Server CE提供本地數據緩存的功能,Visual Studio 2008中增加了“本地數據緩存”項目,對Sync Service for ADO.NET提供了非常好的支持??蛻舳说臄祿彺婕夹g除了提高訪問效率外,還可以減少客戶端對服務器的訪問壓力。
Sync Services提供了四種同步方式:僅下載同步、僅上傳同步、雙向同步、快照同步[7]。本系統僅需將客戶端的數據上傳到服務器,所以使用僅上傳同步方式,該同步方式用于在移動終端上插入數據,在同步過程中,會將移動終端數據庫中進行的插入和其他數據更改上載到服務器端。
2.2 主要模塊實現
系統運行界面如圖3所示。本系統設定宿舍衛生分數為10分制,當宿舍分數為9分及以下或出現違規情況時,“通知老師”按鈕激活,可將信息發送給老師。“保存”按鈕將信息插入到客戶端的數據庫中,在將設備連接到服務器端或網絡連接的情況下通過“同步”按鈕可以實現移動設備端與服務器端信息同步。
2.2.1 信息發送模塊
GPRS模塊通過串口采用串行異步數據傳輸方式進行通信,通過AT指令來發送UCS2格式編碼的PDU串。
⑴ PDU編碼
PDU編碼即將要發送的內容、發送到的手機號以及短信中心號轉換為UCS2格式編碼的PDU串。短信中心號和手機號編碼流程如圖4所示。
發送信息編碼的過程是:先將內容轉換為Unicode編碼,再將編碼長度除以2后格式化為兩位的16進制數。
由短信中心號、手機號和發送內容的PDU碼組合即為要發送的PDU串。
⑵ 信息發送
將信息以PDU編碼的形式進行發送,其流程如圖5所示。
信息發送的關鍵代碼如下:
利用串口類SerialPort打開與關閉串口。
打開串口:
AutoResetEvent receiveNow;
public SerialPort OpenPort(string pName,int pBaudRate,
int pDataBits,int pStopBits,int pParity,int pReadTimeout,
int pWriteTimeout)
{ receiveNow=new AutoResetEvent(1);
SerialPort port=new SerialPort();
……//串口參數的設置
port.DataReceived+=new SerialDataReceivedEventHandler
(port_DataReceived);
port.Open();
return port;
}
private void port_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{ if (e.EventType==SerialData.Chars)
receiveNow.Set();
}
關閉串口:
public void ClosePort(SerialPort port)
{ port.Close();
port.DataReceived-=new SerialDataReceivedEventHandler
(port_DataReceived);
port=1;
}
PDU碼信息發送:
public bool sendMsg(SerialPort port, string CenterNo,
string PhoneNo, string Message)
{ bool isSend=true;
try
{ PduEncode pEncode=new PduEncode();
//PduEncode類完成信息到PDU串的編碼
int length;
string SMSPdu=pEncode.GetPduEncode(CenterNo,
PhoneNo, Message, out length);
string recieveData=ExecCommand(port, \"AT\", 600);
//利用定義的方法ExecCommand完成執行AT命令功能
recieveData=ExecCommand(port, \"AT+CMGF=0\", 600);
string command=\"AT+CMGS=\"+(15+length).ToString();
recieveData=ExecCommand(port, command, 600);
string s=new string((char)26, 1);
command=SMSPdu+s;
ExecCommand(port, command, 6000);
return isSend;
}
catch
{ isSend=1;
return isSend;
}
}
2.2.2 信息同步模塊
移動終端與服務器端數據同步采用的是Synchronization Services for ADO.NET同步技術中的N層體系結構,即嵌入式移動設備端(以下簡稱客戶端)不能與服務器端直接進行數據同步通信,需通過中間層??蛻舳瞬捎脙H上傳同步方式同步信息的過程如下。
⑴ 客戶端創建同步代理對象(繼承自SyncAgent),并調用其同步方法Synchronize()。
⑵ 中間層調用服務器同步提供程序代理(繼承自ServerSyncProvider)的ApplyChanges()、GetChanges()等四個方法。
⑶ 服務器調用同步適配器,從而為服務器同步提供程序與服務器數據庫交互所需的增、刪、改命令。
⑷ 將數據增量返回服務器端、中間層和客戶端。
⑸ 同步代理服務器同步提供程序(繼承自ServerSyncProvider)檢索更改,將增量更改于服務器端數據庫。完成客戶端與服務器端數據同步。
3 結束語
本文以GPRS技術和Synchronization Services for ADO.NET同步技術為基礎,根據宿舍的具體需求,在基于ARM的嵌入式移動設備上設計并實現了一種宿舍信息發送系統,系統具有界面友好、方便操作、獲取宿舍相關信息速度快,以及信息發送及時等特點,該系統的投入使用減少了宿舍信息獲取過程中表格填寫、計算機錄入、紙質表格信息傳送等中間環節,提高了宿舍管理人員的工作效率,實現了宿舍信息及時發送。
參考文獻:
[1] 孫小春.GPRS技術及其應用研究[J].楊凌職業技術學院學報,2013.12(2):51-53
[2] 王浩.基于WINCE模擬器的短信收發系統設計[J].南昌工程學院學報,2010.29(1):9-13
[3] 呂延崗,任曉鵬,張紅瑞等.集成GSM短消息的網絡交互平臺設計[J].河北省科學院學報,2012.29(1):15-28,27
[4] 逄玉俊,李姣,王慶輝.基于GPRS模塊的遠程毒氣監測系統設計[J].沈陽化工大學學報,2013.27(2):155-158
[5] 張宏宇,侯立剛,耿淑琴等.一種短信控制的水浸報警系統設計[J].現代電子技術,2012.35(20):1-4,8
[6] 王浩,楊正校,史桂紅.Windows CE系統應用開發編程[M].中國水利水電出版社,2011:139
[7] 蔡子昭,張禮中,王偉.SQL Server CE在野外采集系統中的應用[J].微計算機信息,2011.27(4):64-66