PDA
Multicast Receiver
壹、系統架構
以下是Multicast client與Server的連接關係圖.

藉由IP網路可使得Multicast節省頻寬的功能發揮.在一般的情況下學生可以使用校園網路來連接,但對外出工作的人士可能無法容易使用固接式網路,此時可採用撥接上ISP的方法連接IP網路,如果移動性很需要時(如在高速公路上想要接收Multicast來的資訊),也可使用手機作撥接.
但是目前GSM手機的基地台尚未支援Multicast的功能,如果要使用則只能採用unicast對每個Client都做一次傳送的方法模擬.將來GPRS的系統或Bluetooth等無線網路可能會對Multicast有較佳的支援,同時計費會較便宜,使Multicast能較具市場潛力.

在這次專題中Multicast Client主要的用途是接收來自Server 的新聞.Server是由同為吳曉光老師專題的Multicast
Data組架設並實作,同時另一組PDA(使用WinCE)也會提供功能相同的程式來接收.我們必須使用與硬體及作業系統無關的協定來傳送資料.幸好我們傳送的都是一般文字而沒有命令控制或要求對方執行在某種系統上才有的功能,使得實作起來容易許多.

下圖就是使用Multicast Cilent接收資料的情形:

貳、程式架構
主要的架構如圖

在正常的情況下,程式的行為就如上圖,但由於我們使用的是C語言,因此許多物件導向的特性都無法實現.而GTK+又是事件驅動式的,所以我們的開發環境處在OO與非OO之間,無法完全用上圖來描述.
當使用者按下get後,程式會將使用者輸入的資料向Server求證

至於驗證IP是否為合法,則是嘗試比較他是否為數字,若不是則為錯誤.
另外若是數字,則嘗試用它建立socket,若無法順利的建立,那它也是不合法的IP.

當Display被Bind後每當有資料從網路上到來,程式就會自動執行更新介面的函式,而不必使用不斷查看網路是否有資料來的做法,減少CPU資源消耗.

當使用者要停止接收時,按下”stop”鍵,程式便會解除Display的bind,新資料到來將不會被處理.隨後,程式會釋放socket,完成停止接收的動作.

若使用者想關閉程式了,似乎只需像一般終止即可,但有可能此時仍在接收資料,所以必須如下處理:

參、程式功能及使用方法

(使用需者須先向Server註冊以取得帳號及密碼.)
在IP, Account, Password鍵入適合的資料後,按下Get即會有資料顯示在左方的文字區域中,有時錯誤會發生,這個程式會處理的錯誤有:
錯誤情況 處理方法
無法連接到Server 顯示Can't
connect to News Server.
身分驗證逾時 顯示Sorry,
Server didn't reply.
身分不被接受 顯示Server傳回的字串(Not
member)
這些錯誤不會造成程式關閉.程式會回復到啟動時的狀態.
PDA-Outlook
壹、研究背景
現在的PDA相當的熱門,而且PDA在未來還有相當大的發展空間,現今市場上PDA的軟體以及設備都尚未成型,又有兩種不同的發展模式在彼此互相競爭,因此想發展一套結合已有的window系統上的軟體和PDA上的軟體作溝通的軟體,不僅能讓PDA和辦公室更結合,對於使用者來說使用熟悉的軟體也較為人性化。
貳、研究目標
目標有兩個: 一是發展在PDA上的應用程式; 二是發展PDA上的通訊程式,讓PDA和PC之間能夠互相溝通,傳遞資料與訊息。
參、問題分析
所使用的PDA是使用精簡版的LINUX作業系統搭配能使用GTK程式所開發的圖形介面,因此此項PDA軟體的撰寫都直接在PC上模擬。
製作一個用GTK寫出來的圖形介面程式,提供一個使用者能夠新增刪除的介面。 這個使用者介面是參照Windows上的Outlook的連絡人而來的,目標是能夠提供像連絡人一般的輸入介面,讓使用者能夠在PDA上新增修改連絡人的資料,例如新增一位好友的資料或修改舊有人的email新住址…等等。當使用者回到OFFICE,或用手機,bluetooth等等方式連線,就可和辦公室的電腦作同步更新的動作。也可由此共享他人的資料或自己舊有的資料,不必一一重新輸入到PDA上,省去繁雜的工作。也藉由建立一個基本的模型來作為以後發展其他的電腦與PDA的軟體同步溝通動作。
肆、專題成果
一、 程式總流程圖
關於傳送資料的部分,考慮網路並非reliable,我們必須在基本傳送功能外加上一些錯誤修正的能力,以下是大略的流程。
最主要的是加上了檢查長度的能力,並在Timeout發生時(最可能在send data階段) 放棄這次的Transaction。
我們的程式能處理的例外有:
|
Error
code |
Definition
|
|
CANT_OPEN_SOCKET |
fail to
open socket |
|
CANT_CONNECT_SERVER |
fail to
connect |
|
CANT_BIND_LOCAL |
fail to
bind local port |
|
FILE_OPEN_ERROR |
fail to
open file, I/O error |
|
MEM_ALLOC_ERROR |
fail to
allocate memory from system |
|
RECV_SIZE_ERROR |
file
length disagrees with file size received |
|
RECV_TIMEOUT |
connection
or transfer timeout |
二、 分述
我們將專題的內容分成兩組撰寫
(1) PC-side
(a)
程式相關簡介
Linux PDA
Outlook sync. Server (簡稱syncServer)是被設計來與Linux PDA上的phone
Book Manager共同使用的。他能將Microsoft™ Outlook®(97或2000版)內聯絡人資料傳送到PDA上,或是將PDA上更改後的資料存回有裝Outlook的PC。

