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