Project : Linux PDA 傳訊系統


1.研究動機與規劃

1.1研究動機

1.2研究規劃

2.硬體架構與平台

2.1開發環境

2.2系統架構圖

3.架構分析

3.1資料協定- XML

3.2運作分析

3.2.1 Client流程

3.2.2 Server

4.系統功能

4.1 Client功能

4.2 Server功能

4.3 Web功能

5.實物畫面

6.專題收穫

7.參考書目


1.研究動機與規劃

1.1 研究動機

近年來,Linux因為開放原始碼的關係,開始在資訊界中紅了起來。其開放原始碼的優點,使得大家能夠修改Linux將其應用在各個領域中,像是IA家電、嵌入式系統甚是遊戲機的作業系統。雖然市面上早已讓WinCE和Palm佔領了PDA的市場,但是Linux在PDA的應用卻才剛起步。再加上無線網路開始蓬勃發展,因此若能結合PDA的可攜性及無線網路的通訊能力,讓PDA使用者能隨時獲得最新的訊息,所以本專題嘗試在Linux PDA上開發傳訊軟體,並從中習得Linux下程式設計的經驗。

1.2 研究規劃

[初期]

[中期]

[後期]

2.硬體架構與平台

2.1 開發環境

開發平台:Microsoft Windows(Server)、Linux RedHat(Client)

開發語言:Virtual Basic(Server)、C(Client)

執行平台:Microsoft Windows(Server)、Linux PDA(Client)

2.2 系統架構簡圖

3.架構分析

3.1 資料協定- XML

本專題在Client-Server之間的通訊,都是採用XML格式的訊息。以往學長們是採用類似"分行式"或"分隔式"的方式來傳送資料,舉例如下:
以分行式來傳送狀態

owenet <-第一行
00022d28336e <-第二行
35 <-第三行


或以分隔式來傳送狀態

owenet , 00022d28336e ,35

採取上面兩種方法都有共通的缺點:

所以,專題決定採用目前新興的可延伸標記語言(extensible Markup Language : XML)來替代以往的 "分行式"、"分隔式"方法。


封入UDP封包的XML狀態
<state>
<id>owenet</id>
<apmac>00022d28336e</apmac>
<quality>35</quality>
</state>


XML的優點如下:


但是,也有著缺點:

所幸,上面兩點都不難克服。如今XML幾乎已成為異質平台間的標準交換格式,所以也出現了許多的方便分析XML的元件出現,使得以後分析XML不再是難事。同時,寬頻網路的出現,增加了傳遞資訊的速度,即使資料量增加也能輕易解決。

3.2 運作分析

3.2.1 Client 流程

首先,Linux PDA使用WirelessLan Library來偵測所在地的AP(Access Pointer) MAC address、信號Quality,一旦偵測到網路的存在,會將狀態以XML方式編寫,封入UDP封包中,傳送給伺服器,讓伺服器得知Client在目前在線上。

封入UDP封包的XML狀態(範例)
<state>
<id>owenet</id>
<apmac>00022d28336e</apmac>
<quality>35</quality>
</state>
<id>…</id> : Client端使用者的ID <apmac>…</apmac> : AP 的MacAddress
<quality>…</quality> :訊號的強度 0~100 之間

之所以採用UDP的傳送方式,是因為UDP不需要像TCP先行建立兩端的連線,UDP可以直接指定欲傳送的目的位址及Port。
因此,本專題決定採用UDP方式來傳送,主要是因為:

在Client上,會另外開一個Thread出來,專門聆聽TCP/IP Port,等待Server端傳送訊息過來。
而在Client內有XML Parser,針對Server傳送過來的訊息加以分析,並將資料擷取出來,顯示給使用者觀看。同時,程式也會將傳來的訊息儲存起來,當然也是以XML格式,因此即使不執行程式,也能以一般文字閱讀軟體來觀看。

3.2.2 Server

在Server端,本專題是以Win32為平台來開發,主要是因為目前在Win32平台上,目前所支援的元件最多在開發上能節省較多的時間。
上圖為Server端執行的畫面,可以看到使用者的狀態,如ID、IP、AP MAC及他可能的位置(藍色區塊)。並可線上送訊息給他。

在Server端方面,開啟另一個UDP Port來聆聽Client傳來的狀態資訊。如果Client不在線上名單中,就將Client 加入線上使用者名單,並且將其訂閱的資訊立即從網上取得,並傳給Client :
匯率的XML格式
<rate>
<US>1</US>
<TW>34.46</TW>
<JP> 122.060</JP>
<DE>2.164</DE>
<HK>7.7996</HK>

</rate>
一般訊息
<msg>
<sender>WMLab Server</sender>
<title>New MAIL</title>
<time>2001-10-29 18:00</time>
<content>You have 1 new mail in you mail-box</content>
</msg>

4.系統功能

4.1 Client 功能

Client端能接收來自VB Server或Web Server及任何採用TCP/IP通訊程式所傳來的訊息。同時所接收的訊息以文字格式儲存在PDA中。

如圖:

(一般狀態)

(有訊息傳進來時)

Client端提供一套7國的基本匯率轉換程式,能將輸入的金額做匯率轉換。而匯率轉換表,每當Linux PDA連線上VB Server時,會自動取得最新的匯率。

如圖:

(七種匯率供選擇)

(匯率轉換結果)

4.2 Server 功能

目前Server端支援的功能如下:

(Server 運作畫面)

4.3 Web 功能

為了讓使用者更方便設定、使用,另外開發了Web端的設定系統。

目前Web 上提供了:

5.實物畫面

Linux PDA(MacOS 佈景)

Linux PDA 執行程式

6.專題收穫

其實,這是學生第一次撰寫Linux 環境下的視窗程式,還有網路通訊。由於平時都是在Windows平台下撰寫程式,所以初次來到Linux下,顯得相當的不習慣,而且經常出現問題。後來,向學長請教與及研讀下,才漸漸熟悉Linux下的開發環境。

在資料通訊方面,採用目前熱門的XML,也因此在開發中,也研讀了許多有關XML的資料,包括XML的格式、如何解析(Parse)XML等相關技術,可以說是另一門收穫。

7.參考資料

<<Linux程式設計教學手冊>> , 基峰
<<XML 程式設計>> , 基峰
Unix Network Programming
Virtual Basic 6.0 Windows API