//Logo Image
作者:李哲熙(2009-06-17);推薦:徐業良(2009-06-18)

EmailSMS轉傳軟體之設計與建置

元智大學老人福祉科技研究中心開發之「分散式遠距居家照護系統」,資訊傳輸架構如圖1所示,其中事件警示(event alert)功能,係由應用伺服器(Application Server)掛載Email/SMS轉傳軟體的傳送而成。當軟體接收到分散式資料伺服器(Distributed Data Server, DDS)所傳遞的警示訊息時,立即擷取出使用者的量測血壓、脈搏或是血糖等生理訊號,並依指定方式傳送至照護者的Email信箱或是手機,使照護者得知警示事件發生。

1. 分散式遠距居家照護系統資訊傳輸架構

本文將說明如何利用Visual Basic 2005建置Email/SMS轉傳軟體。首先介紹DDS警示訊息格式,接著說明如何以此格式建置軟體。

1.     量測警示訊息格式

DDSApplication Server之間的溝通採用HTTP通訊協定,以Application Server8080連接埠進行訊息的傳遞。當DDS接收到由使用者所上傳的血壓、脈搏以及血糖資料後,自動判斷是否超出預設的臨界值,並以指定的訊息格式傳送至Application ServerEmail/SMS轉傳軟體進行接收。表1為事件警示格式,訊息內容可分為編碼、聯絡方式、聯絡資訊、生理訊號類別、以及生理訊號數值,訊息間以「*」字號做區分。警示訊息的轉傳概括可分為以Email傳送血壓或血糖量測警示、以及以手機簡訊傳送血壓或血糖量測等四種訊息。

1. DDS事件警示格式

Code

EMAIL(0)

SMS(1)

EMAIL

PHONE

BP(0)

BG(1)

Date

Time

SP

DP

Pulse

5566

0

xxxx@gmail.com

0

2009-06-15

12:05

120

80

70

Code

EMAIL(0)

SMS(1)

EMAIL

PHONE

BP(0)

BG(1)

Date

Time

BG

5566

1

0929xxxxxx

0

2009-06-15

12:05

120

Application Server網路位置為140.138.40.190Email傳送血壓、脈搏警示訊息為例需傳送指令

http://140.138.40.190:8080/*5566*0*xxxx@gmail.com*2009-06-05*12:05*120*80*70*

若傳送血糖警示訊息,則傳送指令變為

http://140.138.40.190:8080/*5566*0*xxxx@gmail.com*2009-06-05*12:05*120*

SMS傳送血壓、脈搏警示訊息,需傳送

http://140.138.40.190:8080/*5566*1*0929xxxxxx*2009-06-05*12:05*120*80*70*

若為血糖警示訊息,則傳送指令為

http://140.138.40.190:8080/*5566*1*0929xxxxxx*2009-06-05*12:05*120*

2.     Email/SMS轉傳軟體建置

2.1 Email/SMS轉傳軟體使用說明

Email/SMS轉傳軟體為掛載於Application ServerHTTP Server應用程式,負責接收8080網路監聽埠訊息。圖2為實際軟體介面,當軟體啟動後,勾選啟動EMAIL以及SMS功能後即可開啟EMAILSMS的轉傳功能。介面中的所有文字物件(Textbox)會顯示最後一次接收的相關訊息,包含量測日期、時間、電子信箱、行動電話、以及生理訊號的數值等等資訊。此外軟體自動於Application Server系統槽中建立一DDS_LOG資料夾,當成功轉傳訊息後,於資料夾下的log檔自動加以儲存,可用於記錄是否有不正常的網路連線事件(如圖3)。

2. Email/SMS轉傳軟體介面

3. 轉傳記錄的儲存

2.2 Email/SMS轉傳軟體建置

Email/SMS轉傳軟體可分為HTTP Server資料監聽、Email以及SMS警示訊息的發送等三項。軟體執行流程敘述如下:

HTTP Server負責接收Application Server8080網路監聽埠訊息,當接收正確的DDS警示訊息時,程式自動判斷為Email或是SMS警示事件,並正確擷取出使用者的生理訊號,進而以Email或是SMS程式將警示訊息通知照護者。

