曾藝 陳衍毅
1 引言(Introduction)
中等職業學校相當于高中階段的教育,與高等院校相比,學生年齡小,自我管理能力差,因此,學校為了與學生之間的交流更加緊密,利用好手機的短信收發功能,使之成為學校與學生之間溝通的紐帶已成為學校思考的問題[1]。
本文針對此種情況,提出了一種基于TC35i模塊的GPRS Modem與PC機相結合的解決方案。其核心是通過在數據庫管理系統中提取學生信息,然后將短信內容與學生信息相結合,利用上位機的程序將其轉換為AT指令發送到GPRS Modem,通過GPRS Modem發送到學生的手機上。
2 系統設計(System design)
2.1 系統框架設計
本文設計的中職學校短信通主要由三個模塊組成。第一個模塊式基于TC35i的GPRS Modem,該模塊主要負責發送短信。第二個模塊是PC機,負責從數據庫中提取學生信息以及處理相關的業務邏輯并與通過串口通訊,將短信內容與學生的基本信息相接合,轉換為AT指令傳給GPRS Modem。第三個模塊是數據庫,用以保存學生的基本信息。系統框架設計如圖1所示。
圖1 系統框架圖
Fig.1 System frame diagram
2.2 TC35i模塊
TC35i新版西門子工業GSM模塊是一個支持中文短信息的工業級GSM模塊,工作在EGSM900和GSM1800雙頻段,電源范圍為直流3.3~4.8V ,電流消耗休眠狀態為3.5mA,空閑狀態為25mA,發射狀態為300mA(平均),2.5A峰值;可傳輸語音和數據信號,通過接口連接器和天線連接器分別連接SIM卡讀卡器和天線。SIM電壓為3V/1.8V,TC35i的數據接口(CMOS電平)通過AT命令可雙向傳輸指令和數據,可選波特率為300b/s~115kb/s,自動波特率為1.2kb/s~115kb/s。它支持Text和PDU格式的SMS,可通過AT命令或關斷信號實現重啟和故障恢復。對于本系統中涉及的GPRS Modem,內部已經包含了TC35i模塊,工作時只需將GSM的手機卡插入到GPRS Modem中并外接一個+5V的電源即可,與PC機之間采用USB口進行通訊[2]。
2.3 C#開發的上位機程序
C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。C#是一種安全的、穩定的、簡單的、優雅的,由C和C++衍生出來的面向對象的編程語言,在繼承C和C++強大功能的同時去掉了一些它們的復雜特性。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程的支持成為.NET開發的首選語言。C#是面向對象的編程語言。它使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應用程序,MICROSOFT .NET提供了一系列的工具和服務來最大限度地開發利用計算與通訊領域[3]。因此,本系統利用C#開發了基于桌面的短信發送軟件。
上位機程序主要包括四個模塊。SMSLib模塊用于處理GPRS Modem和上位機的通訊以及短信編碼和相關指令的邏輯處理。Model模塊用于描述實體類,主要描述數據表與實體類之間的映射關系[4]。DAL模塊是數據處理模塊,實現了上位機與數據庫之間進行數據交換的功能。BLL模塊是業務邏輯處理模塊,用于處理程序的業務邏輯,例如,提取數據并轉換數據結構等。同時負責銜接以上三個模塊。
2.4 SQL Server數據庫
本系統采用SQL Server 2000數據庫管理系統作為數據庫的載體。SQL Server 2000是Microsoft公司推出的SQL Server數據庫管理系統,該版本繼承了SQL Server 7.0版本的優點,同時又增加了許多更先進的功能。具有使用方便,可伸縮性好與相關軟件集成程度高等優點[5]。
3 重點和難點(The emphasis and difficulties)
3.1 上位機與GPRS的通訊
因為本系統使用C#語言進開發,而原本GPRS Modem所帶的開發包是由VC 6.0開發的動態鏈接庫SMS.dll。為了能夠在.net環境下使用該包,則必須通過使用C#的DllImport屬性二次封裝SMS.dll,進而重新建立一個SMSLib.dll。例如重新定義一個SMS連接函數。
[DllImport("sms.dll", EntryPoint = "Sms_Connection")]
public static extern uint Sms_Connection(string CopyRight, uint Com_Port, uint Com_BaudRate, out string Mobile_Type, out string CopyRightToCOM);
同時,利用Adapter模式和單例模式對原有的函數庫進行了二次封裝。利用Adapter模式可以使用戶通過一個統一的接口去調用與發送短信相關的函數,而無須考慮指令轉換的細節;單例模式使用戶在調用SMSLib時可以保證在同一時刻只有一個對象被調用,防止在計算機內存中創建多個對象的情況,提高了程序的穩定性并節約了內存開銷。
3.2 上位機與數據庫之間的數據交換
數據庫中的客戶表保存的是學生資料,上位機中的程序有一個Student類與學生表對應。本文利用微軟封裝的Sqlhelper類對數據庫中的學生表進行訪問,使之能夠與學生類進行對應,進而顯示在程序中。學生表的字段見表1。
表1 學生表
Tab.1 Students table
除此之外,還需要與之關聯的專業表、年級表、班級表,如圖2所示。
圖2 數據庫表結構圖
Fig.2 The database table structure diagram
3.3 短信發送過程中程序假死的解決辦法
因為GPRS Modem的處理速度和上位機的處理速度之間的差距,使得GPRS Modem在發送短信的同時,PC機的程序將會一直等待,進而造成計算機死機的假象。為了使計算機能夠在GPRS Modem發送短信的同時即不會造成死機的假象也能夠觀察短信發送的進度,本系統采用了異步多線程的方式進行短信發送。在用戶單擊“發送”按鈕后,系統將開辟一個新的異步線程,用于發送短信,進度條顯示發送的進度。通過該方法不僅提高了計算機的使用效率,而且更好地增強了軟件的客戶體驗程度。
4 結論(Conclusion)
本文設計的中職院校短信通系統由三部分構成,分別是GPRS Modem、上位機模塊和數據庫。其中,上位機模塊采用分層結構設計,各層之間的通訊透明度較高。該系統具有易操作,維護簡單,易于擴展等優點。可以隨時將學籍管理系統的學生信息導入到本系統,并通過該系統對學生發送短信。本系統對加強學生管理,增進師生溝通方面有一定的幫助。
除此之外,本系統是桌面應用程序,后期將擴展該為B/S模式的網頁應用程序也是期待改進的方面。
參考文獻(References)
[1] 楊博,裘雪紅,劉春紅.基于C#語言的SMS應用[J].電腦與信息 技術,2004,(3):29-32.
[2] 李冉冉.基于Oracle的短信平臺的實現及應用[J].微計算機信息,2010,(27):83-85.
[3] 韓超.基于短信的客戶管理系統的設計與實現[J].電腦學習,
2006,(6):11-12.
[4] 劉韻,等.基于Web服務的煤礦安全管理短信平臺的設計[J].
煤礦安全,2010,(7):100-102.
[5] Brad Maiani James Still,等著.康博,譯.Visual C#.NET編程經典.北京:清華大學出版社,2002.
作者簡介:
曾 藝(1980-),女,碩士,講師.研究領域:軟件工程、電子商務教學.
陳衍毅(1972-),男,本科,講師.研究領域:計算機、電子商務教學.