830 likes | 1.12k Views
第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術. 內容大綱. 緒論 微電腦 I/O 控制系統 圖形介面暨視窗為基的應用程式 Borland C++ Builder 程式開發 本書實習實作使用到的 BCB VCL 元件 總結. 緒論. 微電腦 I/O 控制系統到處可見 控制技術良劣,會影響操控效能 本書探討個人電腦 I/O 控制技術 使用 PC 的輸出入埠,進行控制資料的輸出入 操控介面完全仰賴控制軟體 圖形為主的視窗介面控制技術. 緒論 ( 續 ). 個人電腦平台下的軟體開發工具不勝枚舉
E N D
第三章 以Borland C++ Builder開發視窗介面為基之I/O控制技術
內容大綱 • 緒論 • 微電腦I/O控制系統 • 圖形介面暨視窗為基的應用程式 • Borland C++ Builder 程式開發 • 本書實習實作使用到的BCB VCL元件 • 總結
緒論 • 微電腦I/O控制系統到處可見 • 控制技術良劣,會影響操控效能 • 本書探討個人電腦I/O控制技術 • 使用PC的輸出入埠,進行控制資料的輸出入 • 操控介面完全仰賴控制軟體 • 圖形為主的視窗介面控制技術
緒論(續) • 個人電腦平台下的軟體開發工具不勝枚舉 • MS 的Visual Studio • Borland 的C++ Builder、JBuilder、Delphi • SUN 的JAVA • 微電腦I/O控制技術和程式開發系統或語言無關 • 使用功能強大且容易上手的程式開發工具 • 要求讀者程式實作 • Borland 的 C++ Builder • 讀者必須具備使用及撰寫C/C++的能力
內容大綱(我們在哪裡?) • 緒論 • 微電腦I/O控制系統 • 圖形介面暨視窗為基的應用程式 • Borland C++ Builder 程式開發 • 本書實習實作使用到的BCB VCL元件 • 總結
微電腦I/O控制系統 • 微電腦控制系統的應用到處可見 • 3C產品的民生消費物品 • 大型公共設施工業設備、或國防武器 • 內有獨立運作或協調運轉的電腦控制系統
微電腦I/O控制系統(續) • 簡單的控制系統 • 作成微電腦晶片,直接控制設備 • 控制的動作較簡單 • 毋須高度複雜的運算 • 功能較簡單且較經濟 • 如:玩具內的聲光控制,簡便型計算機
微電腦I/O控制系統(續) • 複雜或高彈性控制系統 • 採用專用的控制系統 • 可能採用專用的或泛用的電腦系統 • 控制邏輯或是控制程式是以軟體寫成 • 隨時可以更新和變更 • 提供較大的操控彈性。 • 如:暖氣空調設備、升降梯、火災受訊設備、門禁系統
機電控制系統控制技術類型 • 硬式控制法 • 完全採用硬體設備 • 譬如:公寓的供水系統—兩段浮筒和抽水馬達及繼電器 • 軟式控制法 • 使用操控軟體和微電腦 • 使用標準人機介面設備 • 滑鼠、鍵盤 • 譬如:無人駕駛的捷運車系統、工廠的無人搬運車控制系統、核電廠的廠區控制系統、或複雜加工機台的控制系統
控制系統概觀 • 一定會有前面章節敘述過的感測器和致動器 • 感測器是系統的輸入,致動器是系統輸出 • 二者間的關聯就是所謂的控制邏輯 • 硬式控制模式將控制邏輯硬生生地以線路連結 • 軟式控制則以邏輯程式或操控軟體,彈性地銜接二者
內容大綱(我們在哪裡?) • 緒論 • 微電腦I/O控制系統 • 圖形介面暨視窗為基的應用程式 • Borland C++ Builder 程式開發 • 本書實習實作使用到的BCB VCL元件 • 總結
圖形介面暨視窗為基的應用程式 • 視窗為基的電腦作業系統已成主流 • Apple Macintosh OS • Microsoft Windows • 以XWindow為基的 Unix 作業系統 • Sun 工作站電腦的 Solaris • Linux系統上的Red Hat • 電腦應用程式普遍採用圖形式人機交談介面 • 滑鼠成為個人電腦和工作站電腦的標準配備 • 典型的圖形式人機交談介面: • 使用者操控滑鼠,在視窗為基的應用程式內,顯示的各種控制項(controls)上,以滑鼠或敲擊、或快擊兩次、或拖拉等動作,下達各式操作指令
圖形式人機交談方式 • 提供了直覺的軟體操作方式 • 合乎人類的習性 • 易讓操作者聯想或監看操控結果 • 本書探討的微電腦I/O控制技術需要圖形介面 • 採用圖形式人機交談介面 • 達成圖形監視和控制的效果
內容大綱(我們在哪裡?) • 緒論 • 微電腦I/O控制系統 • 圖形介面暨視窗為基的應用程式 • Borland C++ Builder 程式開發 • 本書實習實作使用到的BCB VCL元件 • 總結
Borland C++ Builder 程式開發 • BCB提供視窗程式開發者 RAD (Rapid Application Development)的技術 • 採用RAD技術開發視窗為基的應用程式 • 以一個主視窗作為主要的系統介面 • BCB 的程式開發專案(Project)便是以「表單」為主要介面 • 表單本身就是一個視窗,內有各式各樣的「控制項」(controls) • 應用程式開發人員規劃各個表單的內容,並仔細設計分析各個表單的邏輯流程,以展現應用程式應有的功能 • 程式撰寫便是處理各個控制項接收訊息或事件時的處理程序
BCB 提供的IDE (Integrated Development Environment) 整合開發環境 • 程式編輯環境 • 指令或函式語法提示環境 • 編譯指令和執行程式 • 原始程式除錯和模擬執行結果 • 程式執行和測試環境 • 應用程式包裝環境 • 其他資料庫取用,資源編輯和構建等支援環境
BCB係提供VCL (Visual Component Library) 元件庫 • 繼承架構嚴謹的各式類別和元件 • 建立物件直接使用或擴充它 • 提供各式各樣的功能 • 各式Wizard 精靈工作的以進行的元件庫 • 智慧型應用程式框架開發環境
使用BCB新建一個應用程式 • 系統會內定為使用者撰寫一個專用的TForm1類別,繼承自VCL內的TForm 類別 • 附有一個表單的定義檔(Unit1.dfm) • 程式開發者使用VCL內的各種元件,以類似堆積木的方式,透過IDE環境下的表單設計介面,以圖像拖拉在表單上添加各種元件 • 設計過程系統會幫您撰寫相關的C++程式在TForm1類別程式內
VCL內的元件 • 執行時可顯現於表單者 • 表單中的控制項 • 扮演使用者和系統的交談介面 • 透過這些控制項內的事件處理函式(event handlers)觸動行功能。 • 沒有視覺顯示功能者 • 提供物件協助 • 如:AnsiString類別
表單控制項 • 控制項元件 • 僅扮演介面角色只紀錄本身的特性(attributes)和狀態(states)供使用者和程式辨視 • 其內的特性(attributes)和狀態(states) ,描述應用程式資訊 • 添加於表單類別內的VCL元件均以C++物件指標(object pointer)指稱
內容大綱(我們在哪裡?) • 緒論 • 微電腦I/O控制系統 • 圖形介面暨視窗為基的應用程式 • Borland C++ Builder 程式開發 • 本書實習實作使用到的BCB VCL元件 • 總結
本書實習實作使用到的BCB VCL元件 • 僅介紹與本書目標相關的程式開發,所需的VCL元件 • 元件的屬性和成員函式也僅介紹與本課程相關者 • 其他的元件,讀者可視需要直接參閱BCB提供的線上說明資料 • 參閱相關說明,並透過IDE環境在程式開發環境下自行演練各種屬性變更
BCB VCL元件 • 表單元件 (TForm) • 按鈕元件 (Tbutton) • 群組框元件 (TGroupBox) • 捲選盒元件 (TComboBox) • 面板元件 (TPanel) • 碼表元件 (TTimer) • 標籤元件 (TLabel) • 輸入元件 (TEdit) • 升降元件 (TUpDown)
表單元件 (TForm) • 不直接使用 • 不直接定義一個TForm類別的物件使用 • 使用物件導向程式語言的繼承特性,以TForm類別為繼承對象,另行設計一個使用者可以盡情擴充的新表單類別 • 自動由BCB處理 • 自動產生一個繼承自TForm類別的新表單類別,名為TForm1 • 產生一個unit1.h,unit1.cpp,及一個描述表單佈置的unit1.dfm等檔案
按鈕元件 (Tbutton) • 典型的表單控制項 • 常常作為使用者執行程式某項功能的介面 • 可動態設定能否使用的狀態(Enabled) • 可動態設定藏、現(Visible)的狀態
Exercise 3-1 :實作一個電子琴演奏介面 • 在表單上佈置一個琴鍵畫面 • 內含一組琴鍵按鈕有八個白鍵和五個黑鍵 • 在類別下預先增添二個成員函式 • void play_a_key( int num ) • 驅動電腦喇叭發出琴音 • void stop_a_key() • 停止喇叭的發音
Exercise 3-1:實作一個電子琴演奏介面(續) • 在琴鍵按鈕的OnMouseDown滑鼠事件處理函式中,以該琴鍵的琴音計數為參數呼叫play_a_key()函式 • 在表單類別的OnMouseUp 事件下添加處理函式呼叫stop_a_key() • 將所有的琴鍵的OnMouseUp 事件處理函式導引到FormMouseUp()處理函式
群組框元件 (TGroupBox) • 將一些控制項組成一個群組 • 視覺上可與其他控制項區隔 • 框內的控制項彼此維持相對位置,以整體方式一齊佈設在表單上,有助於表單的編排設計 • 主要的物件屬性是顯示群組頭銜的Caption屬性
捲選盒元件 (TComboBox) • 常見的表單控制項元件 • 讓使用者設定某項資料值 • 資料值只能由一堆固定的值中選擇 • 一堆固定的值列成一個捲選清單
Exercise 3-2 :設計微電腦I/O控制的主要人機介面 • 使用BCB建立一個應用程式,儲存成control.bpr • 將內定的TForm1表單的name屬性設為IOControlFM • 自行使用資源(resources)編修工具,設計一個小圖像並將它設為本專案的圖像 • 將TIOControlFM表單的Caption屬性設為「微電腦I/O控制C語言實作」
Exercise 3-2 :設計微電腦I/O控制的主要人機介面(續) • 加入一個群組框元件,頭銜設為「8255模式設定」 • 加入一個捲選盒元件 • 在Items屬性內新增一筆字串「0x99」 • 加入一個按鈕元件 • Caption設成「控制模式設定」 • 在它的OnClick事件中添加事件處理函式 • 本函式將由您撰寫I/O程式,將捲選盒選定的控制資料輸出,以設定一個I/O介面卡內8255晶片的控制模式 • 使用者選的模式資料,以字串方式存放在捲選盒的Text屬性內
面板元件 (TPanel) • 是一個矩形包容器元件 • 收納其他元件一起處理 • 特別用於表單佈置時,以各個面板元件為單位停駐在視窗邊緣或中間 • 面板元件可設定它的顏色,因此我們可使用它來代表控制系統的燈號
碼表元件 (TTimer) • 用於須定時反覆定時執行一些運算的情形 • 如:執行動畫時,每1/30秒必須執行更新畫面一次(以最新的位置和方位繪出場景內各個物件) • 如:微電腦I/O控制系統,必須隨時掃描輸入訊號 • 用於每到設定的間隔時間到時,產生時間到的事件 • 處理程序在時間到事件的處理函式中實作 • VCL設有TTimer元件和時間到事件OnTimer • 計時並設定相關的處理函式
碼表元件 (TTimer)(續) • 在設定的時間間隔到時,會產生OnTimer時間到事件 • 應用程式可動態地變更間隔時間,以加快或減慢事件產生的頻率 • 應用程式可視情況隨時啟動或停止碼表 • 碼表元件是沒有視覺顯示功能的VCL元件 • 程式執行時,不會有任何圖像顯示