




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
九十一年度行政院科技人才培訓及運用方案 北東區資訊軟體人才培訓計畫專題成果報告 班 別:程式設計班 專題主題:隨身碼名片管理系統 指導老師:井民全老師 學 員:陳建文、許殿昀、邱文龍、鄭明華 主辦單位:行政院勞委會職訓局 承辦單位:財團法人自強工業科學基金會 中 華 民 國 九 十 一 年 十 一 月 二 十 五 日 ii 摘 要 本次專題目的在於實作出一個供以社會大眾使用的名片管理系統,並以一 組獨一無二的號碼來代表每一個人的名片編號,配合網際網路的便利性,結合 相關周邊等資源。藉此,人們可隨時隨地”攜帶”著一組屬於自已的號碼,來 方便地與他人交換名片,以提供比傳統名片更便利、更豐富的個人資訊,也因 此一便利、可隨身攜帶的特性,我們便將此一專題名稱命名為隨身碼名片管 理系統。在專題製作期間,組員門屢屢遇到難以解決的問題以及信心上的考 驗,若非指導老師在旁每周不辭辛勞地為我們提供技術指導、及適時地鼓舞我 們,否則,要完成此一專題,恐怕是難上加難,在此向井民全老師致上十二萬 分的謝意。 iii 目 錄 第一章 背景介紹 1-1 前言 1 1-2 研究動機 1 1-3 研究目的 2 第二章 系統架構 2-1 開發環境 3 2-2 系統結構圖 4 2-3 系統 UML 架構圖 6 第三章 系統簡介 3-1 Server 端 JSP 網頁設計方向 10 3-2 PC 端 Client 介面設計方向 15 3-3 PDA 名片管理軟體功能簡介 19 3-4 條碼辨識系統簡介 20 3-5 傳送簡訊 24 第四章成果展示(貼圖) 4-1 JSP 網頁成果展示 26 4-2 Client 介面成果展示 27 4-3 PDA 功能展示 28 4-4 條碼辨識成果展示 33 第五章 研究討論 5-1 JSP 網頁 Client-Sever 的製作研究 37 5-2 Palm 研究心得 41 5-3 條碼辨識研究心得 48 5-4 傳送簡訊的製作過程及相關問題 51 第六章結論 6-1 系統評估 61 6-2 未來展望 62 1 第一章背景介紹 1-1.前言 在現今繁忙的工商社會下,大部分的社會人士都有印製個人名片的習慣, 即便沒有,本身所處的公司行號,也會幫自家員工印製名片。於是,人們可藉 以與人交換名片留下彼此的個人基本資料。因此,名片這一種東西,可說是很 普遍存在的一種個人化產品,人人都會需要它,無論是禮貌性地與人交換名片, 或留下彼此連絡方式,或拓展人脈,甚或是推銷自已,在在都少不了這一張薄 薄的紙。 1-2.研究動機 名片應用之廣,效用之大如前所述。此種名片或可稱為傳統名片,而傳統 名片有它方便的地方,當然也有諸多缺點,比如管理不易,傳播範圍有限(僅 限於所接觸的人)、得隨身攜帶、一次印刷的數量是固定的。 如今在網際網路的浪潮之下,與傳統名片相對的概念東西有自行撰寫網頁 的個人化網站、kimo 相簿、台北鄰里社區網等等,都可算是另類的個人名片。 但卻不是每個人都有那麼多心力去製作一個網站或是想把個人相片放於人口網 站上。於是就在前述諸多因素之下,加上國內似乎沒有一個整合網站、PC 端及 PDA 端名片管理軟體的 e 化名片管理系統,均是興起實作本專題的原因。 2 1-3.研究目的 希望能藉由此次專題的實作,建立起一套名片管理系統,讓使用者最初可 藉由網頁登錄個人名片等相關基本資料來建立起一個名片資料庫,並在網頁上 撰寫查詢、修改的等相關功能,達到資訊交流目的。使用者除了可利用網頁來 做查詢外,尚可利用本次專題在 PC 端及 Palm 上撰寫的名片軟體,來下載其他 人的名片資料存放到本地端的資料庫上。除此之外,假使某人尚未註冊隨身碼, 也可自行新增輸入該人的名片基本資料,來建立起自已的一套資料庫。PC 端名 片軟體除了一般的下載、編輯、搜尋之外,更整合了寄信、手機發簡訊、直接 開啟公司/個人網頁,在在都是貼心的小設計。而未來,如果 CCD 或其它影像 攝取元件或成品普及化後,並在 Palm 上有影像讀取功能時,此時,更可配合 本次專題的利用攝影機讀取條碼功能,讓使用者連輸入隨身碼這個動作都省了 下來,直接利用 Palm 來讀取條碼即可下載回來該條碼所代表隨身碼的名片資 料。如此面面俱到的設計,均是本次專題創新與特色所在。 而除了以上所言,藉著本次專題,也可檢視學員門在課程告一段落後,大 家學習的效果及利用此次的專題實作來練習課堂上所學到的東西。並且試著如 何藉由團隊的合作,培養團隊合作精神,且最後能將各人看似獨立的研究主題 整合在一起,成為一個名片管理系統,我想這也是此次專題最大的收穫之一, 也是一個難得的歷練經驗。 3 第二章 系統架構 2-1.開發環境 項目 系統/軟體/規格 備註 作業系統 Win2000 資料庫 MS SQL Server PDA Palm 模擬器 PDA 系統 Java 整合開發環境軟體 JBuilder7 J2SE Java2 SDK 1.4 J2ME CLDC+KJAVA PDA 系統 Application Server Resin 2.1.2 網頁編輯器 Dreamweaver 4 文字編緝器 Ultraedit9.1 C+ 整合開發環境軟體 Microsoft Visual C+ 發手機簡訊 影像處理函式庫 JAI(Java Advanced Imaging) 條碼辨識系統 表 2.1、系統開發環境 4 2-2.系統結構圖: 圖 2.2.1、系統方塊圖 後端資料庫 系統主機 JSP網頁 發手機 簡訊 PDA PC 端 應用程式 攝影機 條碼辨識 5 圖 2.2.2、名片管理系統整合資源 6 2-3.系統 UML 架構圖 圖 2.3.1、JSP 網頁 UML 架構圖 7 圖 2.3.2、使用者 AP UML 架構圖 8 條 碼 辨 識 系 統輸 入 數 字 CD擷 取 條碼 圖讀 取 圖 檔 旋 轉 圖 檔辨 別 條 碼圖 產 生 正 確數 字 圖 2.3.3、條碼辨識系統 UML 架構圖 9 圖 2.3.4、Palm 名片管理系統 UML 架構圖 Palm download update browse edit Database 10 第三章 系統簡介 3-1.端網頁設計方向 1.會員管理之系統設計流程圖 忘記密碼 登出 是否允許登入 是否允許 登入錯誤 從新登入 個人資料表 圖 3.1.1、系統登入流程圖 錯誤訊息 修改資料表 修改 修改成功? 登 出 圖 3.1.2、個人資料修改流程 圖 登入畫面 11 個 人 資 料 表 系 統 寄 發mail至 信 箱 資 料 確 認 頁 面確 認 寄 出 信 件 郵 件 選 單 夾 帶 檔5*1024*1024夾 帶 檔 案 寄出信件 圖 3.1.4、寄送郵件流程圖圖 3.1.3、密碼遺失流程圖 2.會員管理之系統設計大綱: (1)加入會員 本網站資料登錄屬會員制,採付費登錄方式,欲加入會員須填寫會 員基本資料,經認證後系統會自動產生一組隨身碼,會員便可使用此 隨身碼名片系統。 相對映的網頁 :Register.htm。 Register.jsp (2)會員登入 由於採會員制,所以須經由會員登入(要求會員輸入認證過的隨身 碼與密碼) ,登入成功後便可進行個人名片的維護及修改。 相對映的網頁 : Login.htm。 Login.jsp。 LoginError.htm 13 (3)密碼查詢 當會員忘記登入密碼時,可藉由輸入隨身碼系統會將所查得之 密碼以 Email 的方式 mail 到會員電子信箱內。 相對映的網頁 : getPasswd.htm。 getPasswd.jsp (4)JavaMail 的寄送 會員可使用 JavaMail 寄送郵件,可附夾帶檔(大小為 5*1024*1024)。 14 import com.oreilly.servlet.Multipart.Request 利用這個免費類別來解決上傳檔案的方法, 相對映的網頁 : Jmail.htm。 Jmail.jsp (5)會員資料修改 當會員其相關資料欲修改變更時,可經由會員登入進行修改,以確 保資料的準確性及會員的相關權益。 相對映的網頁 :UpDate.jsp 3.隨身碼的產生 由於人名可能發生重複,所以我們由系統產生一組五位數字單一的隨 身碼,於資料庫中建立索引鍵,其產生的方式為資料庫中最後一筆資料的 隨身碼加一,如此系統產生的隨身碼便能唯一,如系統資料遭修改而出現 錯誤時也可以輕易的由索引鍵發現而停止註冊的行為,使得資料庫的管理 更加容易,此隨身碼將用於掃描器的數字判別。 SELECT COUNT(*) FROM Person while(rs.next() ID=rs.getString(1); ID=ID.valueOf(+Integer.parseInt(ID)+10001); 15 4.下載管理 本系統上所有資料皆為公開下載,所有人可上網下載客戶名單下載線 上資料庫。 使用著可藉由下載批次資料將線上所有名單 download 至自己的資料 庫中,如此可以達到離線的功能,不必將工作維持在連線狀態。 16 3-2.端 Client 介面設計方向 1.資料庫頁面 (1)個人資料庫 左方為一 list 表單呈現所有名單,右方為一表單呈現左方點選名 單的資料內容,擁有: (1)直接點選查閱與按筆數瀏覽的基本功能 直接使用 JBuilder 的元件:jdbNavToolBar,其中包括對資料 庫做新增、刪除、修改、更新、以及對資料庫按筆數上下查閱的 功 能,可免除過去編寫程式的不便。 由於jdbNavToolBar並不像我們手寫的程式一樣可直接下達 指令,所以在修改及加入 sever 端資料庫資料時,我們利用: queryDataSet 的 Event:postRow來編寫當發生修改時,時間參 數 的指定。 (2)編輯個人相片 個人資料庫 list Sever 資料庫 list jdbLable jdbNavToolBar 17 使用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()+“, 18 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()+“c: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 的使用 40 (1)JSP 搭配 JavaBean 的優缺點: 1.可以將 HTML 和 Java 程式分離,這主要是為了日後維護的方 便。 2.可以善用到 JavaBean 的優點。 我們可以將常使用到的程式寫成 JavaBean 元件,當 JSP 要 使用時,只要呼叫 JavaBean 元件來執行我們所要的功能,不 再重複寫相同功能的程式,以節省開發所需的時間。 JavaBean 最大的缺點則是麻煩,因為製作時需先用 JDK 先編譯 成.class 然後在放入 JSP Container 中執行,若有錯誤時又 要重新編譯一次,為了解決這個問題,我們的開發環境使用 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“); 如此可限制網頁不被非會員使用。 38 42 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 來做控制,由於前端是使用者介面,如果能夠在前端先做一層 的控制,而不是將資料傳回系統再做判斷,也可以減少當資料錯誤時的 傳送來回時間。 43 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.安裝 KVM KVM 全名為 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 面板上發現這兩個程式的蹤影。 44 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_cldcbinapi classes;.-bootclasspath c:j2me_cldcbinapiclasses;. %1 如果程式本身有使用到中文的話,除了 POSE 本身須安裝中文系統外, 另須於編譯時加上參數-encoding ISO8859_1,使其支援中文 (2)palmver.bat預先審核 c:j2me_cldcbinpreverify-classpath c:j2me_cldcbin apiclasses;. %1 預先審核的功用在於對產生出來的 class 檔做預先驗證的工作,以減 少在 PDA 上執行的時間。 (3)plamtest.bat測試 c:j2me_cldcbinkvm-verbose-classpath c:j2me_cldcbin apiclasses;.output %1 result.txt 利用 cldc 內附的陽春模擬器做測試,並將結果輸出至 result.txt。 (4) palmapp.bat轉換成 Palm 上可執行的 prc 檔 cd ouput java-cp 45 c:j2me_cldcbinapiclassespalm.database.MakePalmApp -networking -v -bootclasspath c:j2me_cldcbinapi classes %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_cldcbin apiclasses (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。 46 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 一筆紀錄是由紀錄 號碼和單一欄位資料所組合而成的,所以這也就是我們必須如 47 此做的原因。 (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 48 temp=new bytemaxColumn; /end of while 利用一 byte temp 來接收資料 for(int i=0;i) flag+; if(flag%2=0 /end of for loop 過慮掉 html 語法的 tag 及拿掉換行鍵 public static void saveToDB() int begin=0,end=0; int startOfRecord=0,endOfRecord=0; while(true) try String record=“; startOfRecord=begin; end=sb.toString().indexOf(delimter9,begin); begin=end+1; endOfRecord=end+1; 49 /將 record 加入 Database record=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轉成 字串以便讀取。 50 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.Wide.top,TRect.Wide.right ,TRect.Wide.bottom); 利用上列之程式,分別畫出,gap、0、1,且其寬度比例為 3:6:9。 2. 讀取 BMP 圖檔: 攝影機擷取後之影像為 BMP 檔,故須撰寫一讀取 BMP 檔之功能。在 Java 中有關影像方面,可以利用 AWT、Java 2D 來處理,但這兩項對於 BMP 檔之處理,並沒有直接支援。Java 有提出一 JAI(Java Advanced Imaging) API,可直接支援 BMP 檔。有關 JAI 之 library 可至下列網址取得: /products/java-media/jai/downloads/download.html 51 下載以下檔案,並執行。 Jai-1_1-lib-win.exe Jai-1_1-lib-win-jre.exe Jai-1_1-lib-win-jdk.exe 設定 CLASSPATH: C:jai-1_1_1_01libjai_core.jar; C:jai-1_1_1_01libjai_codec.jar C:jai-1_1_1_01libmlibwrapper_jai.jar JBuilder 設定: (1). Tools-Configure Libraries 左下角點選 增加一個新的 Library 名稱自取 JAI,在 Class 選項,按 Add,將上面三個 jar 檔加入。 (2).Project - Project Properties -Required Libraries - Add 新增的 JAI。 程式撰寫內容: import javax.media.jai.*; PlanarImage planarImage = JAI.create(“fileload“, filename); BufferedImage bufferedImage =planarImage.getAsBufferedImage(); 利用 JAI 所提供之方法,讀取使用者所指定的 BMP 圖檔,為 PlanarImage 型態,利用其 getAsBufferedImage 方法轉為 BufferedImage。 3.讀取圖檔 RGB 值: Red Value=0xff RenderingHints rh=new RenderingHints(RenderingHints. KEY_INTERPOLATION ,RenderingHints .VALUE_INTERPOLATION_BILINEAR); AffineTransformOp R=new AffineTransformOp(at,rh); BufferedImage bufferedImage=R.filter(sourceImage,null); 上述程式內容,主要是建構一 AffineTransform,使用 AffineTransform 之 getRotateInstance 方法,將圖片旋轉指定角度,並使用 RenderingHints 影像處理方法。然後將來源影像(sourceImage)經 filter 轉換,得到目的影像(bufferedImage) 。 5.判別條碼: 主要是讀取條碼圖檔之 RGB 值,並依其寬度比例來辨別,gap、0、1 值。 將辨別出之值,依據 Code39 編碼原則,產生出正確的數字。又考慮到所擷 取之圖檔,有可能是歪斜。故又利用旋轉圖檔功能,將圖檔旋轉至判別出正 確之數字為止。 6.問題與討論: 原本是要將產生之條碼,存成圖檔,然後印於名片上,使用者透過攝影 機可直接讀條碼。再者透過攝機擷取後之影像,其影像品質較差,若要真正 達到完全可以辨識之程度,還需透過一些影像處理方法。但因時間上之關係, 上述二項來不及完成,是唯一美中不足之處。若將來有機會,可針對這二點 進行加強,使整個系統更為完善。 53 5-4 .傳送簡訊的製作過程及相關問題 (1)先建一個目錄 SMS(可放在任何地方,暫定成 E:/): 寫一支 getInfo.asp 放在裡面,用來接 Client 端傳過來的字串, Reqest.Form(“要接的參數名稱”)是用來接 ”POST”method 傳過來 的字串,Request.QueryString(“要接的參數名稱”),是用來接 “GET” method 傳過來的字串,主要程式碼如下: UserName is “” Password is “” (2) 學會 IIS 裡面的設定: 打開 IIS 在 “預設的 Web 站台”裡面按滑鼠右鍵看到 ”新增” , 再到裡面做一個虛擬的目錄,可令其名為“MyServer” (用來讀取資料 的 Server) ,並指向前面的 SMS 目錄,即完成。 54 (3) 寫一個有 FORM 的 sendInfo.html(放在 SMS 裡面): 在裡面的 action 寫入”/MyServer/getInfo.asp” 並把 method 寫成 ”POST” ,拉兩個 text(這個參數名稱就是之後 55 getInfo.asp 要收的參數名稱)將第二個的 type 設成 password,設定 getInfo.asp 要接的參數和現在這個一樣,部分程式碼如下: UserName: Password: 這樣在 SMS 裡面的 getInfo.asp 就能接收 sendInfo.html 傳過來名 為 text1 和 password1 的變數了。 (4) 測試 sendInfo.html: 打開 sendInfo.html 在 text 裡面敲一些字串 ,看看是不是能夠傳 資料給 MyServer 所指向目錄的 getInfo.asp 。 56 如果能出現這個畫面,就代表我們可以用 POST 的 Method 傳送資料 給 MyServer,如此我們才能用程式代替我們的 sendInfo.html 所作的工 作,至於為什麼要用 POST 的 method,因為發送簡訊的 asp 因為怕資料 流出,所以通常都是只接 POST 傳過來的資料。 (5) 做一個 SMS.exe 來代替 sendInfo.html 所做的事: 開 VC+,new 一個 file 選 MFC AppWizard(exe),然後放到 SMS 裡 面然後“OK” ,選 Dialog based,拉兩個 edit box 當作傳送 UserName 和 Password 的 text,並且設定 Password 的 type 為 passwd,以及設 定 text 裡面的變數名稱為 m_strUserName,及 m_strPasswd: a.製作執行檔: 57 b.製作 smsDlg,及設定變數名稱(每個 text 都要設): c.edit properties(都要設): 58 d.設定變數名稱,並給定 Vaiable type: e.設定初步完成: 59 (6)將可以“POST” method 的 code 引進來用 : click“確定”兩下,讓我們寫一些 code 在裡面 include (Global.cpp) 以及 (Global.h),這樣這裡面的 method 我們就可以 拿來用,其中的一支程式 XLHttpContentByPost 就可以傳送,其中第 一個欄位參數是 strRet :它是一個回傳值,如果成功的話它會回傳 0,第二個欄位參數是 strUrl,寫入你要傳的送的地方(http),第三 欄則寫入 “POST” ,第四欄則為 strPostMsg,顧名思義它就是你想要 傳的字串,不過它的前後有特定的寫法:其中的一部份程式碼如下 CString strQueryStr.format(“text1=%s CString strPostMsg=Cstring(“rn”)+strQueryStr+ Cstring(“0x00”); (7)再用 AfxMessageBox 來回傳訊息,測試看看 Server 收不收的到 : 最可能出現的問題是,你傳過去的參數名稱和他要的不一樣,這樣 getInfo.asp 就會讀不到,而產生可以傳但是讀不到乃至於回傳一個空 白的 MessageBox 60 (include Global.cpp CString strQueryStr = ”id=” ; 這樣那個 asp 才收的到 , 如果一次要傳好幾個參數的話 記得用 & 來連接 ,例如 : 29/wwwms/SmSendCom1.asp 這個 asp 裡面要接受 的參數是: id=&passwd=&tran_type=now&tel0=&tel1=&tel2=&tel3=&tel4=&tel5= &message=&year=&month=&day=&hour=&min=我們就一定要照著它要接收 的格式(變數名稱) ,給定相同的變數名稱。 (9)製作符合 Hinet 收簡訊的 SMS.exe: 如同第 3 點,我們要多加幾個參數來配合,Hinet 傳簡訊的網頁,所以 我們需要 Static Text 可寫成(UserID:)和 Edit Box 用來傳送我們的 id,以此類推我們還需要另外幾組 Static Text 和 Edit Box 好讓使用 著鍵入 password
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 草牧场承包与旅游开发融合合作协议
- 文化创意园区办公场地租赁管理规范
- 军品科研生产管理制度
- 2025至2030中国人用宠物食品行业产业运行态势及投资规划深度研究报告
- 医学装备质量管理制度
- 医院住院病区管理制度
- 拉萨师范高等专科学校《犯罪心理学》2023-2024学年第二学期期末试卷
- T(0,1)模态EMAT的研制与受热面管无损检测应用研究
- 消防职责使命教育课件
- 消防美术课件教学
- 2024年河南资本市场白皮书
- 教师专业化视角下高职教师能力结构研究
- 2024CSCO结直肠癌诊疗指南解读
- 幼儿园小小美食食谱播报员播报课件
- 学情分析初中生物
- 《湖南省医疗保险“双通道”管理药品使用申请表》
- 影像进修汇报
- 六年级上册语文 名著导读《昆虫记》教学课件
- MOOC 信号与系统-西安电子科技大学 中国大学慕课答案
- DnD3RCharacterCard龙与地下城3.5空白人物卡(初版)
- (正式版)QBT 2174-2024 不锈钢厨具
评论
0/150
提交评论