• 沒有找到結果。

break;

程式碼 3.8 接收端的對應動作

圖 3.13 檔案傳送流程

圖 3.14 藍芽檔案傳輸介面(1)

圖 3.15 藍芽檔案傳輸介面(2)

3.5 藍芽檔案傳輸測試部分

本節討論以文字為基底的藍芽傳輸效率測試,由於前面已提到每一次的傳輸 容量約 1KB,因此每秒內的傳輸次數將是決定傳輸速率的關鍵,測試的方法為,

傳送各種容量大小的檔案,分為兩個類別,一為 10KB 內的檔案測試,二為 10KB 以上至 2MB 的檔案,分別有 1KB、2KB~10KB,以及 25KB、50KB、100KB、

150KB、200KB、250KB、300KB、400KB、500KB、750KB、1MB、1.5MB、2MB。

每個檔案接傳送 5 次,並且由程式計時,在接收到 file_start 資訊時開始計時,

當接收到最後一個編碼片段時停止,取到 0.1 秒,最後將 5 次結果取平均,而得 出結果。經過測試後,發現傳輸速率約為 16KB/s 左右,圖 3.16 為 10KB 內檔案 傳輸的結果,因為檔案都非常的小,所以時間都小於 1s,而曲線的斜率並不是 很平穩,這與測試精準度有關,因為時間太快所以誤差很大,圖 3.17 為 25~500KB 的時間都在 30 秒左右內,並且速度趨於穩定,時間拉長所以誤差變小,所以速 度很明確,再更大容量的部分(圖 3.18)速度也沒有太大的變動,時間與檔案大小 成正比。

圖 3.16 10KB 以下檔案傳輸

圖 3.17 25~500KB 檔案傳輸

圖 3.18 500KB~2MB 檔案傳輸

除了從技術面來看測試的結果以外,也試著從使用者的角度去看,傳輸各種 類型的文件、音樂、影片等等的感覺,從圖 3.19 中可以看到本系統由於傳輸速 率的限制,在影片的部分需要使用者等待較久的時間,但是在一般文件或者手機 相機所拍照的照片,時間上還算可以接受。

圖 3.19 依照使用者經驗所繪製的圖表

3.6 NFC P2P 傳輸模式

前面我們有測試了藍芽的傳輸檔案速度,但是若檔案不大的話,是否也可用

NFC 的 P2P 模式來傳輸呢?P2P 模式的傳輸量經過測試,理論上是可以無上限 的,因為系統會自動將其切割並連續傳送,只是所需要的時間會隨著傳輸量呈正 相關,因此我們做出了測試表(圖 3.22),可以看到 P2P 的傳輸並不是很穩定,每 一次靠近到開始傳輸的時間不一定,才會造成速度並不穩定,由於程式無法得知 何時開始傳輸所以無法從程式來計時,只好以人工計時從放上去開始到傳輸完成 播放音效,每種容量各五次取平均。

圖 3.20 NFC P2P 模式檔案傳輸介面─接收端

圖 3.22NFC P2P 傳輸測試

3.7 NFC 與藍芽傳輸的比較

雖然藍芽的傳輸速度遠高於 NFC P2P 傳輸,不過藍芽實際上所花費的時間 卻必須加上建立連線的時間,在 3.2 節有提到本文所提供的藍芽建立時間平均為 5.4 秒,因此可以畫出一個時間比較的圖,見圖 3.23。

圖 3.23 NFC P2P 與藍芽實際時間比較

由圖 3.23 可以看出,當檔案為 4KB 時,NFC 傳輸時間正好與藍芽連線時間 交會,若是要傳輸小於 4KB 檔案的話,直接使用 NFC 傳輸會比較快速,這個傳 輸量算是一個使用 NFC 或者是藍芽的分水嶺,當某些應用是兩者皆可以使用時,

便可以此為依據,來決定較有效率的做法。

第4章 系統應用

在有了簡易連線與傳輸檔案的藍芽連線模組後,我們也試著開發一些藍芽上 的應用,少了以往繁複的連線流程,相信使用者接受度會更高,更能享受智慧型 手機所帶來的便利。

4.1 Child Guard

傳統上這類的產品都是小孩與父母兩邊各配戴一個發射器與接收器,並且在 一定的距離外,會發出警告聲,不過會有電池的問題,時常會忘記更換,若電壓 不足,也會影響產品使用的效果。

現在智慧型手機的普遍,並且幾乎都建有藍芽晶片,配合藍芽的傳輸範圍約

10 公尺左右,距離都在可視範圍內,因此非常適合應用在這個部分,在使用本 文的方法建立藍芽連線後,畫面上面會有一個 Call 的圖示,點擊時另一方的手 機會發出聲響,以提醒所在位置,如果因為距離過遠,造成藍芽連線中斷時,此 時兩方的手機也都會響起,以提醒家長及時找尋小孩的位置。

由於本文的連線方式相當簡易,所以即使是不熟悉操作的家長或小孩也能輕 易地使用,並且因為已採用 Service 程式關係,同時也可以執行其他軟體而不會 因為切換畫面造成藍芽連線中斷。

圖 4.1 Child Guard 程式介面

程式實作部分,因為即時的狀態通知是由第二層發出 Broadcast 給第三層,

因此第三層要使用 BroadcastReceiver 來接收,並且定義許多事件,來處理不同的 狀況,本程式用到的有斷線時的事件,還有呼叫對方響鈴的事件,分別是

MESSAGE_LOST 與 MESSAGE_CHILD_CALL,在這兩個事件發生時,皆會播 放警告聲響來提醒使用者,詳細定義可參考程式碼 4.1。

case BlueToothTransmissionService.MESSAGE_LOST:

//連線中斷時,播放警鈴 mp.start();

break;

case BlueToothTransmissionService.MESSAGE_CHILD_CALL:

//收到呼叫時,播放警鈴 mp.start();

break;

相關文件