2.2.1 HTTP Server的建置

HTTP Server是採用獨立執行緒(thread)的方式進行建置,以此方式可使執行HTTP Server與程式主畫面的程式隸屬不同執行緒,不會使HTTP Server執行Do While迴圈而造成主程式畫面如同當機一般情況發生。程式執行內容如圖4所示,令ListenerThread執行緒負責執行MainProcess的函式,由MainProcess函式可得知程式將網路監聽埠設定為8080埠,隨後進入ListenerProcess函式執行HTTP Server功能。

4. ListenerThread執行緒的執行內容

5HTTP Server實際運作流程,當ListenerProcess進入Do While迴圈後,程式不斷監聽8080連接埠是否有網路訊息(HttpListenerRequest)傳送至此,並將接收到訊息加以整理儲存為變數msg。隨後令網路回覆(HttpListenerResponse)與訊息msg相同,代表DDS傳送特定警示訊息至監聽程式,而監聽程式也將回覆同樣的訊息至DDS,完整達成HTTP通訊架構。然而如先前所述ListenerProcess與主程式屬不同執行緒,訊息msg無法直接於主程式物件中顯示,即無法擷取警示訊息進行後續EmailSMS的發送。為使網路訊息msg能在主程式中顯示進行後續的處理,需要透過Displaymsg委派函式(Invoke)進行不同執行緒下的資訊交換。

5. HTTP Server的建立

6Displaymsg為委派函式部份程式碼,當接收到網路訊息msg後,經由Displaymsg的委派可將變數轉存為comData,令receive_msg文字物件等於comData後即可於主程式中顯示。將receive_msg內容以「*」號進行切割,首先判斷Code碼是否為5566,接續判斷訊息長度是否為9的血糖訊息或是11的血壓訊息,進而分解出所需Email/SMSEmail/PhoneBP/BGDateTimeSPDPPulse、以及BG等相關資訊,再由SendMail_bpSendMail_glucoseSendsms_bp以及Sendsms_glucose等函式傳送警示訊息,完成後在C:\DDS_LOG\log.txt位置將轉傳事件加以儲存。

6. Displaymsg判斷程式碼

2.2.2 Email軟體的發送

Visual Basic 2005Email軟體的撰寫上有其特定的撰寫方式,Email警示訊息可分為血壓和血糖兩種警示訊息,在此以血壓量測為例,說明如何以Visual Basic 2005指定掛載於Application Server中的雷電MAILDXP郵件伺服器發送Email。圖7為實際發送血壓警示Email程式碼,需填入內容有郵件伺服器位置、照護者Email、郵件標題、郵件內容、Smtp伺服器位置與網路監聽埠、帳號與密碼、以及是否需安全驗證共七項次,再經由SmtpClientSend屬性加以發送即可。當雷電MAILDXP郵件軟體收到呼叫後,立即將血壓警示訊息傳送至照護者Email信箱(如圖8)。

7. Visual Basic 2005呼叫雷電MAILDXP郵件伺服器發送Email

8. 雷電MAILDXP郵件發送

2.2.3 SMS軟體的發送

SMS手機簡訊的發送採用台灣簡訊公司平台,使用前需先申請使用者帳號並儲值簡訊數,而目前註冊帳號為「t0084921」,密碼為「THOMAS4201」。台灣簡訊平台採用HTTP通訊架構,意指在流覽器下輸入所需留言訊息後,即可傳送簡訊至指定手機號碼中。網址傳送格式為

http://api.twsms.com/send_sms.php?username=t0084921&password=THOMAS4201&type=now&encoding=big5&mobile=行動電話號碼&message=留言內容&vldtme=3600

將行動電話號碼、以及留言內容填入所需的文字,即可將訊息傳送至指定行動電話中。圖9為傳送血糖警示程式碼,取得phone以及message內容後,透過GetWebPage函式即可傳送URL內容,達成血糖SMS警示訊息的傳送。

9. SMS傳送血糖警示訊息