syncServer與Linux
PDA的連接如下


除了使用固接線路,也可以利用能提供無線IP網路的設備來連接(如手機撥接上網)。
當有Linux PDA連線進來syncServer就會開始更新Outlook的資料並傳送最新的結果回PDA。
(b)
程式流程
Sync-Server包含了處理網路資料傳送的部分及Oultook資料更新的部分,另外由於分工的關係,我們也負責了LinuxPDA上網路傳送的部分。

在PC上我們使用的是VBA,VBA是Visual Basic For Application的意思.它所依賴的是微軟的COM技術,使應用程式能提供功能讓外部程式執行,而使用者不必介入也不必手動啟動要支援的程式.
在更新Outlook資料部分,我們使用的是以下的做法:
(由PDA傳來的聯絡人資料會先暫存在本地的磁碟上)

至於整理更新完的資料並準備成檔案則如下圖

(c)
操作簡介
這個程式設計時是希望啟動後不需再做任何調整就能運作,如此出門好幾天的使用者便不必回家在程式上按按鈕,只要在PDA上處理就行了,所以他並沒有特別的使用者介面,除了一些狀況顯示的圖示(供我們偵錯用),以後可能要嘗試附一個調整工具以便使用者在啟動前作一些設定,如使用特別的PORT以避開和其他程式搶用的情況。下面就是syncServer的樣子。

(2) Linux-side
(a) 程式相關簡介
在Linux上我們使用GTK (Gimp Toolkit)作為開發的環境工具。
GTK是一Open Source Free的圖形介紹(GUI)的發展軟體,它主要是用來發展在Xwindow下的程式例如GTK是GNOME及GIMP的�皏菕A 它們是由Free
Software Foundation(GNU)所發展。GTK提供有很簡易強大的功能及介面。而且能讓你幾乎無限制的發展你的軟體,包括開放原始碼或免費軟體甚至於商業上的軟體。
(b) 操作簡介
發展環境
平台: RedHat
6.0
程式語言: GTK
1.2.6
發展介面 GLADE

GLADE的執行畫面使用(GTK的整合發展介面)
圖中是用來建立專題程式中的一個畫面,除了正中央的視窗外,其餘皆是GLADE的視窗,用來幫忙建立一個專案,幫忙開發GTK的程式。
Glade是一個是類似VB的介面整合軟體,對於要寫GTK的圖形介面有很大的幫助,但只限於提供圖形的建立,對於程式碼要包含在程式之中還需另外開編輯程式去開發想要的程式,但對於複雜的圖形編排,所產生出來的程式碼的偵錯,可以省下很多的功夫。
在專題的開始,首先先學習有關GLADE的操作和其產生出來的原始檔的規則,再依需要而加入其它必須的程式主體。
畫面一
Phone Book Manager操作步驟

右邊是一執行Phone Book Manager時的畫面。使用者可由上方的Menu來點選是否要新增一位新的使用者(畫面二)和離開Phone Book
Manager 。
上方的Menu Bar還有Syn的部分,這部分包括有和主機做同步交換資料的動作以及類似版權宣告的畫面(畫面五)。
使用者可直接點選畫面中間的部分這是類似3d按鈕的選單,是用來秀出簡單的使用者資料(姓名以及電話),讓使用者能由人名來點選要觀看/修改那一位使用者。
畫面二

這是新增使用者時的畫面
全部欄位皆是空白
畫面三

左方是修改使用者資料時的畫面
由左方可直接看出來欄位所代表的意義
點選欄位名右方就可修改各欄位內的內容
畫面四
畫面四是當使用者按下”Save”時
將會詢問是否要”OverWrite”的畫面
回答”Yes”將會覆蓋掉原來的記錄
回答”No”將會記錄此內容為新的記錄
提供是否OverWrite是方便使用者當有相同欄位記錄時,新增的記錄能夠以最少的時間內完成
畫面五

