




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
九十一年度行政院科技人才培訓及運用方案北東區資訊軟體人才培訓計畫專題成果報告班 別:程式設計班專題主題:隨身碼名片管理系統指導老師:井民全老師學 員:陳建文、許殿昀、邱文龍、鄭明華主辦單位:行政院勞委會職訓局承辦單位:財團法人自強工業科學基金會中華民國九十一年十一月二十五日66摘 要本次專題目的在於實作出一個供以社會大眾使用的名片管理系統,並以一組獨一無二的號碼來代表每一個人的名片編號,配合網際網路的便利性,結合相關周邊等資源。藉此,人們可隨時隨地”攜帶”著一組屬於自已的號碼,來方便地與他人交換名片,以提供比傳統名片更便利、更豐富的個人資訊,也因此一便利、可隨身攜帶的特性,我們便將此一專題名稱命名為隨身碼名片管理系統。在專題製作期間,組員門屢屢遇到難以解決的問題以及信心上的考驗,若非指導老師在旁每周不辭辛勞地為我們提供技術指導、及適時地鼓舞我們,否則,要完成此一專題,恐怕是難上加難,在此向井民全老師致上十二萬分的謝意。目 錄第一章 背景介紹1-1 前言11-2 研究動機11-3 研究目的2第二章 系統架構2-1 開發環境32-2 系統結構圖42-3 系統UML架構圖6第三章 系統簡介3-1 Server端JSP網頁設計方向103-2 PC端Client介面設計方向153-3 PDA名片管理軟體功能簡介193-4 條碼辨識系統簡介203-5 傳送簡訊24第四章 成果展示(貼圖)4-1 JSP網頁成果展示 264-2Client介面成果展示274-3PDA功能展示284-4條碼辨識成果展示33第五章 研究討論5-1 JSP網頁Client-Sever的製作研究375-2 Palm研究心得415-3 條碼辨識研究心得485-4 傳送簡訊的製作過程及相關問題51第六章 結論6-1 系統評估616-2 未來展望62第一章背景介紹1-1.前言在現今繁忙的工商社會下,大部分的社會人士都有印製個人名片的習慣,即便沒有,本身所處的公司行號,也會幫自家員工印製名片。於是,人們可藉以與人交換名片留下彼此的個人基本資料。因此,名片這一種東西,可說是很普遍存在的一種個人化產品,人人都會需要它,無論是禮貌性地與人交換名片,或留下彼此連絡方式,或拓展人脈,甚或是推銷自已,在在都少不了這一張薄薄的紙。1-2.研究動機名片應用之廣,效用之大如前所述。此種名片或可稱為傳統名片,而傳統名片有它方便的地方,當然也有諸多缺點,比如管理不易,傳播範圍有限(僅限於所接觸的人)、得隨身攜帶、一次印刷的數量是固定的。如今在網際網路的浪潮之下,與傳統名片相對的概念東西有自行撰寫網頁的個人化網站、kimo相簿、台北鄰里社區網等等,都可算是另類的個人名片。但卻不是每個人都有那麼多心力去製作一個網站或是想把個人相片放於人口網站上。於是就在前述諸多因素之下,加上國內似乎沒有一個整合網站、PC端及PDA端名片管理軟體的e化名片管理系統,均是興起實作本專題的原因。1-3.研究目的希望能藉由此次專題的實作,建立起一套名片管理系統,讓使用者最初可藉由網頁登錄個人名片等相關基本資料來建立起一個名片資料庫,並在網頁上撰寫查詢、修改的等相關功能,達到資訊交流目的。使用者除了可利用網頁來做查詢外,尚可利用本次專題在PC端及Palm上撰寫的名片軟體,來下載其他人的名片資料存放到本地端的資料庫上。除此之外,假使某人尚未註冊隨身碼,也可自行新增輸入該人的名片基本資料,來建立起自已的一套資料庫。PC端名片軟體除了一般的下載、編輯、搜尋之外,更整合了寄信、手機發簡訊、直接開啟公司/個人網頁,在在都是貼心的小設計。而未來,如果CCD或其它影像攝取元件或成品普及化後,並在Palm上有影像讀取功能時,此時,更可配合本次專題的利用攝影機讀取條碼功能,讓使用者連輸入隨身碼這個動作都省了下來,直接利用Palm來讀取條碼即可下載回來該條碼所代表隨身碼的名片資料。如此面面俱到的設計,均是本次專題創新與特色所在。而除了以上所言,藉著本次專題,也可檢視學員門在課程告一段落後,大家學習的效果及利用此次的專題實作來練習課堂上所學到的東西。並且試著如何藉由團隊的合作,培養團隊合作精神,且最後能將各人看似獨立的研究主題整合在一起,成為一個名片管理系統,我想這也是此次專題最大的收穫之一,也是一個難得的歷練經驗。第二章 系統架構2-1.開發環境項目系統/軟體/規格備註作業系統Win2000資料庫MS SQL ServerPDAPalm模擬器PDA系統Java 整合開發環境軟體JBuilder7J2SEJava2 SDK 1.4J2MECLDC+KJAVAPDA系統Application ServerResin 2.1.2網頁編輯器Dreamweaver 4文字編緝器Ultraedit9.1C+ 整合開發環境軟體Microsoft Visual C+發手機簡訊影像處理函式庫JAI(Java Advanced Imaging)條碼辨識系統表2.1、系統開發環境2-2.系統結構圖:PC 端 應用程式PDA 發手機簡訊JSP網頁系統主機後端資料庫攝影機條碼辨識圖2.2.1、系統方塊圖圖2.2.2、名片管理系統整合資源 2-3.系統UML架構圖圖2.3.1、JSP網頁UML架構圖圖2.3.2、使用者AP UML架構圖 圖2.3.3、條碼辨識系統UML架構圖downloadPalmupdateDatabasebrowseedit圖2.3.4、Palm名片管理系統UML架構圖第三章 系統簡介3-1.端網頁設計方向1.會員管理之系統設計流程圖登入畫面是否允許登入登入錯誤從新登入是否允許個人資料表登出圖3.1.1、系統登入流程圖忘記密碼修改修改資料表錯誤訊息修改成功?登 出圖3.1.2、個人資料修改流程圖圖3.1.4、寄送郵件流程圖圖3.1.3、密碼遺失流程圖寄出信件2.會員管理之系統設計大綱:(1)加入會員 本網站資料登錄屬會員制,採付費登錄方式,欲加入會員須填寫會員基本資料,經認證後系統會自動產生一組隨身碼,會員便可使用此隨身碼名片系統。相對映的網頁:Register.htm。Register.jsp(2)會員登入由於採會員制,所以須經由會員登入(要求會員輸入認證過的隨身碼與密碼),登入成功後便可進行個人名片的維護及修改。相對映的網頁:Login.htm。Login.jsp。LoginError.htm(3)密碼查詢當會員忘記登入密碼時,可藉由輸入隨身碼系統會將所查得之密碼以Email的方式mail到會員電子信箱內。相對映的網頁:getPasswd.htm。getPasswd.jsp(4)JavaMail的寄送 會員可使用JavaMail寄送郵件,可附夾帶檔(大小為5*1024*1024)。import com.oreilly.servlet.Multipart.Request利用這個免費類別來解決上傳檔案的方法,相對映的網頁:Jmail.htm。Jmail.jsp(5)會員資料修改當會員其相關資料欲修改變更時,可經由會員登入進行修改,以確保資料的準確性及會員的相關權益。相對映的網頁:UpDate.jsp3.隨身碼的產生由於人名可能發生重複,所以我們由系統產生一組五位數字單一的隨身碼,於資料庫中建立索引鍵,其產生的方式為資料庫中最後一筆資料的隨身碼加一,如此系統產生的隨身碼便能唯一,如系統資料遭修改而出現錯誤時也可以輕易的由索引鍵發現而停止註冊的行為,使得資料庫的管理更加容易,此隨身碼將用於掃描器的數字判別。SELECT COUNT(*) FROM Personwhile(rs.next() ID=rs.getString(1); ID=ID.valueOf(+Integer.parseInt(ID)+10001);4.下載管理本系統上所有資料皆為公開下載,所有人可上網下載客戶名單下載線上資料庫。使用著可藉由下載批次資料將線上所有名單download至自己的資料庫中,如此可以達到離線的功能,不必將工作維持在連線狀態。3-2.端Client介面設計方向1.資料庫頁面Sever資料庫list個人資料庫listjdbLablejdbNavToolBar (1)個人資料庫 左方為一list表單呈現所有名單,右方為一表單呈現左方點選名單的資料內容,擁有:(1)直接點選查閱與按筆數瀏覽的基本功能 直接使用JBuilder的元件:jdbNavToolBar,其中包括對資料庫做新增、刪除、修改、更新、以及對資料庫按筆數上下查閱的功能,可免除過去編寫程式的不便。 由於jdbNavToolBar並不像我們手寫的程式一樣可直接下達指令,所以在修改及加入sever端資料庫資料時,我們利用:queryDataSet的Event:postRow來編寫當發生修改時,時間參數的指定。(2)編輯個人相片使用jdbLable元件,在Property中設定columnNameIcon即可簡單的加入相片和秀出相片,相片格式援.jpg、.bmp。(3)呼叫JavaMail寄送郵件功能利用Runtime class 中的exec method,由命令列呼叫javawjar執行mail.jar。Eq: java.lang.Runtime kk=java.lang.Runtime.getRuntime(); kk.exec(c:jdkbinjavaw -jar c:winntmail.jar+ +Email.getText(); 此處直接在Mail程式裡等待輸入一參數,所以,如果沒有輸入值JavaMail的Application也就不能被啟動了。(4)手機發簡訊功能發簡訊的功能由c+語言來完成,再編譯成為 .exe檔,同樣利用Runtime class 中的exec method來呼叫程式(5)撥打電話功能利用windows的撥打電話功能,一樣使用Runtime class 中的exec method 呼叫視窗系統中的 dialer.exe 幫我們完成這個工作。(6)觀看個人網頁功能呼叫WINNT下的explorer.exe檔在命令列中加上所要開啟的http:/視窗即可在另一視窗下開啟。Eq:java.lang.Runtime kk=java.lang.Runtime.getRuntime(); kk.exec(c:winntexplorer+ +Epage.getText();(7)查詢功能(2)大型sever資料庫將sever的資料download回來後,可由表單點選存檔,可依據時間先後來決定更新個人資料庫的資料與否。 UPDATE Friend SET ComName=+ComName1.getText()+,Job=+Job1.getText()+,Email=+Email1.getText()+,PhoneO=+PhoneO1.getText()+,PhoneH=+PhoneH1.getText()+, Fax=+Fax1.getText()+,CellPhone=+CellPhone1.getText()+, city=+City1.getText()+,Epage=+Epage.getText()+,Addr=+Addr1.getText()+,Time=+Time1.getText()+ +WHERE ID=+ID1.getText()+ +AND +Time.getText()+Time1.getText()+;Sever端下載資料庫2.Client端系統設計流程圖說 明Sever建立socket設定socket所適用的Local端IP位址及通訊阜設定socket等候Client端連結請求接受來自Client端的請求姐建立連結接收資料,傳送資料Client建立socket建立與Sever端Socket連線接收來自Sever端所傳送的資料關閉通訊連結及Socket且釋放資源關閉Socket的傳送及接收功能啟動Socket取出最後更新時間建立與Sever連線接收Sever端資料關閉連線圖3.2.1、 連結遠端資料庫3.查詢頁面-Sever資料可藉由隨身碼的查詢得到客戶資料,再新增至個人資料庫。4.查詢頁面個人資料庫資料可依姓名、公司名稱、所在縣市、地址的關鍵字進行搜尋。3-3.PDA功能簡介1.主畫面:瀏覽Palm裏的上一筆隨身碼:瀏覽Palm裏的下一筆隨身碼Download:進入下載畫面New:在Palm上新增一筆資料Edit:編輯Palm上的資料Del:刪除目前正在瀏覽的資料Exit:跳離程式2.下載畫面Enter:下載輸入的隨身碼Update:更新Palm上的隨身碼資料Back:跳回主畫面3.編輯畫面:編輯上一筆資料:編輯下一筆資料New:新增一筆資料Clear:清除正在編輯的欄位內容Del:刪除正在瀏覽的資料Save:儲存正在編輯的資料Back:跳回主畫面3-4條碼辨識系統簡介本章節,主要是介紹:本專題所使用之條碼(Code39)其編碼規則,及如何辨識條碼之程式流程解說。1. Code39簡介 為什麼叫做 Code 3 of 9(簡稱 Code 39)呢? 很簡單!即一字元由5條黑色線條(簡稱Bar),4條白色線條(簡稱Space),總共9條線所組成,裡頭有3條是粗的線條,如下圖所示。1表示粗線條,0表細線條圖3.4.1、 Code 39基本原理Code 39條碼分為:(1)標準型(Standard)Code 39:表示的資料內容,包括有AZ大寫英文字母,09數字,以及一些特殊符號,共計有44個字元。(2)完全型(Full ASCII) Code 39:除上述標準型Code 39之44個字元外,再搭配,/,%,$,+等前置符號即可擴充成128個字元(含一個起始和結束字元)。 (1)Code 39編碼方式Code 39條碼只有二種粗細比例線,也就是說較粗的線條是細線條的23倍,舉例來說,如下圖示。若細條碼長度x=1mm時,則粗條碼長度應為R=23mm之間才適當。圖3.4.2、 Code 39編碼方式下表是Standard Code 39字元與條碼圖案的相對一覽表。圖3.4.3、 Standard Code 39字元與條碼圖案相對一覽表(2)Code 39之特性(1) Code 39起始碼/結束碼為”* ”。(2) 資料字元數總共有43個,搭配/,%,+,$,可擴展成完全型39字元數變成128個。(3) 每一字元間有一間隙Gap區隔開來。(4) 檢查碼(Check Digit)由計算公式而得。(5) 檢查碼(Check Digit)可列印可不列印。(6) 條碼長度較長,列印允許長度有限制,易超過條碼讀取機所能讀取之寬度。圖3.4.4、 Code 39特性2.辨識條碼程式流程圖3.4.5、判別條碼之步驟(1)產生條碼:自行開發產生條碼之程式,當使用者輸入一組數字,程式自動產生條碼,將此條碼印製於名片上,利用攝影機擷取條碼,將所擷取之條碼,存成BMP檔。(2)條碼辨識:l 利用JAI(Java Advanced Imaging)讀取條碼圖檔。l 讀取圖之RGB值。l 旋轉圖檔,依據RGB值及條碼寬度辨別出0、1、Gap。l 依據Code 39編碼原則,判出正確數字。3-5 傳送簡訊雖然說手機也可以傳送簡訊,但是這項功能不同於手機直接發簡訊是: 1. 用手機輸入訊息很慢。2. 用手機無法一次傳送多組訊息。在點選傳送簡訊後,會跳出一個視窗, 你可以透過我們的程式,輸入Hinet的驗證,以及欲傳送的門號及訊息,再經由Hinet幫你傳送簡訊給您要發送的門號,它的功能比直接使用Hinet網頁提供的服務簡單,操作上又比用手機發送方便,因為,你可以不需要去Hinet的網頁就可以執行這項功能,如果網路的速度很慢,Hinet的這項功能恐怕,無法使用, 因為我們將我們要傳送的字串直接丟給提供服務的asp:“29/wwwms/SmSendCom1.asp”,因為直接丟給這支asp, 而不用到Hinet的網頁, 所以過程上一定會比連上Hinet的網頁再輸入簡訊, 門號等等要快。我們曾經試過,不需要五秒鐘的時間,就能收到從程式上發送的簡訊。下圖是執行程式跳出的視窗,不管傳送成功或是失敗都會有一個MessageBox回傳訊息,下面是執行的畫面, 和幾種錯誤訊息的MessgeBox。輸入資料的Box:回傳成功的MessageBox 回傳失敗的MessageBox:第四章成果展示4-1.JSP網頁成果展示圖4.1.1、登入頁面圖4.1.2、註冊畫面4-2.Client介面成果展示圖4.2.1、Client介面畫面4-3.PDA成果展示圖4.3.1、Palm模擬器的主畫面圖4.3.2、程式的主畫面按鈕功能由左而右分別為上、下一筆查詢、下載&更新、新增、編輯、刪除、離開。圖4.3.3、下載資料畫面於左下角欄位輸入欲下載的隨身碼按Update與Server端資料進行比對更新圖4.3.4、資料更新畫面圖4.3.5、編輯畫面使用者可自行新增或修改Palm自Server端下載回來的資料。4-4條碼辨識成果展示1. 產生條碼輸入五位數之數字。 圖4.4.1、輸入數字產生輸入數字之條碼,條碼內容包含*、1、2、3、4、5、*。 圖4.4.2、數字12345之條碼2. 條碼辨識讀取圖檔圖4.4.3、輸入欲讀取之圖檔讀取圖檔RGB值圖4.4.4、圖檔RGB值判別條碼數字圖4.4.5、判別出條碼數字當讀取之圖檔,位置不正時,系統自動以逆時針方向,旋轉圖面,至判別出正確數字為止。圖4.4.6、傾斜之條碼圖圖4.4.7、逆時針旋轉圖檔圖4.4.8、旋轉至判別出數字為止圖4.4.9、判別輸出之過程第五章研究討論5-1.JSP網頁Client-Sever的製作研究 這次專題我們選擇以JSP連結Microsoft SQL Sever、Resin結合IIS來組成網頁部分的大體架構,在JSP網頁上也使用了Java Bean與Html來完成網頁的製作。 1.技術面:(1)三層式架構: (1) Presentation Layer前端的Html。主要是當作使用著的操作介面,讓使用著輸入資料和顯示資料處理後的結果。顯示層不需要知道資料是如何取得,或是該由誰處理只專注於顯示資料結果。(2) Business Layer這層為整理網頁的核心部分,包括資料處理、連結資料庫和產生資料,日後若要維護網站時,只需在此部份做更新,不在牽涉到顯示層部分,即可將網頁設計和程式處理做分離,在維護上彈性也更大。(3) Date LayerMicrosoft SQL Sever。Date LayerBusiness LayerPresentation LayerJava Beans連結DBSearch DB回傳Result帳號密碼傳送帳號密碼結果登入成功Database (2)Resin結合IIS:(1) 設定1.IIS與Resin1.2.2的安裝路徑:C:Inetpub和C:Resin1.2.22.修改c:Resin1.2.2confresin.confc:inetpubwwwroot(2) 網頁亂碼問題改charset=Big5為charset=MS950即可,但MS950編碼只適合Windows平台,因此在Linux平台下就不能使用。(3) 資料庫中文亂碼問題 雖說目前一般業界使用Tomcat較Resin為多,但為了簡易地解決資料庫編碼的問題,我們選擇使用Resin,當然,在安裝上Resin也較Tomcat容易許多。(3)Session Session與Cookies一樣都是擁有特定的生命週期,但非所有的系統都支援Cookies。一般來說,Session在一段時間沒有作用就會自動失效,是利用HttpSession類別下的SetMaxInactiveInterval()這個方法,除此之外也可使用Invalidate()直接使Session立即失效。(4)ODBC設定與SQL Driver的選用原先使用JDBC-ODBC橋接驅動程式,所有溝通接透過ODBC驅動來進行,但在開發Client端介面時發生無法顯示資料庫中文的問題,所以改用com.inet.tds.TdsDriver不再透過JDBC-ODBC當然速度也較快。(5)JavaMail import com.oreilly.servlet.Multipart.Request利用這個免費類別來解決上傳檔案的方法。(6)Bean的使用(1)JSP搭配JavaBean的優缺點:1.可以將HTML和Java程式分離,這主要是為了日後維護的方便。2.可以善用到JavaBean的優點。我們可以將常使用到的程式寫成 JavaBean元件,當JSP要使用時,只要呼叫JavaBean元件來執行我們所要的功能,不再重複寫相同功能的程式,以節省開發所需的時間。JavaBean最大的缺點則是麻煩,因為製作時需先用JDK先編譯成.class然後在放入JSPContainer中執行,若有錯誤時又要重新編譯一次,為了解決這個問題,我們的開發環境使用JBuilder來簡化這個缺點。 (2)使用方式: id:在jsp Page中,id值表示JavaBean的代號,即我們用check來代表我們使用的JavaBean。scope:表示範圍。有四種範圍: Page:只能在同一個網頁中存取利用若程式到了下一頁時會自動釋放記憶體結束生命週期。Session:以一個視窗為一個不同的ID通常我們透過Session來對使用者作Tracking的動作。 Application:它的生命週期是最長久的,可以說只要伺服器不重新啟動,它就永遠存在記憶體中。class:表示我們所呼叫的JavaBean類別的位置。(7)網頁的限制進入if (String)session.getAttribute(Login)!=OK) response.sendRedirect(Error.jsp);當使用者登入成功時,我們設session.setAttribute(Login,OK); 如此可限制網頁不被非會員使用。2.問題討論:由最簡單的網頁開始做起,接著開始使用Bean,不曉得為什麼用Bean只感覺到困擾跟麻煩,直到開始跑一堆迴圈才漸漸感覺到Bean的好處:複雜的程式不用一再的重複撰寫,開始也會思考該將哪個Bean歸類在哪一個類別裡來防止大量的資料被引用時所佔據的空間。 名片處理的一開始便決定使用Session來代替Cookies,雖然一開始就知道Session是以視窗來當作id,但還是想要克服由一個視窗去關閉另一個視窗的疑問,但是,最後依舊容許這種情況的產生,因為,我們無法克服,也發現並沒有必要不允許每一個人在自己的電腦上開多個同名字的視窗。至於登入地方的不同,由於Session是具有時效性的限制,所以這又更不需要去考慮。在Application Sever的選用上,由於一開始的Resin發生問題,無法在電腦上正常的運轉,換過Tomcat後,又因為Tomcat對MS-SQL的中文問題,又再度回到簡易的Resin,這時也恰巧克服了當初的問題,歸咎,應該是Resin在網頁上需要跑8080 Port以及當Resin在Run的視窗上或許按到了反白區塊,那會使的Resin的運轉停止。總而言之,Tomcat與Resin各有優缺點,但在一般初學者還是比較建議以簡易設定的Resin來開始,較容易得心應手。雖說可以同時學會兩種Application Sever的設定與使用,但也因為Application Server的變動,使得其間有些網頁轉至的問題需要修改。使用Java配合MS SQL Server,在JSP網頁裡下SQL指令能夠將過去繁雜的程式簡化使得程式更簡易,但需記得由於SQL資料的開啟是非常耗時間的,所以也不能亂下指令。在網頁方面,使用了簡易的Java Script來做控制,由於前端是使用者介面,如果能夠在前端先做一層的控制,而不是將資料傳回系統再做判斷,也可以減少當資料錯誤時的傳送來回時間。5-2.Palm研究心得本次專題於PDA方面的部分,是以流通最廣泛的Palm為對象,並以Java為主要撰寫語言,來實在一個在Palm上的名片管理軟體,接下來我將一個一個步驟地解說,如何在Palm上實作此一名片軟體。1.建置一Palm模擬器(POSE, PalmOS Emulator)至下列網址抓取Palm的硬體機殼/dev/tools/emulator/emulator-win.zip有了Palm的機殼之後,還得抓PalmOS rom,模擬器才跑的起來,Palm機殼之於PalmOS rom,就好比電腦硬體主機之於作業系統(ex:Linux、win2000),以下此一網址可以抓的到PalmOS rom/UserData/smallsyf/Software.htm將抓下來的檔案,解開並安裝,我們就有一個在PC上的Palm模擬器可以用來測試我們所撰寫的程式了!2.安裝KVMKVM全名為kilobytes virtual machine,它可說是Java在Palm上的JVM,因應PDA資源有限的特性,它是屬於一個輕量級的JVM,所以才取名為KVM。至昇陽網址/j2me 下載底下這兩個檔案j2me_cldc-1_0-src-winsol.zip j2me_cldc-1_0-src-palm_overlay.zip 抓到這兩個檔案之後,請先解開第一個zip檔於根目錄下,這裡我們假設你把檔案解開至C磁碟機中,於是你會發現C磁碟下多了一個目錄叫做j2me_cldc,接著請解開第二檔案至C磁碟機中的j2me_cldc目錄底下,使用覆蓋的方式即可,解開後會在j2me_cldc底下新增即覆蓋一些檔案和目錄。在j2me_cldc目錄下的bin子目錄可以發現兩個Palm的可執行檔(.prc檔)分別是KVM.prc與KVMutil.prc,這兩個檔分別是Palm上的KVM及除錯工具,請將這兩個檔案下載到Palm上,你可以在Palm面板上發現這兩個程式的蹤影。3.準備程式編譯環境cd c:j2me_cldctoolspalmsrcpalmdatabase要把這個目錄下的所有java全部編譯成class檔,接著要放到CLDC類別目錄底下。所以請鍵入:javac -d c:j2me_cldcbinapiclasses *.java 最後,請將c:j2me_cldctoolspalmsrcpalmdatabase底下的兩個檔案:Wrapper.prc 和 DefaultTiny.bmp拷貝到c:j2me_cldcbinap-iclassespalmdatabase之下。4.撰寫PalmOS上Java的五個步驟這五個步驟分別為撰寫程式原始碼、編譯、預先審核、測試與除錯、將程式下載到實體機器上執行。底下,我們就針對編譯、預先審核、測試與除錯部分,列出我們預先設計好的批次檔,以方便快速編譯與除錯。(1)palmjavac.bat編譯javac -target1.1 -g:none classpath c:j2me_cldcbinapiclasses;.-bootclasspath c:j2me_cldcbinapiclasses;. %1如果程式本身有使用到中文的話,除了POSE本身須安裝中文系統外,另須於編譯時加上參數-encoding ISO8859_1,使其支援中文(2)palmver.bat預先審核c:j2me_cldcbinpreverify-classpath c:j2me_cldcbinapiclasses;. %1預先審核的功用在於對產生出來的class檔做預先驗證的工作,以減少在PDA上執行的時間。(3)plamtest.bat測試c:j2me_cldcbinkvm-verbose-classpath c:j2me_cldcbinapiclasses;.output %1 result.txt利用cldc內附的陽春模擬器做測試,並將結果輸出至result.txt。(4) palmapp.bat轉換成Palm上可執行的prc檔cd ouput java-cpc:j2me_cldcbinapiclassespalm.database.MakePalmApp-networking -v -bootclasspath c:j2me_cldcbinapiclasses %1加上-networking參數,使程式支援網路傳輸。 於編譯、測試期間,我們可將上述四個步驟再利用一個批次檔palmall.bat,整合前述四個步驟,節省我們開發時間,.java檔當做是%1接收的參數,.class檔當做是%2接收的參數,於是我們只要打上paplmall Hello.java Hello 便可一次搞定編譯與測試。撰寫程式除了利用最簡單的文字編輯器外,也可以利用一些整合開發環境,來幫助我們開發程式,比如Jbuilder7,但是在此,我們僅能利用Jbuilder7來幫我們檢查語法,實際上的編譯、測試,還是得在DOS視窗中編譯及在模擬器中測試。底下為在Jbuilder7中設定J2ME_CLDC Library的步驟:(1) Tools - Configure Libraries 左下角點選 增加一個新的Library名稱自取J2ME_CLDC,Library paths選c:j2me_cldcbinapiclasses(2) Project properties - Paths - Required Libraries - Add新增的J2ME_CLDC由於利用JB7來撰寫程式時,會有package加在程式的最前頭,因此我們之前所撰寫的批次檔,也得跟著做變動。假設我們在C槽產生一個checkSyntaxWithJB7的project,因此得將palmjavac.bat中,-classpath的後面多加上c:checkSyntaxWithJB7srcoutput,另外在驗證跟轉換成Palm的執行檔時,得將package name加在class name的前面,例如packageName.className。5.在Palm上安裝中文系統Palm上的中文系統,最為熟知、通用的約有三種,分列如下:(1) Chinese OSCHOS.hk/ww/c_download.htm(2) CJK中日韓系統/b5/cjkos/download.php4(3) 掌龍中文系統.tw/download.htm在以上三者的試用當中,發現CJK中文系統在模擬器上比較穩定,另在執行中文系統時,如果POSE頻頻發出一些除錯訊息時,可在POSE上按右鍵- settings - debugging 上將checks上的所有選項全部disable掉!就不會再出現那一堆拉里拉雜的訊息,以方便我們做測試。6.程式撰寫(1)撰寫大綱(1) 首先我們撰寫一JSP小程式,來將存放在MS SQL Server上的個人名片資料,可藉由get方式來取得輸入隨身碼的單筆資料。並在取出各個欄位資料的同時,加入自已所定義的欄位資料分隔符號,以利在Palm端做字串分析。(2) 利用Palm及KJava支援的http通訊協定,在Palm上撰寫網路程式來接收自JSP網頁傳送過來的資料,再針對此筆資料過慮掉一些html標籤符號及Enter鍵等。(3) 再從過慮掉後的資料中,利用我們於JSP網頁在抓取SQL Server各欄位資料時所加的欄位分隔符號,來取出各個欄位的內容,再存入Palm上的Database。由於Palm無提供直接連接SQL Server的API,及Palm上的Database一筆紀錄是由紀錄號碼和單一欄位資料所組合而成的,所以這也就是我們必須如此做的原因。(4) 有了Database之後,我們便可利用Database配合其它自已開發的功能來做資料的存取、瀏覽、編輯、新增及更新等等。(2)技術討論針對較關鍵的技術部分提出來研究討論(1)JSP網頁如果在MS SQL Server上欄位資料格式是用nvarchar的話,則必須加上charset=big5,用varchar的話,則不可以加上charset=big5,否則會有中文問題。(2)PDA名片管理軟體InputStream in = null;RequestStr=”testhttp:/localhost/palm.jsp?ID=”in = Connector.openInputStream(requestString);宣告一InputStram變數來接收Connector.openInputStream自jsp網頁所下載的資料。而在POSE上,可以利用testhttp協定來模擬真正在實體上使用的http協定。In.close在每次讀取完畢後,記得將InputStream關閉。while (count=in.read(temp,0,maxColumn) 0) total += count; int charArrayCounter=0; tempStr=new String(temp); tempSB.append(tempStr) ; /將temp refresh temp=new bytemaxColumn; /end of while利用一byte temp來接收資料for(int i=0;itempSB.length();i+)if(tempSB.charAt(i)=)flag+;if(flag%2=0&tempSB.charAt(i)!=& tempSB.charAt(i)!=10 & tempSB.charAt(i)!=13) sb.append(tempSB.charAt(i) ; /end of for loop過慮掉html語法的tag及拿掉換行鍵public static void saveToDB()int begin=0,end=0;int startOfRecord=0,endOfRecord=0;while(true)tryString record=;startOfRecord=begin; end=sb.toString().indexOf(delimter9,begin); begin=end+1; endOfRecord=end+1; /將record加入Databaserecord=sb.toString().substring(startOfRecord,endOf-Record)+delimter10; db.addRecord(record.getBytes(); /判斷是否讀到最後,是的話就跳出if(beginsb.toString().lastIndexOf(delimter9) break; catch(Exception e) System.out.println(StringBuffer IndexOf 例外發生) ; /end of while/end of saveToDB()將過慮掉後的StringBuffer存入database中new String(db.getRecord(recordNumber)將資料從database取出時,記得用String函數將其由byte轉成字串以便讀取。5-3.條碼辨識研究心得 本研究主要是,使用者經由系統,輸入一組數字,自行產生條碼。我們選擇條碼原則,主要是簡單、容易使用,故選擇39碼。利用這組條碼,透過攝影機擷取條碼影像。經由本系統,讀取擷取之影像圖檔,自動辨識出數字。主要研究步驟如下:1. 產生條碼:public TRect(int left,int top,int right,int bottom) this.left=left; this.top=top; this.right=right; this.bottom=bottom; public void drawWidthBar(Graphics g,int LocX,Color color) g.setColor(color); g.fillRect(TRect.Wide.left+LocX,TRect.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论