版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 NUMPAGES 1 NUMPAGES 1 PAGE 46 PAGE 46 PAGE 46 PAGE 46華北工學(xué)院學(xué)士論文 動(dòng)力環(huán)境監(jiān)測(cè)系統(tǒng) PAGE 85前言目前,大多數(shù)需要環(huán)境測(cè)量,防水,防盜的程控機(jī)房,精密儀器室,圖書館,庫房,無人職守站等主要是人工定時(shí)巡邏、人工控制,人工抄表等,在設(shè)備較多的機(jī)房中,設(shè)備分散不集中,對(duì)參數(shù)的采集有一定的困難,而且若是機(jī)房數(shù)量越多,值班人員的工作強(qiáng)度就顯得越大,造成大量的人力資源的浪費(fèi),并且經(jīng)常會(huì)出現(xiàn)少抄,漏查的現(xiàn)象,使得工作效率不是很高,同時(shí)設(shè)備資料數(shù)據(jù)的保存也不科學(xué),查詢很不方便,不利于數(shù)據(jù)管理。為了合理使用人力資源、提高工作效率、保證通信設(shè)備安全
2、可靠地工作,對(duì)各動(dòng)力機(jī)房內(nèi)動(dòng)力系統(tǒng)、空調(diào)系統(tǒng)、及其它環(huán)境設(shè)備進(jìn)行聯(lián)網(wǎng)監(jiān)控、集中維護(hù)和管理是極其必要的。隨著通信技術(shù)的不斷發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)通信是當(dāng)今技術(shù)發(fā)展的一個(gè)重要的方向,然而在網(wǎng)絡(luò)系統(tǒng)中利用現(xiàn)有電話網(wǎng)作為通信信道則是最經(jīng)濟(jì)、最方便和最可靠的方法。當(dāng)前現(xiàn)代電話通信網(wǎng)已經(jīng)進(jìn)入程控交換時(shí)代,技術(shù)比較先進(jìn),速度快,容量大,因此采用電話通信網(wǎng)建立數(shù)據(jù)通信系統(tǒng)確實(shí)具有其獨(dú)特的優(yōu)越性。動(dòng)力環(huán)境監(jiān)測(cè)系統(tǒng)就是在這種情況下誕生的。本論文就后臺(tái)PC機(jī)用Delphi開發(fā)通信和數(shù)據(jù)管理系統(tǒng)軟件的過程做了詳細(xì)介紹,重點(diǎn)是該軟件的數(shù)據(jù)管理。本論文共有四章,循序漸進(jìn)地介紹本次軟件開發(fā)的目標(biāo)、設(shè)計(jì)過程及相關(guān)知識(shí)、該軟件的
3、使用。由于本人水平有限,且編寫時(shí)間倉促,論文中難免有疏漏和錯(cuò)誤,懇請(qǐng)老師們提出寶貴意見。設(shè)計(jì)目標(biāo)及完成題目的技術(shù)途徑1.1 設(shè)計(jì)目標(biāo)根據(jù)信息產(chǎn)業(yè)部通信電源,機(jī)房空調(diào)集中監(jiān)控系統(tǒng)技術(shù)要求的要求,研制開發(fā)了“動(dòng)力環(huán)境監(jiān)控系統(tǒng)”。其主要功能是對(duì)電信系統(tǒng)中分布在不同通信局(站)的設(shè)備運(yùn)行環(huán)境(電源、溫度、濕度、門禁、水浸、煙霧等)進(jìn)行集中監(jiān)控。對(duì)各種異常情況進(jìn)行及時(shí)報(bào)告和處理,以保證通信設(shè)備的正常運(yùn)行;系統(tǒng)可以顯示和記錄所有監(jiān)測(cè)到的數(shù)據(jù),供監(jiān)控中心查詢、分析,使工作人員能從宏觀上管理和維護(hù)整個(gè)電信設(shè)備的運(yùn)行環(huán)境,提高系統(tǒng)維護(hù)的實(shí)時(shí)性和準(zhǔn)確性,實(shí)現(xiàn)電信網(wǎng)的集中維護(hù)、集中管理,真正達(dá)到少人或無人值守的目標(biāo)
4、。本系統(tǒng)系統(tǒng)由四個(gè)電路模塊(數(shù)據(jù)采集模塊、通信模塊、顯示模塊、電源模塊)和中心站處理軟件組成:采用89C51與通用異步收發(fā)器8250接口和控制智能MODEM以實(shí)現(xiàn)單片機(jī)與PC機(jī)在有線公用電話網(wǎng)中進(jìn)行遠(yuǎn)程數(shù)據(jù)通信技術(shù)。MODEM將前端單片機(jī)采集的數(shù)據(jù)通過電話網(wǎng)遠(yuǎn)程傳輸?shù)街行恼綪C機(jī),并實(shí)現(xiàn)一對(duì)多點(diǎn)通信(站點(diǎn)數(shù)、通信距離均不限),后臺(tái)PC機(jī)通過撥號(hào)的方式對(duì)各站點(diǎn)進(jìn)行數(shù)據(jù)接收并實(shí)時(shí)存儲(chǔ)記錄、查詢、打印。設(shè)計(jì)后臺(tái)PC機(jī)處理軟件,即編制通信接口與組態(tài)軟件,實(shí)現(xiàn)數(shù)據(jù)回總計(jì)報(bào)警監(jiān)測(cè),歷史數(shù)據(jù)查詢、保存、打印等功能是此次設(shè)計(jì)的目標(biāo)。1.2 完成題目的技術(shù)途徑中心站與監(jiān)測(cè)站之間采用調(diào)制解調(diào)器在電話網(wǎng)絡(luò)上通信,中
5、心站的通信接口網(wǎng)使用AT命令集對(duì)調(diào)制解調(diào)器控制,組態(tài)軟件在Windows平臺(tái)下用Delphi6軟件開發(fā)成形。Delphi以基于窗口和面向?qū)ο蟮木幊谭椒ǎcWindows操作系統(tǒng)緊密地結(jié)合,強(qiáng)大的數(shù)據(jù)庫技術(shù)支持,迅捷的編譯速度,同時(shí)兼具功能強(qiáng)大和易學(xué)靈活的特點(diǎn),而且Delphi編制與Modem通信的串口程序有獨(dú)到之處,所以選擇該軟件來開發(fā)。環(huán)境監(jiān)測(cè)系統(tǒng)總體方案分析及軟件設(shè)計(jì)2.1 系統(tǒng)總體結(jié)構(gòu)系統(tǒng)總體結(jié)構(gòu)涵蓋了監(jiān)測(cè)中心站、監(jiān)測(cè)各分站,利用了PC上位機(jī)、集團(tuán)電話網(wǎng)絡(luò)、調(diào)制解調(diào)器及單片機(jī)等硬件。結(jié)構(gòu)圖如圖2-1所示:。 圖2-1 系統(tǒng)總體結(jié)構(gòu)圖在本監(jiān)測(cè)系統(tǒng)中,各監(jiān)測(cè)分站采用MCS-51單片機(jī)來采集現(xiàn)
6、場(chǎng)的模擬量、開關(guān)量,采集數(shù)據(jù)經(jīng)過整理后通過單片機(jī)串行接口和調(diào)制解調(diào)器及集團(tuán)電話,采用異步串行通信實(shí)現(xiàn)與監(jiān)測(cè)中心PC機(jī)的遠(yuǎn)程雙向通信。由于各監(jiān)測(cè)分站與中心站之間每次的數(shù)據(jù)傳輸量不大,加之本身具有電話線路的基礎(chǔ)設(shè)施,所以采用本方案是既保證數(shù)據(jù)傳輸要求,又經(jīng)濟(jì)實(shí)用。2.2 監(jiān)測(cè)中心PC及應(yīng)用軟件設(shè)計(jì)該部分實(shí)現(xiàn)對(duì)總體系統(tǒng)的監(jiān)測(cè)及終端顯示功能。主要包括以下部分:系統(tǒng)按權(quán)限分級(jí)啟動(dòng),有效保證系統(tǒng)運(yùn)行穩(wěn)定,安全各監(jiān)測(cè)分站監(jiān)測(cè)數(shù)據(jù)巡檢,保存監(jiān)測(cè)數(shù)據(jù)匯總、實(shí)時(shí)顯示、曲線繪制、報(bào)警等采用Delphi的Database desktop數(shù)據(jù)庫保存數(shù)據(jù),用paradox數(shù)據(jù)庫技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的控制。軟件整體功能實(shí)現(xiàn)如圖
7、2-2所示:動(dòng)力環(huán)境監(jiān)測(cè)系統(tǒng)應(yīng)用程序動(dòng)力環(huán)境監(jiān)測(cè)系統(tǒng)應(yīng)用程序用戶登錄功能塊動(dòng)力環(huán)境監(jiān)測(cè)系統(tǒng)管理功能動(dòng)力環(huán)境監(jiān)測(cè)系統(tǒng)服務(wù)功能系統(tǒng)巡檢監(jiān)測(cè)數(shù)據(jù)保存監(jiān)測(cè)數(shù)據(jù)查詢監(jiān)測(cè)數(shù)據(jù)匯總實(shí)時(shí)顯示報(bào)警曲線繪制打印監(jiān)測(cè)數(shù)據(jù)刪除監(jiān)測(cè)數(shù)據(jù)備份用戶添加刪除 圖2-2 軟件整體實(shí)現(xiàn)功能圖2.3通信接口設(shè)計(jì)通信接口設(shè)計(jì)部分相關(guān)知識(shí),調(diào)制解調(diào)器一般 AT 命令參考 下表列出了您的調(diào)制解調(diào)器能理解的 AT 命令。 每個(gè)命令描述包括命令名稱、解釋和相關(guān)參數(shù)。 切記:您的調(diào)制解調(diào)器必須在 Microsoft Windows 95 下操作。 調(diào)制解調(diào)器在 MS-DOS 或 Microsoft Windows 舊版本下不能運(yùn)工作。 命令描
8、述AT 注意代碼 AT 是命令行的字首,告訴調(diào)制解調(diào)器要輸入命令或命令序列。它執(zhí)行除 A/ (重復(fù)) 和 + (換碼) 之外的所有命令。單獨(dú)輸入 AT,如果調(diào)制解調(diào)器準(zhǔn)備接收命令,則調(diào)制解調(diào)器返回 OK 或 0 信息。 參數(shù):無 A/ 重復(fù)上一命令。 A/ 命令使調(diào)制解調(diào)器重新執(zhí)行上一行的命令,例如,重新?lián)芴?hào)。 上一次執(zhí)行的命令一直保留在命令緩沖區(qū)中,直到輸入 AT 命令或電源已關(guān)閉為止。 這些操作將清除緩沖區(qū)并使 A/ 命令無效,因?yàn)闆]有要重新執(zhí)行的命令。您無需輸入 或 AT,因?yàn)樗鼈兣c上一命令一起駐留在命令緩沖區(qū)內(nèi)。 參數(shù):無 A應(yīng)答命令。 A 命令使調(diào)制解調(diào)器無需等待響鈴則可應(yīng)答呼叫。
9、此命令在手動(dòng)應(yīng)答呼叫或與以始發(fā)方式與另一調(diào)制解調(diào)器建立直接連接時(shí)有用。 同一命令行中 A 之后的所有命令將被忽略。注:此命令在某些國家禁止使用。在這種情況下,ATA 返回錯(cuò)誤信息。 參數(shù):無 Bn通信標(biāo)準(zhǔn)選項(xiàng)。 在 ITU 與 Bell 標(biāo)準(zhǔn)之間作出確定。 參數(shù):n = 0 - 3, 15, 16 n = 0 ITU V.22 使用 1200bps 的傳輸速率n = 1,Bell 212 使用 1200 bps 的傳輸速率 (默認(rèn))n = 2, 3 撤消 ITU V23 反向通道n = 15 ITU, V.21 使用 300bps 的傳輸速率n = 16,103J 使用 300 bps 的傳輸
10、速率 (默認(rèn)設(shè)置) Dn撥號(hào)命令。 D 命令使調(diào)制解調(diào)器撥命令行中 D 后面的號(hào)碼。在撥號(hào)修正符號(hào)頁面中定義有效的撥號(hào)數(shù)字和所撥號(hào)修正符號(hào)。 在脈沖撥號(hào)方式下,非數(shù)字字符不起作用。參數(shù):無注:在某此國家規(guī)定在 D 命令之后必須輸入電話號(hào)碼。En命令回應(yīng)。 En 此命令確定調(diào)制解調(diào)器在命令方式時(shí),您在鍵盤上輸入的字符是否回應(yīng)到屏幕上(本地回應(yīng))。 參數(shù):n = 0, 1n = 0 關(guān)閉本地回應(yīng)功能n = 1 啟用本地回應(yīng)功能 (默認(rèn)) Hn掛斷控制。 Hn 命令告訴調(diào)制解調(diào)器是掛斷以斷開呼叫還是摘機(jī)以占用電話線。 參數(shù):n = 0, 1n = 0 調(diào)制解調(diào)器掛斷 (hang up) (默認(rèn)值)n
11、 = 1 調(diào)制解調(diào)器摘機(jī)注:H1 命令在某些國家禁止使用。 在這種情況下,ATH1 返回錯(cuò)誤信息。 In要求調(diào)制解調(diào)器的識(shí)別號(hào) (ID)。 In 命令詢問調(diào)制解調(diào)器的產(chǎn)品識(shí)別號(hào)、ROM 校驗(yàn)和或 ROM 校驗(yàn)和的狀態(tài)。 參數(shù):n = 0, 1, 2, 3, 4, 5, 9n = 0, 3 返回調(diào)制解調(diào)器默認(rèn)的速率和控制器的硬件版本n = 1 計(jì)算 ROM 校驗(yàn)和并顯示校驗(yàn)和 (例如,12AB)n = 2 檢查 ROM 、計(jì)算并驗(yàn)證校驗(yàn)和及顯示 OK 或 ERROR (錯(cuò)誤) 信息。n = 4 返回?cái)?shù)據(jù)泵的硬件版本n=5 返回調(diào)制解調(diào)器板的ID: 軟件版本、硬件版本和國家代碼n = 9 返回國家
12、代碼。 Ln設(shè)置揚(yáng)聲器音量。ATLn 在傳真和數(shù)據(jù)通信時(shí)設(shè)置揚(yáng)聲器的音量為低、中或高。 參數(shù):n = 0 - 3 n = 0, 1 低音量n = 2 中音量 (默認(rèn)設(shè)置)n = 3 高音量注:要完全關(guān)閉揚(yáng)聲器,請(qǐng)使用 MO 命令。 Mn揚(yáng)聲器音量控制選項(xiàng)。Mn 命令控制傳真和數(shù)據(jù)通信時(shí)揚(yáng)聲器是打開還是關(guān)閉。 參數(shù):n = 0 3n = 0 揚(yáng)聲器一直關(guān)閉n = 1 調(diào)制解調(diào)器在檢測(cè)到載波信號(hào)之前,揚(yáng)聲器始終打開。(默認(rèn)值)n = 2 在調(diào)制解調(diào)器摘機(jī)時(shí),揚(yáng)聲器始終打開。n = 3 在撥號(hào)后揚(yáng)聲器始終打開,直到調(diào)制解調(diào)器檢測(cè)到載波信號(hào)為止,撥號(hào)時(shí)除外。Nn調(diào)制握手。Nn 命令控制本地調(diào)制解調(diào)器在
13、與速率不同的遠(yuǎn)程調(diào)制解調(diào)器連接時(shí)是否執(zhí)行協(xié)商的握手 。 參數(shù):n = 0, 1n = 0 在始發(fā)呼叫或應(yīng)答呼叫時(shí),僅以 S37 寄存器和 ATB 命令指定的通信標(biāo)準(zhǔn)下進(jìn)行數(shù)字交換。n = 1 在始發(fā)呼叫或應(yīng)答呼叫時(shí),僅以 S37 寄存器和 ATB 命令指定的速率開始握手。 在握手期間, 速率可能會(huì)回落。(默認(rèn)設(shè)置) On在線狀態(tài)。 On 命令強(qiáng)迫調(diào)制解調(diào)器進(jìn)入在線方式。 參數(shù):n = 0, 1, 3n = 0 進(jìn)入在線狀態(tài)n = 1 在返回在線數(shù)據(jù)方式前初始化均衡重新排定序列。n = 3 在返回在線數(shù)據(jù)方式前,進(jìn)行速率的重新協(xié)商注:在使用 + 換碼命令換至命令方式后執(zhí)行該命令將返回在線方式。
14、P脈沖撥號(hào)。 P 命令設(shè)置脈沖撥號(hào)方式。 所有的呼叫將停留在脈沖方式,直到使用 T 命令選擇音頻撥號(hào)為止。 此命令也可用作撥號(hào)修正符。 參數(shù):無注:某些國家不可以使用脈沖撥號(hào)。 在這些國家 P 命令將被忽略。 Qn抑制結(jié)果碼。 Qn 啟用調(diào)制解調(diào)器發(fā)送結(jié)果碼。 參數(shù):n = 0, 1n = 0 啟用結(jié)果碼 (默認(rèn)設(shè)置)n = 1 禁用返回結(jié)果碼。(靜噪) Sr=n寫入 S 寄存器。 Sr=n 將 r 寄存器的值設(shè)置為 n 。 用此命令可修改這些寄存器中的內(nèi)容。 參數(shù):無范圍: r = 0 - 27, 29, 31 - 33, 35, 37, 89 (寄存器號(hào))n = 0 - 255 (取值)切
15、記:如果向保留的寄存器或只讀寄存器中寫入內(nèi)容可能會(huì)導(dǎo)致無法預(yù)料 的結(jié)果。 請(qǐng)參閱 S 寄存器命令參考以獲得完整的寄存器列表。 Sn?讀取寄存器。 Sn? 命令 報(bào)告 n 指定的寄存器的值,該值可以是任一有效的S 寄存器號(hào)。 參數(shù):無 范圍: n = 0 - 27, 29, 31 - 33, 35, 37, 89注:取值以十進(jìn)制的格式報(bào)告。 要獲得位映射寄存器的值,請(qǐng)將十進(jìn)制轉(zhuǎn)為二進(jìn)制。 T音頻撥號(hào)。 T 命令將撥號(hào)方式設(shè)為音頻撥號(hào)。 默認(rèn)設(shè)置為音頻撥號(hào)。 此命令也可用作撥號(hào)修正符。 參數(shù):無 Vn結(jié)果碼的形式。Vn 命令確定調(diào)制解調(diào)器返回的結(jié)果碼的類型。 參數(shù):n = 0, 1 n = 0 以
16、數(shù)字形式發(fā)送結(jié)果碼。(簡短的形式或數(shù)字)n = 1 以文本的形式發(fā)送結(jié)果碼。(長格式或冗余) (默認(rèn)設(shè)置) Xn設(shè)置結(jié)果碼和呼叫進(jìn)行 Xn 命令選擇結(jié)果碼集和撥號(hào)功能。 Vn 命令確定結(jié)果碼是以文字方式還是數(shù)字方式發(fā)送, 亦請(qǐng)參閱結(jié)果代碼。 擴(kuò)展的結(jié)果碼: 如果啟用此項(xiàng),調(diào)制解調(diào)器顯示基本的結(jié)果碼、連接信息、調(diào)制解調(diào)器的數(shù)據(jù)傳輸速率、調(diào)制解調(diào)器錯(cuò)誤校正的表示和數(shù)據(jù)壓縮設(shè)置。 如果禁用此項(xiàng),只顯示 OK, CONNECT, RING, NO CARRIER 和 ERROR。撥號(hào)音檢測(cè): 如果啟用此項(xiàng),調(diào)制解調(diào)器僅在檢測(cè)到撥號(hào)音時(shí)撥號(hào); 如果 10 秒鐘內(nèi)未檢測(cè)到撥號(hào)音,將斷開呼叫。 如果禁用此項(xiàng)
17、, 調(diào)制解調(diào)器不管是否檢測(cè)到撥號(hào)音均將撥號(hào)。 您可選擇調(diào)制解調(diào)器在 S6 寄存器中撥號(hào)前需等待的秒數(shù)。忙音檢測(cè): 如果啟用此項(xiàng),調(diào)制解調(diào)器檢查忙音。 如果禁用此項(xiàng),調(diào)制解調(diào)器忽略忙音。參數(shù):n = 0 - 4, 7n = 0 禁用擴(kuò)展結(jié)果碼、撥號(hào)音檢測(cè)和忙音檢測(cè)。n = 1 啟用擴(kuò)展結(jié)果碼; 禁用撥號(hào)音檢測(cè)和忙音檢測(cè)。n = 2 啟用擴(kuò)展結(jié)果碼和撥號(hào)音檢測(cè); 禁用忙音檢測(cè)。n = 3 啟用擴(kuò)展結(jié)果碼和忙音檢測(cè)。 禁用撥號(hào)音檢測(cè)。n = 4 啟用擴(kuò)展結(jié)果碼、撥號(hào)音檢測(cè)和忙音檢測(cè) (默認(rèn)設(shè)置)。n = 7 禁用擴(kuò)展結(jié)果碼; 啟用撥號(hào)音檢測(cè)和忙音檢測(cè)。Z恢復(fù)已保存的配置文件。 此命令指示調(diào)制解調(diào)器掛
18、斷并恢復(fù)由上一次 &W 命令保存的文件。 +換碼序列。在 S2 寄存器中的字符集連續(xù)三次快速發(fā)送至調(diào)制解調(diào)器 (參閱 S12 寄存器), 調(diào)制解調(diào)器轉(zhuǎn)換至命令狀態(tài)。 換碼字符的默認(rèn)值為 +。 在說明文檔指示您輸入 + 時(shí),連續(xù)三次在 S2 寄存器中快速輸入字符集。 請(qǐng)勿在換碼序列之前加上 AT 命令,并且輸入后不要按 Enter 鍵。 注:要返回在線狀態(tài),請(qǐng)使用 ATO 命令。 監(jiān)測(cè)中心PC機(jī)上軟件設(shè)計(jì)3.1用戶登錄功能的實(shí)現(xiàn)系統(tǒng)是按權(quán)限分級(jí)啟動(dòng)的實(shí)現(xiàn),其功能簡介如下,系統(tǒng)分為:接收啟動(dòng),該啟動(dòng)由點(diǎn)擊*.exe文件打開,然后點(diǎn)擊菜單中的接受數(shù)據(jù)按鈕,就能接受數(shù)據(jù),做出巡檢了。數(shù)據(jù)察看啟動(dòng),該啟
19、動(dòng)分為兩級(jí)權(quán)限,分別是系統(tǒng)管理員,可以對(duì)數(shù)據(jù)進(jìn)行察看、保存、刪除、打印等數(shù)據(jù)管理;一般用戶,只能察看數(shù)據(jù)。該啟動(dòng)的實(shí)現(xiàn)是通過點(diǎn)擊登錄系統(tǒng)按鈕,就會(huì)彈出登錄對(duì)話框,來實(shí)現(xiàn)權(quán)限判斷。運(yùn)行系統(tǒng)的關(guān)閉,只能由系統(tǒng)管理員執(zhí)行。下面詳細(xì)介紹一下實(shí)現(xiàn)權(quán)限判斷功能的主要窗口系統(tǒng)登錄對(duì)話框。它是通過在后臺(tái)建立一個(gè)用戶表.db,在界面中添加dataaccess中的datasource組件和BDE中的query組件,然后使用sql查詢語句來實(shí)現(xiàn)。使用sql的select語句查出用戶輸入的用戶名和密碼所對(duì)應(yīng)的那行紀(jì)錄,判斷查詢得到的紀(jì)錄(Query1.RecordCount)是否為零,如果為零,說明表中沒有用戶輸入所
20、對(duì)應(yīng)的紀(jì)錄,也就是用戶名或者密碼輸入錯(cuò)誤,這時(shí)點(diǎn)擊界面上的登錄按鈕,會(huì)出現(xiàn)一個(gè)錯(cuò)誤提示框,點(diǎn)錯(cuò)誤提示框上的確認(rèn)按鈕后,可在登錄對(duì)話框中重新輸入用戶名和密碼,如果不想登錄系統(tǒng)了,就可以點(diǎn)退出按鈕退出。如果查詢結(jié)果不為零,這時(shí)候就判斷查詢得到的紀(jì)錄的權(quán)限值(Query1.FieldByName (權(quán)限))是否為1,如果為1,就是管理員級(jí)別,那么就可以進(jìn)行系統(tǒng)管理和數(shù)據(jù)管理,對(duì)應(yīng)的一些操作按鈕就可操作(例:Form1.N20.Enabled:=true);如果不為1,對(duì)應(yīng)的系統(tǒng)管理和數(shù)據(jù)管理操作按鈕就不可操作(例:Form1.N20.Enabled:=false)。下面是登錄對(duì)話框的設(shè)計(jì)界面和用戶表
21、.db:以下是實(shí)現(xiàn)上述功能的程序流程圖啟動(dòng)管理員操作按鈕關(guān)閉管理員操作按鈕yes判斷查詢所得紀(jì)錄字段權(quán)限值是否為1yesno判斷查詢所得紀(jì)錄條數(shù)是否為0錯(cuò)誤提示確認(rèn)Sql語句查詢對(duì)應(yīng)紀(jì)錄得到查詢數(shù)據(jù)在登錄對(duì)話框內(nèi)輸入用戶名和密碼no啟動(dòng)管理員操作按鈕關(guān)閉管理員操作按鈕yes判斷查詢所得紀(jì)錄字段權(quán)限值是否為1yesno判斷查詢所得紀(jì)錄條數(shù)是否為0錯(cuò)誤提示確認(rèn)Sql語句查詢對(duì)應(yīng)紀(jì)錄得到查詢數(shù)據(jù)在登錄對(duì)話框內(nèi)輸入用戶名和密碼no3.2應(yīng)用程序中數(shù)據(jù)模塊的設(shè)計(jì)加入模塊化的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)既能減輕設(shè)計(jì)的復(fù)雜度又可使的軟件具有生命力,3.2.1數(shù)據(jù)庫表的建立、結(jié)構(gòu)及連接實(shí)現(xiàn)的方法系統(tǒng)使用的數(shù)據(jù)庫為delphi
22、 6自帶的desktop數(shù)據(jù)庫中的paradox表格*.db存儲(chǔ)數(shù)據(jù),包含了三個(gè)數(shù)據(jù)表:powerenvirment1.db存儲(chǔ)監(jiān)測(cè)的來的數(shù)據(jù)用來實(shí)時(shí)顯示,歷史數(shù)據(jù)查詢;powerenvirment2.db存儲(chǔ)的是事件開關(guān)值,該值是由串口接收到的p0口數(shù)據(jù),程序拆分后成為開關(guān)量值。該數(shù)據(jù)主要在主界面mome1欄中,以文字提示的樣式傳達(dá)信息;用戶表.db存儲(chǔ)用戶信息,服務(wù)登錄程序,另外,管理員可對(duì)用戶進(jìn)行管理,用戶可修改密碼。Historicdata1.db存儲(chǔ)事件顯示,該值通過對(duì)開關(guān)量的轉(zhuǎn)化,將具體事件發(fā)生時(shí)間地點(diǎn)存儲(chǔ)在表內(nèi),提供給memo欄顯示。各表的設(shè)計(jì)視圖如下:powerenvirmen
23、t1.db字段名字?jǐn)?shù)據(jù)類型長度說明測(cè)點(diǎn)文本6測(cè)點(diǎn)名稱日期日期/時(shí)間10時(shí)間日期/時(shí)間8溫度一數(shù)字4溫度二數(shù)字4溫度三數(shù)字4濕度一數(shù)字4濕度二數(shù)字4濕度三數(shù)字4電壓數(shù)字3電流數(shù)字2NumID自動(dòng)編號(hào)測(cè)點(diǎn)編號(hào)powerenvirment2.db表字段名字?jǐn)?shù)據(jù)類型長度說明測(cè)點(diǎn)文本6日期日期/時(shí)間10時(shí)間日期/時(shí)間8煙感一邏輯量1煙感二邏輯量1煙感三邏輯量1水浸一邏輯量1水浸二邏輯量1水浸三邏輯量1門禁一邏輯量1門禁二邏輯量1用戶表.db字段名字?jǐn)?shù)據(jù)類型長度說明用戶名文本10密碼字符8權(quán)限邏輯量登錄權(quán)限性別文本2Historicdata.db字段名字?jǐn)?shù)據(jù)類型長度說明測(cè)點(diǎn)文本6日期文本10時(shí)間文本8事件
24、文本8連接實(shí)現(xiàn)以上所提到的表格貫穿于整個(gè)軟件的使用。連接實(shí)現(xiàn)是利用數(shù)據(jù)訪問組件訪問數(shù)據(jù)庫中的數(shù)據(jù)記錄,利用數(shù)據(jù)控制組件實(shí)現(xiàn)對(duì)數(shù)據(jù)庫數(shù)據(jù)記錄的瀏覽和操作;通過SQL語句可以從關(guān)系數(shù)據(jù)庫中獲得數(shù)據(jù),可以建立數(shù)據(jù)庫、增加數(shù)據(jù)、修改數(shù)據(jù)。3.2.2實(shí)現(xiàn)監(jiān)測(cè)數(shù)據(jù)匯總管理、實(shí)時(shí)顯示、曲線繪制、報(bào)警等功能的軟件部分1、 概述 本部分程序用delphi 6 實(shí)現(xiàn),主要包括監(jiān)測(cè)數(shù)據(jù)的匯總管理、實(shí)時(shí)顯示、曲線繪制、報(bào)警等功能。根據(jù)功能程序主要分為自動(dòng)巡檢數(shù)據(jù)匯總顯示、人工察看數(shù)據(jù)、曲線繪制、數(shù)據(jù)管理四部分。 能實(shí)現(xiàn)介紹數(shù)據(jù)管理有查詢、打印預(yù)覽、打印、刪除四種功能,也是通過添加dataaccess中的datasou
25、rce組件和BDE中的query組件,然后使用sql查詢語句來實(shí)現(xiàn)。查詢數(shù)據(jù),使用sql查詢語句的select語句來實(shí)現(xiàn)。先要對(duì)數(shù)據(jù)流進(jìn)行處理,分析數(shù)據(jù)可以通過那幾種組合方式被查詢到。經(jīng)分析,有以下情況,用圖表表示: 全部歷史數(shù)據(jù)顯示 全部測(cè)點(diǎn)的歷史數(shù)據(jù)分類顯示(4種類型)歷史數(shù)據(jù) 全部類型的歷史數(shù)據(jù)分測(cè)點(diǎn)顯示(12個(gè)站點(diǎn)) 分站點(diǎn)分類型顯示 全部歷史事件顯示 全部測(cè)點(diǎn)的歷史事件分類顯示(5種類型)歷史事件 全部類型的歷史事件分測(cè)點(diǎn)顯示(12個(gè)站點(diǎn)) 分站點(diǎn)分類型顯示由圖表所示,根據(jù)數(shù)據(jù)流使用ifthen beginend;的并列語句實(shí)現(xiàn),具體程序見附錄源程序所示。刪除數(shù)據(jù),使用sql查詢語句
26、的delete語句來實(shí)現(xiàn)。刪除數(shù)據(jù)按鈕下后,會(huì)出現(xiàn)一個(gè)對(duì)話框提示哪些數(shù)據(jù)將被刪除,如果確定要?jiǎng)h除,就按下確定健,如果不想刪除,就按下取消健。這個(gè)對(duì)話框的組成是在窗體上添加兩個(gè)Tbutton控件和一個(gè)label控件(用來顯示提示內(nèi)容)。根據(jù)所選擇數(shù)據(jù),給label的Caption屬性賦值(提示哪些數(shù)據(jù)將被刪除)。點(diǎn)擊確定健時(shí),觸發(fā)click事件,在這個(gè)事件里定義了sql查詢語句的delete語句,刪除先前查詢時(shí)查出的所有數(shù)據(jù)。所選擇數(shù)據(jù)流控制也是使用ifthen beginend;的并列語句來控制。具體程序見附錄源程序。打印預(yù)覽、打印,是通過使用QuickRep實(shí)現(xiàn)。在數(shù)據(jù)管理窗口中添加Qrep
27、ort中的QuickRep組件,它是報(bào)表類顯示組件。建立QuickRep時(shí),設(shè)定好要顯示的表中數(shù)據(jù)字段,然后通過對(duì)QuickRep屬性欄中的datasource設(shè)置,使它連接上數(shù)據(jù)源組件,連接上數(shù)據(jù)。人工察看數(shù)據(jù)中包括了指定站點(diǎn)事件與數(shù)據(jù)察看,巡檢監(jiān)測(cè)站點(diǎn)溫濕度即時(shí)顯示(滑動(dòng)條顯示)和溫濕度歷史曲線顯示,以及事件報(bào)警指示燈顯示和系統(tǒng)時(shí)鐘顯示等六個(gè)分塊顯示欄(分別使用了Memo,DbGrid, RxSlider,AHMCauge,DBChart,AHMLed,AHMClock等組件)。實(shí)現(xiàn)也是通過添加dataaccess中的datasource組件和BDE中的query組件,然后使用sql查詢語
28、句來實(shí)現(xiàn)。在這里介紹一下Memo組件中顯示的內(nèi)容是怎樣通過使用數(shù)據(jù)查詢,存儲(chǔ),再調(diào)用來實(shí)現(xiàn)的。首先,因?yàn)樵贛emo組件中顯示的內(nèi)容是連續(xù)的字符串,而不是從串口接受的P0數(shù)據(jù)拆分成的開關(guān)量,所以需要將開關(guān)量具體化。開關(guān)量為1,說明有事件發(fā)生,若為0則沒有事件發(fā)生。此時(shí)要對(duì)為1的情況進(jìn)行處理,即建立表格(historicdata.db)存儲(chǔ)事件說明。通過select語句得到事件說明紀(jì)錄,將其的事件字段內(nèi)容賦值給memo3.Lines.Add()。這樣事件內(nèi)容、發(fā)生時(shí)間、地點(diǎn)都能顯示出來了。3、軟件開發(fā)時(shí)應(yīng)用的delphi組件介紹數(shù)據(jù)庫組件本部分程序使用DataSource、Table、Query、
29、DBGrid、DBChart等數(shù)據(jù)庫組件實(shí)現(xiàn)對(duì)監(jiān)測(cè)數(shù)據(jù)的查詢顯示和溫濕度曲線的繪制。下買你對(duì)這些數(shù)據(jù)庫組件使用的概略講述: Delphi6為開發(fā)數(shù)據(jù)庫應(yīng)用程序提供了許多組件,設(shè)計(jì)時(shí)使用了這些組件中的三類,分別是數(shù)據(jù)庫的數(shù)據(jù)訪問組件(Data Access類組件),數(shù)據(jù)庫的數(shù)據(jù)控制組件(Data Control類組件)及數(shù)據(jù)庫的數(shù)據(jù)文件組件(BDE類組件)。這些組件分別在組件板的Data Access、Data Control及BDE選項(xiàng)卡上。Data Access類組件負(fù)責(zé)和BDE進(jìn)行數(shù)據(jù)交換,它首先通過BDE將數(shù)據(jù)庫文件的數(shù)據(jù)提供給應(yīng)用程序,最后將被修改過的數(shù)據(jù)經(jīng)BDE傳送到數(shù)據(jù)庫文件中。其
30、中和BDE直接打交道的DataSource組件。Delphi用于程序通過數(shù)據(jù)庫引擎(Borland Database Engine, BDE )來處理數(shù)據(jù)。BDE實(shí)際是由幾個(gè)DLL模塊構(gòu)成,它們負(fù)責(zé)處理數(shù)據(jù)庫工作的核心部分。在Delphi 中,數(shù)據(jù)庫應(yīng)用程序必須建立與數(shù)據(jù)庫的聯(lián)系,在Delphi中通過數(shù)據(jù)庫引擎BDE來完成這個(gè)工作。所有數(shù)據(jù)庫存取的程序,都必須通過B D E 來完成。BDE是Delphi數(shù)據(jù)庫功能的核心部分,是連接應(yīng)用程序和數(shù)據(jù)庫的橋梁。Delphi通過BDE來控制讀取本地?cái)?shù)據(jù)庫,Delphi自帶的dBase和paradox 無需安裝,這對(duì)于開發(fā)小型系統(tǒng)是非常有利的,同時(shí)BDE
31、還能通過其他工具訪問遠(yuǎn)程數(shù)據(jù)庫。DataSourse聯(lián)系TTable,Tquery,TStoredProc組件與數(shù)據(jù)控制組件例如TDBGrid.的紐帶。主要通過屬性中的Dataset項(xiàng)設(shè)置連接TTable,Tquery,TStoredProc組件。Table通過BDE從一個(gè)數(shù)據(jù)庫表格中取得數(shù)據(jù)并通過TDataSource組件將數(shù)據(jù)傳遞給一個(gè)或多個(gè)數(shù)據(jù)控制組件。而且,將從數(shù)據(jù)控制組件處得到的信息通過BDE傳遞給數(shù)據(jù)庫。Table的基本屬性如下:Active指明一個(gè)數(shù)據(jù)集是否處于打開狀態(tài);DatabaseName表明數(shù)據(jù)集聯(lián)系的數(shù)據(jù)庫名;Fields指向數(shù)據(jù)集的字段列表;Name該組件在被其他組件
32、引用時(shí)的名字;RecordCount顯示與數(shù)據(jù)集相連的記錄的總數(shù);TableName指明該組件指向的數(shù)據(jù)庫表格的名字;其中DatabaseName 屬性是用來說明當(dāng)前數(shù)據(jù)集的來源,即應(yīng)用程序所利用的數(shù)據(jù)庫的名字。它可以是BDE定義的數(shù)據(jù)庫別名,如;也可以是數(shù)據(jù)庫文件,像Paradox和dBASE等文件所在的路徑;還可以是由TDataBase組件定義的數(shù)據(jù)庫名。應(yīng)用最多的還是用BDE定義的數(shù)據(jù)庫別名。因?yàn)檫@樣可以避免在應(yīng)用程序所操作的數(shù)據(jù)庫發(fā)生變化時(shí)修改整個(gè)應(yīng)用程序,而只需重新設(shè)置一下BDE定義的數(shù)據(jù)庫別名即可。通常在設(shè)計(jì)設(shè)置階段這一屬性。在設(shè)計(jì)階段,只要雙擊Tdatabase組件就可以激活數(shù)據(jù)
33、庫編輯器(Database editor)來設(shè)定DatabaseName。注意:更改數(shù)據(jù)集前,表格必須先被關(guān)閉。TableStyle屬性是用來說明當(dāng)前應(yīng)用程序所操作的數(shù)據(jù)庫表格的類型,在對(duì)象觀察器中該屬性框有一個(gè)下拉列表,可以用來確定數(shù)據(jù)庫文件的類型。用代碼編輯時(shí),其格式為:TTableType=(ttDefault,ttParadox,ttDBase,ttASCII,ttFoxPro).其中,ttParadox對(duì)應(yīng)Paradox表;ttASCII對(duì)應(yīng)ASCII表;ttdBase對(duì)應(yīng)dBase表;ttFoxPro對(duì)應(yīng)FoxPro表。當(dāng)該屬性設(shè)置為默認(rèn)值ttDefault時(shí),它對(duì)應(yīng)的數(shù)據(jù)庫表格類
34、型由文件的擴(kuò)展名決定。擴(kuò)展名為.DB或沒有擴(kuò)展名的文件表示是Paradox表,擴(kuò)展名為.T X T的文件表示是ASCII表,擴(kuò)展名為.DBF的文件表示是dBASE表。如果TableType屬性值設(shè)定為ttParadox、ttDBase、ttFoxPro或ttASCII的話,表格的類型將被視為是確定的,而不管此表格文件的擴(kuò)展名是什么。TableName也是TTable最重要的屬性之一。它是用來說明這個(gè)TTable組件所對(duì)應(yīng)的是數(shù)據(jù)庫中的哪一張數(shù)據(jù)庫表格。它和DataBaseName一樣是在設(shè)計(jì)階段給定的,在DataBaseName設(shè)定后給出。一般DataBaseName設(shè)定后,如果有符合將打開表
35、格的文件格式(TableStyle)的,會(huì)自動(dòng)在TableName的屬性框中生成一個(gè)下拉列表,包含所有符合該文件格式的數(shù)據(jù)庫文件。注意設(shè)定TableName屬性值時(shí),Active屬性值一定要設(shè)為False。Active屬性是用來說明數(shù)據(jù)庫文件的打開狀態(tài)。應(yīng)用Active屬性來決定及設(shè)定一個(gè)數(shù)據(jù)集組件與數(shù)據(jù)庫數(shù)據(jù)之間的聯(lián)系。它的屬性值是用一個(gè)布爾數(shù)(Ture/False)來表示的。當(dāng)Active屬性值為Ture時(shí),表明數(shù)據(jù)集是打開的,數(shù)據(jù)集組件可以對(duì)數(shù)據(jù)庫進(jìn)行讀寫操作;反之,表示數(shù)據(jù)集是關(guān)閉的,數(shù)據(jù)集組件不能從數(shù)據(jù)庫讀取數(shù)據(jù),也不能向數(shù)據(jù)庫中寫數(shù)據(jù)??梢酝ㄟ^下列方法設(shè)置Active屬性為True
36、: 觸發(fā)數(shù)據(jù)集的BeforeOpen 事件 設(shè)置數(shù)據(jù)集的狀態(tài)為dsBrowse 在數(shù)據(jù)集中打開一個(gè)BDE記錄指針 觸發(fā)數(shù)據(jù)集的After Open事件如果在文件打開過程中發(fā)生了錯(cuò)誤,此時(shí)數(shù)據(jù)集的狀態(tài)將會(huì)被設(shè)置成dsInactive,同時(shí)記錄指針會(huì)被關(guān)閉。應(yīng)用程序在改變其他影響數(shù)據(jù)庫狀態(tài)或在應(yīng)用程序中顯示數(shù)據(jù)的控件狀態(tài)的屬性之前必須將Active屬性設(shè)置為False。注意用Open 和Close 方法對(duì)數(shù)據(jù)庫文件操作的效果與改變Active 屬性的效果是一樣的。調(diào)用Open 方法會(huì)將Active 屬性值設(shè)為True ;調(diào)用Close 方法會(huì)將Active 屬性值設(shè)為False 。以上四種屬性在創(chuàng)
37、建一個(gè)TTable組件時(shí)是必不可少的,也是最基本的。這些屬性值的設(shè)定可以通過對(duì)象觀察器,也可以在程序代碼中實(shí)現(xiàn)。需要說明的是,在屬性值DataBaseName和TableName發(fā)生改變時(shí),Active屬性值會(huì)自動(dòng)變?yōu)镕alse,所以必須將它改成Ture。另外,F(xiàn)ields屬性是用來指出數(shù)據(jù)集的字段列表。應(yīng)用Fields屬性可以訪問數(shù)據(jù)庫表格中的字段組合。如果字段是在運(yùn)行時(shí)動(dòng)態(tài)產(chǎn)生的,那么,F(xiàn)ields屬性中字段組合的順序直接與數(shù)據(jù)集表格中的列的順序相一致。如果數(shù)據(jù)集應(yīng)用的是持續(xù)性字段,那么,字段組合的順序與設(shè)計(jì)階段在字段編輯器中設(shè)定的字段順序相一致。對(duì)于用戶來說,利用Fields屬性查字段是
38、非常有用的,因?yàn)椋?可以重溫?cái)?shù)據(jù)集的部分或全部字段 可以對(duì)運(yùn)行時(shí)內(nèi)部數(shù)據(jù)結(jié)構(gòu)未知的隱藏表格進(jìn)行操作如果用戶知道獨(dú)立字段的數(shù)據(jù)類型,那么他就可以通過Fields屬性對(duì)字段進(jìn)行讀或?qū)懙牟僮?。下面是設(shè)置一個(gè)Edit box 中Text屬性的字段值和讀取一個(gè)edit box 中Text屬性的字段值的例子。Edit1.Text:=CustTable.Fields.Fields6.AsString; /設(shè)置CustTable.Edit;/讀取CustTable.Fields.Fields6.AsString :=Edit1.Text;CustTable.Post;注意讀取和設(shè)置字段值的最佳方案是應(yīng)用持續(xù)性
39、字段或FieldByName 方法。Query通過BDE,應(yīng)用SQL 語句從一個(gè)數(shù)據(jù)庫表格中取得數(shù)據(jù)并通過TDataSource 組件將數(shù)據(jù)傳遞給一個(gè)或多個(gè)數(shù)據(jù)控制組件。而且,應(yīng)用SQL語句將從數(shù)據(jù)控制組件處得到的信息通過BDE傳遞給數(shù)據(jù)庫。TQuery是一個(gè)建立在SQL基礎(chǔ)上,專門用于對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢的組件。TQuery組件使用SQL語言,可以一次訪問數(shù)據(jù)庫中的一個(gè)或多個(gè)表格。TQuery組件訪問的表格可以是在遠(yuǎn)程服務(wù)器的數(shù)據(jù)庫中(例如:Sybase、SQL Server 、Oracle、Informix、DB2和InterBase),也可以是當(dāng)?shù)氐谋砀瘢ɡ纾篜aradox、dBA
40、SE、Access和FoxPro),還可以是ODBC-從屬數(shù)據(jù)庫。另外,TQuery在開發(fā)范圍可變的數(shù)據(jù)庫應(yīng)用程序中顯得尤為重要。TQuery組件的重要性體現(xiàn)在: 可同時(shí)訪問多張表格自動(dòng)訪問基本表格的子集,而不是訪問所有的數(shù)據(jù)TQuery組件和TTable組件同屬于數(shù)據(jù)集組件,它們有著許多相似的地方,但有各自特殊的地方。TQuery組件的特有屬性:DataSource指明引入當(dāng)前字段值的data source 組件;Params包含了用SQL語句查詢的參數(shù)性質(zhì);SQL設(shè)置執(zhí)行查詢所需的SQL語句下面詳細(xì)介紹TQuery組件的幾個(gè)重要屬性:SQL屬性是TQuery組件最重要的屬性之一,它是用來設(shè)
41、置在TQuery組件調(diào)用ExecSQL或Open方法執(zhí)行查詢時(shí)所需的選擇條件的。在設(shè)計(jì)階段,可以通過單擊對(duì)象觀察器中的SQL屬性欄激活String List editor 窗口,然后在該窗口中編輯SQL語句。除了在String List editor 窗口中編輯SQL語句可以設(shè)置SQL屬性以外,SQL屬性也可以在運(yùn)行時(shí)動(dòng)態(tài)的設(shè)置,看下面的一個(gè)例子:Query1.Close;Query1.SQL.Clear;Query1.SQL.Add(Delete from Country where Name = America);Query1.Open;從例子里不難看出,SQL屬性是一個(gè)Tstrings對(duì)
42、象。如果要在代碼中實(shí)現(xiàn)對(duì)SQL屬性的設(shè)置,必須按以下步驟:1) 調(diào)用TQuery 的Close方法關(guān)閉TQuery對(duì)象。2) 調(diào)用Tstrings的Clear方法清除TQuery中的SQL屬性值。3) 調(diào)用Tstrings的Add方法向TQuery的SQL屬性中添加SQL語句。4) 調(diào)用TQuery 的Open方法或者ExecSQL方法恢復(fù)TQuery對(duì)象的打開狀態(tài)。另外,Client/Server應(yīng)用程序開發(fā)者還可以通過激活Visual Query Builder窗口來設(shè)置SQL屬性值。DataSource屬性設(shè)置DataSource屬性可以自動(dòng)地將另一個(gè)數(shù)據(jù)集的字段值賦給當(dāng)前查詢的參數(shù),但
43、這些參數(shù)必須具有與該數(shù)據(jù)集相同的字段名。如果不同名,就不能自動(dòng)地賦值,而必須為其編制程序。例如,在TQuery 組件的SQL屬性中設(shè)置了以下語句,并且通過DataSource指向的數(shù)據(jù)集含有一個(gè)Country字段,其他數(shù)據(jù)集就可以利用Country 參數(shù)來得到該值。SELECT * FROM Orders O WHERE (O.Country =:Country)DataSource 屬性必須是指向一個(gè)鏈接另一個(gè)數(shù)據(jù)集的TdataSource組件。DataSource 屬性可以在運(yùn)行時(shí)設(shè)定,也可以在設(shè)計(jì)階段通過對(duì)象觀察器在該屬性欄的下拉列表中選擇適當(dāng)?shù)腡DataSource 組件名。如果TQu
44、ery中的SQL語句應(yīng)用的是SELECT查詢,查詢?cè)谥赶蛄硪粩?shù)據(jù)集的記錄指針發(fā)生改變時(shí)會(huì)使用新的字段值,而不必每次調(diào)用TQuery 的Open方法。這就使利用DataSource屬性動(dòng)態(tài)的過濾查詢結(jié)果在建立主從關(guān)系時(shí)顯得尤為重要,我們可以將從屬數(shù)據(jù)集的DataSource屬性設(shè)置為主數(shù)據(jù)集的TDataSource組件名。如果SQL語句中使用的不是SELECT查詢,而是INSERT或UPDATE,與另一數(shù)據(jù)集同字段名的參數(shù)仍然會(huì)被賦值。但當(dāng)記錄指針每次發(fā)生改變時(shí),查詢必須加以聲明。例如,一個(gè)SQL語句中使用了INSERT并含有參數(shù)City和CompanyName:INSERT INTO Citi
45、es(City Company)VALUES (:CityName,:CountryName )另一個(gè)數(shù)據(jù)集Query2和DataSource2,含有CityName字段但沒有CountryName字段。如果是通過DataSource屬性應(yīng)用該數(shù)據(jù)集的,那么,CountryName參數(shù)必須通過編制下面的程序來獲得字段值。with Query1 do beginDataSource := DataSource1;ParamByName(CountryName).AsString:=Edit1.Text;Prepare;ExecSQL;end;Params屬性的基本格式如下:Property Pa
46、ramsIndex: Word TParams;在運(yùn)行時(shí)可以訪問Params來動(dòng)態(tài)地觀察和設(shè)置參數(shù)名、參數(shù)值和數(shù)據(jù)類型,在設(shè)計(jì)階段可以通過編輯Params屬性來設(shè)置參數(shù)的形式。從Params屬性的格式易知,Params參數(shù)值是Tparams參數(shù)記錄的數(shù)組。在SELECT 語句中使用Parameters屬性不能為NULL,但在UPDATE和INSERT 語句中可以。注意另一種在知道每個(gè)參數(shù)名時(shí)設(shè)置和獲得參數(shù)值的簡便方法是調(diào)用ParamByName方法。但ParamByName 方法不能用來更改參數(shù)的數(shù)據(jù)類型和參數(shù)名。檢查ParamCount的值可以知道Params屬性中有多少參數(shù)。如果Param
47、Check屬性值為True,則ParamCount與SQL查詢語句中的實(shí)際參數(shù)數(shù)目對(duì)應(yīng)。應(yīng)用程序?qū)arams屬性的操作,例如,增添或刪除參數(shù),會(huì)自動(dòng)地反映在ParamCount中。AHMLed組件AHMLed組件是用來形象表示監(jiān)測(cè)站和監(jiān)測(cè)站傳感器的分布情況,另外被用作報(bào)警指示燈。默認(rèn)時(shí)AHMLed組件的幾個(gè)重要屬性的設(shè)置為LedisOn=False,LedOnColor=clRed、LedOffColor=clGreen、Interval=200、Blinking=False,即默認(rèn)時(shí)指示燈出、處在關(guān)閉狀態(tài)、關(guān)閉時(shí)顏色為綠色、打開時(shí)顏色為紅色時(shí)間間隔為200毫秒、不閃爍。當(dāng)測(cè)點(diǎn)的測(cè)值超標(biāo)時(shí),
48、對(duì)應(yīng)的傳感器指示燈為打開狀態(tài)LedisOn=True、閃爍Blinking=False,此時(shí)指示燈就紅綠交替閃爍表示報(bào)警。當(dāng)指示燈對(duì)應(yīng)測(cè)點(diǎn)的測(cè)值正常時(shí)指示燈設(shè)置為默認(rèn)狀態(tài)。RxSlider組RxSlider組件用來形象地表示一個(gè)溫度計(jì),幾個(gè)用到的重要組件屬性設(shè)置如下:MaxValue=100表示溫度計(jì)的最大刻度為100度、Value=0表示溫度值為0、RxSlider3.Options:=soShowFocus,soShowPoints,soSmooth,soRulerOpaque,soThumbOpaque設(shè)置溫度計(jì)刻度背景為粉紅色表示溫度超標(biāo)。、AHMCauge組件AHMCauge組件用來
49、形象地表示濕度的百分比,主要用到兩個(gè)屬性 Percentage和InsideBackColor。Percentage屬性的值表示濕度百分比的值,如Percentage=30表示濕度百分比為30%。InsideBackColor表示濕度百分比顯示的背景色,當(dāng)InsideBackColor=clRed時(shí)表示濕度超標(biāo),當(dāng)InsideBackColor=clWhite時(shí)表示濕度正常。3.3 Modem串口通信程序編制隨著現(xiàn)代信息技術(shù)的發(fā)展以及計(jì)算機(jī)網(wǎng)絡(luò)的廣泛使用,計(jì)算機(jī)通信技術(shù)已經(jīng)日臻成熟,但串行通信作為一種靈活方便可靠的通信方式,仍不失為有效的通信手段,被廣泛應(yīng)用于工業(yè)控制中。在工業(yè)生產(chǎn)實(shí)踐中,用P
50、C機(jī)對(duì)工程實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,通常要求PC機(jī)能在用戶界面上具有數(shù)據(jù)采集、數(shù)據(jù)處理以及控制信號(hào)的產(chǎn)生與傳輸?shù)裙δ?。在這種特定的環(huán)境下,PC機(jī)要與過程控制的實(shí)時(shí)信號(hào)相聯(lián)系,就要求能實(shí)現(xiàn)對(duì)PC機(jī)的串行端口直接操作。本系統(tǒng)就是用Delphi來實(shí)現(xiàn)PC機(jī)與下層PLC控制器之間的串口通信接收數(shù)據(jù)。Windows操作系統(tǒng)的機(jī)制禁止應(yīng)用程序直接訪問計(jì)算機(jī)硬件,但它為程序員提供了一系列的標(biāo)準(zhǔn)API函數(shù),使得應(yīng)用程序的編制更加方便并且免除了對(duì)有關(guān)硬件的調(diào)試麻煩。在Windows95/NT中,原來Windows3.X的WM_COMMNOTIFY消息已被取消,操作系統(tǒng)為每個(gè)通信設(shè)備開辟了用戶可定義大小的讀/寫緩沖區(qū),數(shù)據(jù)進(jìn)
51、出通信口均由操作系統(tǒng)后臺(tái)完成,應(yīng)用程序只需對(duì)讀/寫緩沖區(qū)操作即可。WIN95/NT中幾個(gè)常用的串行通信操作函數(shù)如下:CreatFile:打開串行口CloseHandle:關(guān)閉串行口SetupComm:設(shè)置通信緩沖區(qū)的大小ReadFile :讀串口操作WriteFile:寫串口操作SetCommState :設(shè)置通信參數(shù)GetCommState :獲取默認(rèn)通信參數(shù)ClearCommErro:r清除串口錯(cuò)誤并獲取當(dāng)前狀態(tài)在串行通信程序設(shè)計(jì)中主要分為兩部分,一是通信設(shè)備資源(串行口)的設(shè)置,包括打開、關(guān)閉及串口參數(shù)設(shè)置等;二是通信事件的處理。設(shè)置通信設(shè)備資源首先要打開串口(如COM1、COM2等)并
52、獲得該串口的當(dāng)前參數(shù)設(shè)置(DCB結(jié)構(gòu)),通過修改DCB結(jié)構(gòu)成員的值來設(shè)置該串口在應(yīng)用程序中需要的結(jié)構(gòu)參數(shù)。處理通信事件,串口通信事件中較常用的有:CVRXCHAR: 接收到一個(gè)字符并放入接收隊(duì)列中;CVRING:電話線路振鈴指示;CVERR: 串口通信出錯(cuò);CVTXEMPTY:發(fā)送隊(duì)列空。在通信線程中首先設(shè)置程序必須要響應(yīng)的通信事件,然后調(diào)用WaitCommEvent() 來處理。串行通信中的數(shù)據(jù)讀/寫,在基于事件驅(qū)動(dòng)的串行通信處理過程中,當(dāng)沒有通信事件發(fā)生時(shí),線程進(jìn)入等待狀態(tài)而使用極少的CPU周期,直到通信事件發(fā)生使WaitCommEvent()從操作系統(tǒng)中返回。讀操作在通信事件EVRXCH
53、AR發(fā)生后進(jìn)行,寫操作在EVTXEMPTY發(fā)生后進(jìn)行,分別使用ReadFile()和WriteFile()函數(shù)完成。監(jiān)測(cè)中心PC機(jī)上軟件使用簡述4.1 界面簡介、登錄界面運(yùn)行程序后進(jìn)入程序登錄界面,此時(shí),系統(tǒng)已打開,處于運(yùn)行接收數(shù)據(jù)狀態(tài),每隔10秒程序?qū)z測(cè)一次最新巡檢的監(jiān)測(cè)點(diǎn)的監(jiān)測(cè)數(shù)據(jù)。界面上是一幅杭州市城區(qū)地圖,上面分布這個(gè)各監(jiān)測(cè)點(diǎn),各監(jiān)測(cè)點(diǎn)指示燈為黑色。在界面上能觀察到被監(jiān)測(cè)點(diǎn)的指示燈亮起綠色的燈,表示指示燈所在監(jiān)測(cè)點(diǎn)處在被巡檢狀態(tài)。如果有監(jiān)測(cè)數(shù)據(jù)超標(biāo),此監(jiān)測(cè)點(diǎn)的指示燈會(huì)由綠色變?yōu)榧t黃色交替閃爍,直到管理員發(fā)現(xiàn)并處理過后,變?yōu)楹谏?,不再閃爍。同時(shí),如果設(shè)置了報(bào)警聲音,將有報(bào)警聲響起。界面
54、如下圖所示:、程序主界面通過登錄界面上的登錄按鈕,輸入正確的login口令,就進(jìn)入了程序主界面。程序主界面由上到下分別為菜單欄、快捷工具欄和與登錄界面一樣的測(cè)點(diǎn)分布圖。此界面與登錄界面不同的是,可以在本界面內(nèi)進(jìn)行系統(tǒng)管理和查詢等工作,并且,雙擊指示燈時(shí)能察看該測(cè)點(diǎn)的監(jiān)測(cè)數(shù)據(jù)值。界面上有一個(gè)memo控件,是用來即時(shí)顯示事件紀(jì)錄的。只要有超標(biāo)事件發(fā)生,立刻能在memo欄中顯示出具體在何時(shí)何地發(fā)生了什么事件。點(diǎn)擊菜單欄和工具欄中的相應(yīng)選項(xiàng)可進(jìn)行自動(dòng)顯示數(shù)據(jù)、手工察看數(shù)據(jù)和監(jiān)測(cè)點(diǎn)分布三狀態(tài)的切換,同時(shí)還可進(jìn)行監(jiān)測(cè)數(shù)據(jù)的管理(包括查詢、打印、刪除數(shù)據(jù),備份數(shù)據(jù)等)、曲線設(shè)置、設(shè)置報(bào)警聲音、溫濕度范圍設(shè)置
55、、用戶設(shè)置、隱藏主界面、退出主界面等。界面如下圖所示:4.2 自動(dòng)顯示數(shù)據(jù)簡介點(diǎn)擊主界面菜單欄文件中的“自動(dòng)顯示”或工具欄中的“自動(dòng)”都可進(jìn)入自動(dòng)察看數(shù)據(jù)狀態(tài),界面如下所示:4.3 設(shè)置警示聲音在主界面菜單欄設(shè)置重點(diǎn)擊“聲音設(shè)置:就會(huì)進(jìn)入設(shè)置竟是聲音界面,如下圖在聲音設(shè)置中有無聲音警告和有聲音警告兩種選擇。當(dāng)選擇設(shè)置聲音警告時(shí),需在文件路徑對(duì)話框種指明聲音文件及路徑,可以點(diǎn)幾測(cè)試按鈕測(cè)試選擇的聲音。無論做出那種選擇,點(diǎn)擊確定按鈕后完成設(shè)置。4.4 人工察看數(shù)據(jù)簡介 點(diǎn)擊主界面菜單欄文件中的“人工察看”或工具欄中的“察看”都可進(jìn)入人工察看數(shù)據(jù)狀態(tài)。其界面如下所示:通過工具欄里的ComboBox控
56、件選擇要察看的地點(diǎn)進(jìn)行人工察看數(shù)據(jù)。能觀察到點(diǎn)擊了要察看的地點(diǎn)后,memo欄中就顯示出該地點(diǎn)中發(fā)生的所有歷史事件,DbGrid中顯示該地點(diǎn)的所有歷史數(shù)據(jù),DbChard顯示該地點(diǎn)的歷史溫度曲線。與此同時(shí),e1,e2,e3顯示即時(shí)的溫度值,s1,s2,s3顯示即時(shí)得濕度值,而最右下角的煙感、水浸、門禁的指示燈顯示即時(shí)的是否有超標(biāo)事件發(fā)生。4.5 事件發(fā)生時(shí)的處理當(dāng)事件發(fā)生時(shí),如果設(shè)置了報(bào)警聲音,就會(huì)有報(bào)警聲發(fā)出。同時(shí),可通過指示燈來觀察事件發(fā)生與否。如果事件發(fā)生了,首先,有三個(gè)地方可以知道,登陸界面分布圖、程序主界面分布圖、人工察看界面的最右下角(煙感、水浸、門禁指示燈)處都能發(fā)現(xiàn)指示燈在紅黃交
57、替的閃爍或紅燈亮起。在人工察看界面的最右下角點(diǎn)擊phone標(biāo)志的button,回到程序主界面分布圖,觀察到是那個(gè)站點(diǎn)發(fā)生事件。再點(diǎn)擊程序主界面分布圖上紅黃交替閃爍的指示燈一下,告知軟件已經(jīng)排除故障。4.6 數(shù)據(jù)管理 在主界面菜單欄設(shè)置中點(diǎn)擊“數(shù)據(jù)管理”就會(huì)進(jìn)入數(shù)據(jù)管理界面,如下圖所示:查詢數(shù)據(jù)在窗口上邊的下拉編輯框中分別選擇監(jiān)測(cè)站名稱、數(shù)據(jù)類型、開始結(jié)束時(shí)間、測(cè)點(diǎn)類型登查詢條件后,點(diǎn)擊確定按鈕擊可在中間的表格中列出要查詢的數(shù)據(jù)。就時(shí)間條件加以詳述:當(dāng)要查詢一段時(shí)間內(nèi)的數(shù)據(jù)時(shí),開始結(jié)束時(shí)間編輯框內(nèi)都需添入日期;當(dāng)要查詢某一日期以后的數(shù)據(jù)時(shí),只需在開始時(shí)間編輯框內(nèi)添如此日期即可;當(dāng)要查詢某一日起以
58、前的數(shù)據(jù)時(shí),只需在結(jié)束時(shí)間編輯框內(nèi)添入次日日期即可。打印數(shù)據(jù)按查詢數(shù)據(jù)的步驟將要打印的數(shù)據(jù)查詢出來后,點(diǎn)擊數(shù)據(jù)表格下邊的打印按鈕,就會(huì)進(jìn)入打印預(yù)覽界面。點(diǎn)擊打印預(yù)覽上邊的打印機(jī)圖標(biāo),要打印的數(shù)據(jù)就能打印出來了。數(shù)據(jù)刪除按查詢數(shù)據(jù)的步驟將要?jiǎng)h除的數(shù)據(jù)查詢出來后,點(diǎn)擊數(shù)據(jù)表格下邊的刪除按鈕,就將彈出如下所示的刪除提示界面:點(diǎn)擊取消按鈕后將取消刪除操作,如果點(diǎn)擊確定按鈕將會(huì)刪除提示對(duì)話框內(nèi)所提示的數(shù)據(jù)。注意:刪除數(shù)據(jù)只能按日期刪除。參考文獻(xiàn)1、趙立平,張治,趙陽編著 DELPHI數(shù)據(jù)庫應(yīng)用程序開發(fā)技術(shù)機(jī)械出版社2、張育榮,曾彥賀編著 Delphi:從入門到精通電腦報(bào)出版社3、(美).沃茲涅維茨,N.
59、沙馬斯著DELPHI程序員指南 機(jī)械出版社4、肖永順 劉韜 李生海 黃軍萬 黃亮 編著 Delphi程序設(shè)計(jì) 人民郵電出版社5、RS-232和調(diào)制解調(diào)器高級(jí)通信編程人民郵電出版社6、李朝青 編著 PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù)北京航空航天大學(xué)岀版結(jié)束語 歷時(shí)三個(gè)月的畢業(yè)設(shè)計(jì)即將結(jié)束,三個(gè)月內(nèi)在指導(dǎo)老師的悉心指導(dǎo)下基本上完成畢業(yè)設(shè)計(jì)內(nèi)容。在設(shè)計(jì)過程中使我認(rèn)識(shí)到嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度在實(shí)際工作中的重要性,粗心大意就等于走彎路。同時(shí)畢業(yè)設(shè)計(jì)培養(yǎng)了我獨(dú)立處理解決設(shè)計(jì)軟件的能力,系統(tǒng)學(xué)習(xí)了軟件Delphi6.0的使用及Modem串口通信編程等知識(shí);鞏固了單片機(jī)及微機(jī)原理等專業(yè)知識(shí);并且通過查閱相關(guān)資料擴(kuò)大了知識(shí)面。
60、 不足之處是由于去公司實(shí)習(xí)的原因,未能實(shí)現(xiàn)要求的全部軟件的功能;同時(shí)由于本人的水平有限,設(shè)計(jì)中不足之處在所難免,請(qǐng)各位老師指正。 最后感謝我的導(dǎo)師張小明老師和紀(jì)春波同學(xué),在我畢業(yè)設(shè)計(jì)期間不厭其煩的指導(dǎo);同時(shí)感謝在大學(xué)四年為培養(yǎng)我們而付出辛勤汗水的所以老師們!附:英文資料Developing database applicationsConnecting to databases Overview Most dataset components can connect directly to a database server. Once connected, the dataset commu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 班主任心理健康與壓力管理的培訓(xùn)總結(jié)
- 公交掃惡除霸承諾書范本
- 2025-2030全球船用防火窗行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國運(yùn)動(dòng)刺激療法行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國矩形橋式起重機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球便攜式鼻腔沖洗器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球農(nóng)用氧化亞銅行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國鋼制螺旋錐齒輪行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國戶外電氣箱行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球軸承精密滾珠行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 蛋糕店服務(wù)員勞動(dòng)合同
- 土地買賣合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專題一-微專題10-同構(gòu)函數(shù)問題-專項(xiàng)訓(xùn)練【含答案】
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 2024-2030年中國烘焙食品行業(yè)運(yùn)營效益及營銷前景預(yù)測(cè)報(bào)告
- 2025年上半年水利部長江水利委員會(huì)事業(yè)單位招聘68人(湖北武漢)重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 寧德時(shí)代筆試題庫
- 五年級(jí)下冊(cè)北京版英語單詞
- 康復(fù)醫(yī)院患者隱私保護(hù)管理制度
- 新課標(biāo)I、Ⅱ卷 (2024-2020) 近五年高考英語真題滿分作文
- 浙江省嘉興市2023-2024學(xué)年六年級(jí)(上)期末數(shù)學(xué)試卷
評(píng)論
0/150
提交評(píng)論