6.1.1 Touch Screen
圖 35 使用 ADS driver 測試結果
ADS7846 driver︰
接下來,嘗試使用 ADS7846 driver,如圖 36,結果只有一種錯誤,訊 息告訴讀取到的只有 8 bytes,而非預期的 16 bytes。也就是說,修改 ADS7846 driver 相當有機會可以正常運作。於是開始研究其 driver 的 source code。
圖 36 使用 ADS7846 driver 測試結果
觀察結果,各 driver 間的差別只有在 struct ts_event(點取資訊),下圖為 ADS7846 driver 的 ts_event。
(microwindows-0.90\src\drivers\touchscreen_ads7846.h)
圖 37 ADS7846 的 ts_event
前面 4 個變數的大小就已經符合點取 touch screen 讀取到的 8 bytes,而後面 的 struct timeval stamp 在 Microwindows 所支援的 touch screen driver 裡面並 非必須,所以我們嘗試將 struct timeval stamp 去除掉。很幸運地,去掉該變 數後,touch screen 就能夠正常運作。
軟鍵盤為 Microwindows 裡的 demo 程式之一,我們把它放在 Target Board 用 來當作輸入。但由於原本軟鍵盤大小為 160* 61,放在 Target Board 上畫面 顯得有些過小,使用起來十分不方便,所以將其放大一倍(320*122)。
更動項目如下,變動畫面參考圖 38︰
1. 把軟鍵盤圖放大一倍。
2. 修改程式碼(microwindows-0.90\src\demos\nxkbd\nxkbd.c),並將對 應軟鍵盤按鍵的數值做調整。
6.1.2 軟鍵盤 軟鍵盤 軟鍵盤 軟鍵盤
struct ts_event { short pressure;
short x;
short y;
short pad;
struct timeval stamp;
};
圖 38 左︰原本大小 右︰軟鍵盤放大一倍
使用校內的無線網路,必須在認證網頁輸入使用者帳號和密碼,這是個不小的麻 煩,因為我們的系統裡並不包含瀏覽器,首先觀察認證網頁的行為,從網頁原始 碼可以知道,它使用 HTML 的 form 標籤來取得和設定參數值,再將這些參數傳 送給 logon 這支程式處理,這裡使用了 CGI(Common Gateway Interface)的技術,
client 從瀏覽器上傳遞參數給 web server 上的程式,這支程式便會依參數來回應 client,以達到 client 和 web server 之間的互動,CGI 所制訂的就是兩者之間傳遞 的標準,CGI 程式並沒有規定要使用何種程式語言,所以我們也不知道 logon 是 以何種程式語言撰寫而成,對 client 而言顯然也不重要。第二個麻煩是認證網頁 使用 https(http secure)協定,簡單說是 http 的安全版,使用 SSL(Secure Sockets Layer)技術。
使用 wget 解決:
和瀏覽器相比,wget 顯然較為輕巧,而且支援 https 協定。而利用 wget 是為 了達成兩項重要的目標:
1. 抓取網頁,從中找出所須資訊。
2. 傳遞參數給 CGI 程式。
詳細過程如下:
6.1.3 FCU 無線網路之網頁認證 無線網路之網頁認證 無線網路之網頁認證 無線網路之網頁認證
首先用 wget 抓取認證網頁,搭配 bash script 從網頁原始檔中抓出參數名稱 和參數值,表 11 所列之參數值是固定不變的,可以事先寫死在 script,真正 重要的是表 12 中 secret 和 verify_vernier 之參數值,這是由 server 產生,效 用只有一分鐘。其次是 username 和 password,分別是學校 knight 主機的 e-mail 和密碼,由使用者自行輸入。當取得所有參數名稱和參數值後,將它們和 logon 程式串在一起傳送,例如『wget https://mobile.fcu.edu.tw/logon?參數=
值&參數=值&參數=值』
最後我們僅是利用 wget 來傳遞參數,這時取得的網頁內容已經沒有特別的 用途,web server 會將這串參數傳遞給 logon 這個 CGI 程式做處理,這時所 有的網路功能都能使用了。至於登出認證,只須傳遞一個參數,請參見表 13。
表 11 登入所須參數一(固定)
name value name value javaworks 0 guest_allowed 1 vernier_id VernierNetworks realm_required 0
product_id VNSS logon_action Logon User releast_id 1.0 query_string <原指定網址>
logon_status 0
表 12 登入所須參數二(變動)
name value name value
secret <server 產生> username <client 輸入>
verify_vernier <server 產生> password <client 輸入>
表 13 登出所須參數(固定) name value logon_action Logoff
為了達成即時語音,聲音處理必須具備全雙工(full duplex)的能力,也就是可以同 時進行錄音(input)與放音(output),硬體和 driver 都必須支援,缺一不可。目前一 般 PC 的音效卡幾乎都具備了這項能力,我們使用的目標板也有支援;不幸的是 我們 PC 音效卡使用的 driver 卻不支援,Linux 2.4 預設使用的音效系統是 OSS,
但這張音效卡的 OSS driver(i810_audio)並不支援全雙工,也沒有找到其它可替代 的 OSS driver,於是我們採用了另一個音效系統 ALSA(Advanced Linux Sound Architecture)所提供的 driver(intel8x0),ALSA driver 的功能較為齊全,不像 OSS 只有部份免費,最重要的是還有在維護,它目前已被加入至 Linux 2.6 裡。ALSA driver 也包含 OSS 模擬器,讓使用 OSS API 的程式也可以使用 ALSA driver,我 們的 Voice Messenger 在音效處理方面就是使用 OSS API,因此這些問題都獲得 解決。
ALSA(Advanced Linux Sound Architecture):
http://www.alsa-project.org
intel8x0:
http://www.alsa-project.org/alsa-doc/doc-php/template.php?company=Intel&card
=.&chip=440MX%2C+i810%2C+i810%2C+i810E%2C+i820%2C+i820&modu le=intel8x0 或縮短網址為 http://0rz.net/150Su
6.1.4 音效全雙工 音效全雙工 音效全雙工 音效全雙工
以未來展望而言可分為以下幾點:
1. 硬體方面─雖然我們實作平台是 HyBus 的 X-Hyper255B-TKUIII,並不 是所有的硬體設備都有用到,如果要進一步提升硬體,就要談到 SOC(system-on-chip)部分,也可以從 HDL 去下手,簡化及縮小硬體,
接著去除不必要的硬體設備後,其實就跟一般的手機硬體用途很類似,
但跟現在市面上的網路電話不一樣,而是可以開發成類似手機的外型,
跟無線網路一起配合,讓未來的手機不是只有一種傳輸選擇,透過無線 網路省下的通話費相當可觀。
除了透過網路傳遞聲音外,其實現在流行的 VoIP 是與市話結合,跟傳 統的通訊線路作整合,讓通訊無所不在,Skype 就是很好的例子,圖 39 的 skype USB 話機就是可以跟 Skype 用戶之間網路通訊外,還可撥打市 話與手機,但要收通訊費,所以本專題也可以與市話結合,了解傳統通 訊與網路通訊的差別,進而改善通話品質,在音質方面可以好好加強。
圖 39 skype USB 話機
2. 軟體方面─利用網路傳輸固然方便,而與市話結合使得更普及化,加上