這是點選Menu
Bar上About選項後的畫面
中間是Linux
Pda小組成員的名字
按下方的按鈕即可回到主畫面(畫面一)
伍、總結與探究
我們回顧電腦的發展歷史,電腦由早期大型、速度慢的型態,發展至今日小型且高速的個人PC或是企業界的Server。 從心理學的角度看來,人類的慾望是無窮的,只要有更方便快速的系統,人們一定會朝著那個潮流而走,加上科技的日新月異與網際網路的發達,可以想見以後的電腦型態應包括下列數點:
(1) 體積小
(2) 運算速度快
(3) 能上網
(4) 即時的資訊結合
(5) 有便利的套裝軟體可供使用
從此看來,具備上列數點的,現今的PDA就已經略具雛形。
而現今的PDA主要的問題在於:
(1) 無線通訊的傳輸速率不是相當快速,且沒有廣泛應用在PDA上
(2) PDA的螢幕並非很大,開發的軟體受到部分限制
(3) PDA的記憶容量與處理速度無法與一般個人PC相比
因此,往後的軟體發展就必須注意上列數點。
未來,各類相關的軟體相信會在PDA上蓬勃的發展著,當然該解決的問題也是需要解決的,就如同以往早期的電腦發展,相信PDA也會走向這樣的一天,並且與現今的技術整合,無線通訊(與手機的結合我們已經看見)之外,諸多的新式科技也將帶進PDA的小小世界,這是我們所應期待預見的。
一.成果介紹:
在這次專題的成果方面,我們一共有兩項成果,一是一個實用型的計算機,另一個則是可以和Microsoft的SQL server做同步的行事曆,分別介紹如下。
一. 計算機:
以GTK+開發完成,可以做到一般計算機的大部份功能,並且擁有長達24位元的運算長度,更適合專業人士的使用。
二. 行事曆
同樣與GTK+來完成開發,此行事曆除可做到一般行事曆的新增、刪除、修改的功能外,更重要的是,他可以與SQL server來做資料的同步交換,不會讓user因為選擇Linux
PDA就必須放棄慣用的作業系統。
二.系統介紹:
一.計算機:
以double為形態來處理計算,故可以有24位元的計算長度,輔以一些自行開發的字串和double間的轉換函式,使得使用者可以更方便的使用這個計算機。
二.行事曆:
此行事曆與SQL server交換資料的方式是使用socket來做資料的傳遞,過程如下所示
1. Linux先送出連線請求
2. Server回應可以連線
3. Linux送出ID及PASSWORD
4. Server進行認證並回應
5. Linux送出所有行程資料
6. Server收到行程資料並與database中的資料做比對
7. Server整理出一份最新的List
8. Server寫回資料庫中
9. Server將list送回給Linux
10.Linux重建自己的list
三.功能介紹:
一.計算機:

上圖為我們所做的計算機,功能與一般的計算機相同,操作發式也是大同小異,但本組所製做之計算機可以有24位之計算長度,超越一般計算機,
二.行事曆:

這是本組所製作之行事曆,上圖為行事曆的第一個畫面,每一個button代表的是一個行程,按下”<<prev”可以往前一天,”next>>”可以往後一天,按下上方的一個button可以跳到下圖的畫面,可以觀看,編輯或刪除。

上圖這個畫面可以針對一個行程做編輯或刪除,按下”OK”可以update這次的改變,按下delete可以刪掉此次的行程,

上圖是本組行事曆的第三個畫面,也是這個行事曆的一大特點之一,當你按下”Sync”按鍵之後,你將可以和Microsoft的SQL server 交換資料。
四.合作方法:
上述的兩個程式是我和另一位同學所共同負責的,在這次的team work中,我們並不像一般的team一樣採用function介面分工的合作方式,而是採用share同一個main
program 的方式來進行合作,但這樣的合作方式在開始前,我們會將整個program的細節,包含介面、操作方式、data type等….逐一討論清楚,並經program開發的理想順序也一併寫下,每次寫的時候只能有一個人寫,而且必須按照先前所定義好的順序往下,當程式開發告一段落時,則放回原處,由另一個人接手繼續,直到程式完成,當然,程式開發過程中也並非所有時刻都只有一個人在進行,偶爾也有一個人開發一個sub
routine ,另一個人則繼續main program的開發,只是情況不多就是。
這樣的合作方法是因為我和那位同學相當的熟悉,彼此間的默契非常的良好,加上我們都沒有很多的時間可以經常碰頭討論,所以我們採用了這種一次討論完所有事情的合作方法,當然,我想,這並不適合一般的team。