畢業(yè)設(shè)計(jì)(論文)-c++ sql對(duì)摩托底盤(pán)測(cè)功機(jī)上位機(jī)進(jìn)行編程_第1頁(yè)
已閱讀1頁(yè),還剩56頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  本次畢業(yè)設(shè)計(jì)的主要內(nèi)容是對(duì)摩托底盤(pán)測(cè)功機(jī)上位機(jī)進(jìn)行編程,以實(shí)現(xiàn)測(cè)試數(shù)據(jù)的采集,處理,存儲(chǔ),以及對(duì)測(cè)試過(guò)程的監(jiān)視和控制。</p><p>  圍繞著該目的,本文首先概述了整個(gè)系統(tǒng)的基本組成,然后說(shuō)明討論了編程語(yǔ)言及開(kāi)發(fā)工具的選擇,界面的設(shè)計(jì),數(shù)據(jù)的收集,處理,存儲(chǔ)及上下位之間的通訊等問(wèn)題。</p&g

2、t;<p>  經(jīng)過(guò)實(shí)際現(xiàn)場(chǎng)測(cè)試調(diào)整,該程序?qū)崿F(xiàn)了設(shè)計(jì)要求,圓滿的完成了畢業(yè)設(shè)計(jì)的預(yù)期任務(wù),鍛煉了我參與科研設(shè)計(jì)開(kāi)發(fā)的能力,積累了寶貴經(jīng)驗(yàn),為今后的工作打下了基礎(chǔ)。</p><p>  關(guān)鍵詞:C++,SQL,串口通訊</p><p><b>  ABSTRACT</b></p><p>  The main task of th

3、is graduation design is the programming on the host computer of autocycle chassis dynamometer in order to collect, dispose and save test data and to over-look and control the test.</p><p>  Around this task,

4、 this paper first summarizes the basic structure of the whole system and then explains the selection of the developing tool, the design of the interface, the collection, disposal and storage of the data, and the communic

5、ation between host computer and affiliated computer .</p><p>  After the test and adjustment, the program has achieved its requirement and fulfilled the task of graduation design successfully. Through this e

6、xercise, I accumulated much precious experience and all this will do well to my subsequent research .</p><p><b>  目 錄</b></p><p>  摘要 ……………………………………………………………………….1</p><p&

7、gt;  第1章 緒論 ……………………………………………………………...5</p><p>  1摩托車底盤(pán)測(cè)功機(jī) ……………………………………………5</p><p>  2本次畢業(yè)設(shè)計(jì)的任務(wù)和意義 …………………………………6</p><p>  第2章:系統(tǒng)組成概述…………………………………………………….9</p><p>

8、  2.1 上位軟件的組成 …………………………………………… 9</p><p>  2.2 測(cè)試項(xiàng)目說(shuō)明 ………………………………………………10</p><p>  2.3 編程語(yǔ)言及開(kāi)發(fā)工具 ………………………………………17</p><p>  第3章 軟件界面 ………………………………………………………..20</p><

9、;p>  3.1 軟件界面的組成 ……………………………………………20</p><p>  3.2 基本數(shù)據(jù)輸入及測(cè)試管理 ………………………………… 20</p><p>  3.3 測(cè)試控制 ……………………………………………………22</p><p>  3.4 司機(jī)助手 ……………………………………………………25</p>

10、<p>  3.5 道路阻力設(shè)定器 ……………………………………………27</p><p>  3.6 工況模型 ……………………………………………………28</p><p>  第4章 數(shù)據(jù)庫(kù) …………………………………………………………..30</p><p>  4.1 工作簡(jiǎn)介 ……………………………………………………30<

11、/p><p>  4.2 數(shù)據(jù)庫(kù)簡(jiǎn)介 …………………………………………………30</p><p>  4.3 嵌入式SQL ………………………………………………….32</p><p>  4.4 在應(yīng)用程序中使用數(shù)據(jù)庫(kù) …………………………………..33</p><p>  第5章 上下位通訊 ………………………………………………

12、………42</p><p>  5.1 上下位通訊的要求 ……………………………………………42</p><p>  5.2 串口通訊簡(jiǎn)介 ………………………………………………...42</p><p>  5.3 Windows下的 上位機(jī)串口通訊 ……………………………...53</p><p>  5.4 通訊協(xié)議 …

13、…………………………………………………….50</p><p>  第6章 總結(jié) ………………………………………………………………54</p><p>  致謝 ………………………………………………………………… 55參考文獻(xiàn) …………………………………………………………….. 55</p><p><b>  第1章 緒論</b>&l

14、t;/p><p><b>  1摩托車底盤(pán)測(cè)功機(jī)</b></p><p>  傳統(tǒng)的摩托車測(cè)試是基于實(shí)際道路的,即摩托車在專用試車場(chǎng)的測(cè)試</p><p>  道路上行駛測(cè)試。這種方法需要建立較大規(guī)模,要求嚴(yán)格的測(cè)試場(chǎng)地,因而成本很高。此外,該方法也常常受限于惡劣天氣及夜晚等。同時(shí),限于安全性的影響,某些測(cè)試項(xiàng)目,如最高車速等,也不易進(jìn)行。<

15、/p><p>  針對(duì)以上問(wèn)題,隨著機(jī)電拖動(dòng)設(shè)備的發(fā)展,近幾十年中發(fā)展出了以拖動(dòng)設(shè)備模擬實(shí)際道路行駛,以臺(tái)架測(cè)試代替路面測(cè)試的摩托車底盤(pán)測(cè)功機(jī)。這使得測(cè)試可以在臺(tái)架上廠房?jī)?nèi)隨時(shí)進(jìn)行而不受天氣等外界因素影響,也極大的節(jié)約了資金,受到了摩托車廠商的歡迎,也就進(jìn)一步促進(jìn)該種設(shè)備的進(jìn)一步發(fā)展。</p><p>  底盤(pán)測(cè)功機(jī)的機(jī)械部分主要由測(cè)功機(jī),轉(zhuǎn)鼓,慣性飛輪構(gòu)成。測(cè)功機(jī)可以是電渦流測(cè)功機(jī),直流電力

16、測(cè)功機(jī),交流電力測(cè)功機(jī)。電力測(cè)功機(jī)具有優(yōu)良的轉(zhuǎn)速轉(zhuǎn)矩特性和高昂的價(jià)格。從摩托車行業(yè)來(lái)看,八十年代引進(jìn)的國(guó)外的電力測(cè)功機(jī)都是直流機(jī)。九十年代后期交流測(cè)功機(jī)開(kāi)始進(jìn)入中國(guó),從我們了解的情況來(lái)看,測(cè)功機(jī)領(lǐng)域交流機(jī)越來(lái)越多,直流機(jī)越來(lái)越少。因此,本項(xiàng)目打算越過(guò)直流機(jī)直接開(kāi)始交流機(jī)的開(kāi)發(fā)。</p><p>  1.2 摩托車底盤(pán)測(cè)功機(jī)系統(tǒng)組成</p><p>  下圖為摩托車底盤(pán)測(cè)功機(jī)的系統(tǒng)組成圖。&

17、lt;/p><p>  該系統(tǒng)主要可分為以下幾部分:</p><p>  上位機(jī)部分,硬件包括工控機(jī),兩臺(tái)用分屏卡連接的CRT,PCL-818L,PCL-746+,ADAM4080,ADAM4018等。軟件包括上位機(jī)軟件及司機(jī)助手。</p><p>  實(shí)現(xiàn)該部分是本次畢業(yè)設(shè)計(jì)的主要任務(wù)。</p><p><b>  控制臺(tái)</b

18、></p><p><b>  PLC</b></p><p><b>  變頻器</b></p><p><b>  信號(hào)調(diào)理</b></p><p>  1.3本次畢業(yè)設(shè)計(jì)的任務(wù)和意義</p><p>  交流底盤(pán)測(cè)功機(jī)是進(jìn)行車輛性能試驗(yàn)的專用

19、設(shè)備,基本上依賴進(jìn)口,國(guó)內(nèi)開(kāi)發(fā)成套設(shè)備的單位還很少。本項(xiàng)目是“交流底盤(pán)測(cè)功機(jī)的研制”這一橫向課題的一部分工作,具有實(shí)際意義,向該產(chǎn)品國(guó)產(chǎn)化目標(biāo)邁進(jìn)了一大步。</p><p>  司機(jī)助手是一個(gè)幫助和引導(dǎo)駕駛員在受試摩托車上駕駛車輛進(jìn)行各種測(cè)試項(xiàng)目的軟件。</p><p>  主控程序包括現(xiàn)場(chǎng)采集數(shù)據(jù)的顯示,打印和報(bào)表以及道路阻力設(shè)定器給出的有關(guān)摩托車參數(shù)的記錄,存儲(chǔ)等功能。</p&g

20、t;<p><b>  具體任務(wù)包括:</b></p><p>  熟悉和了解交流底盤(pán)測(cè)功機(jī)的結(jié)構(gòu),原理和電控系統(tǒng)的設(shè)計(jì)方案;</p><p>  熟悉摩托車測(cè)試項(xiàng)目的大致過(guò)程;</p><p>  設(shè)計(jì)司機(jī)助手軟件的框架,并完成代碼編寫(xiě),調(diào)試;</p><p>  用組態(tài)工具組態(tài)和繪制部分主控程序,要求界

21、面良好;</p><p>  在上述基礎(chǔ)上完成畢業(yè)設(shè)計(jì)論文;</p><p>  翻譯相關(guān)的英文資料。</p><p>  第2章 上位軟件組成概述</p><p><b>  2.1上軟件的組成</b></p><p>  上位軟件主要包括了人機(jī)交互界面,數(shù)據(jù)管理和上下位通訊三大部分。如圖:&l

22、t;/p><p>  圖2. 1 上位軟件組成示意圖</p><p>  交互界面:在正常工作情況下,測(cè)試員通過(guò)上位機(jī)對(duì)整個(gè)測(cè)試進(jìn)行監(jiān)控,管理。因此,上位軟件需要一個(gè)友好的,易于掌握的交互界面以方便測(cè)試人員。</p><p>  此外,為便于駕駛員了解測(cè)試情況,接收測(cè)試員下達(dá)的測(cè)試命令,上位機(jī)還需要同時(shí)為駕駛員提供另一界面,即司機(jī)助手。鑒于駕駛員僅僅接收信息和指令,該

23、界面為只讀,即駕駛員不能控制上位機(jī)和測(cè)試。</p><p>  數(shù)據(jù)管理:測(cè)試將產(chǎn)生大量原始數(shù)據(jù),上位機(jī)需要接收,處理和存儲(chǔ)這些信息,因此上位軟件需要完善的數(shù)據(jù)管理機(jī)制以完成以上要求。本次上位軟件以數(shù)據(jù)庫(kù)為核心進(jìn)行數(shù)據(jù)管理。</p><p>  上下位機(jī)通訊:摩托車測(cè)功機(jī)系統(tǒng)中,上位機(jī)提供了人機(jī)界面,用以監(jiān)控測(cè)試,收集整理數(shù)據(jù)等,而下位機(jī)通過(guò)PLC,傳感器等控制測(cè)功機(jī)的電氣硬件部分并采集時(shí)

24、間速度等數(shù)據(jù),因而上下位機(jī)之間需要相互通訊以完成命令,數(shù)據(jù)的交流。</p><p><b>  2測(cè)項(xiàng)目說(shuō)明</b></p><p>  摩托車底盤(pán)測(cè)功機(jī)需要實(shí)現(xiàn)十個(gè)測(cè)試項(xiàng)目,分別是: </p><p><b>  1)起步加速</b></p><p>  按照國(guó)家標(biāo)準(zhǔn)GB/T5385-94要

25、求的定距測(cè)量時(shí):底盤(pán)測(cè)功機(jī)處于模擬道路工作狀態(tài),在控制臺(tái)上設(shè)定加速測(cè)試距離S(輕便摩托車為100m,摩托車為200m),受試摩托車怠速狀態(tài)從最低檔起步0.5m后,控制臺(tái)開(kāi)始測(cè)量以最佳換檔車速順序換檔,加速行駛,直至最高檔,經(jīng)過(guò)加速測(cè)試距離S的時(shí)間為t。為了能繪制S-t,a-t關(guān)系圖,應(yīng)在實(shí)驗(yàn)區(qū)間內(nèi)設(shè)置數(shù)個(gè)測(cè)試數(shù)據(jù)采集點(diǎn)。按下式計(jì)算始點(diǎn)到各測(cè)點(diǎn)的平均加速度:</p><p>  …………………………2. 1<

26、/p><p>  ----始點(diǎn)到各測(cè)點(diǎn)的距離;</p><p>  ----從始點(diǎn)到各測(cè)點(diǎn)所經(jīng)過(guò)的時(shí)間。</p><p><b>  2)超越加速</b></p><p>  a.按照國(guó)家標(biāo)準(zhǔn)GB/T5385-94要求的定距測(cè)量時(shí):底盤(pán)測(cè)功機(jī)處于模擬道路工作狀態(tài),在控制臺(tái)上設(shè)定加速測(cè)試距離S(輕便摩托車為100m,摩托車為2

27、00m),受試摩托車用最高檔行駛至規(guī)定初速度時(shí)(摩托車為301km/h,輕便摩托車為202km/h)突加油門(mén),同時(shí)開(kāi)始測(cè)量經(jīng)過(guò)測(cè)試距離S的時(shí)間t并記錄初速度。為了能繪制S-t,a-t關(guān)系圖,應(yīng)在實(shí)驗(yàn)區(qū)間內(nèi)設(shè)置數(shù)個(gè)測(cè)試數(shù)據(jù)采集點(diǎn)。按下式計(jì)算始點(diǎn)到各測(cè)點(diǎn)的平均加速度:</p><p>  a=………………2. 2</p><p><b>  v----初速度</b><

28、;/p><p>  S----始點(diǎn)到各測(cè)點(diǎn)的距離</p><p>  t----從始點(diǎn)到各測(cè)點(diǎn)所經(jīng)過(guò)的時(shí)間。</p><p>  速測(cè)量時(shí):底盤(pán)測(cè)功機(jī)處于模擬道路工作狀態(tài),在控制臺(tái)上任意設(shè)定初速</p><p>  度和末速度(10-150km/h),測(cè)量受試摩托車用最高檔從設(shè)定的初速度加速行駛至末速度所需的時(shí)間。</p><

29、p>  3)滑行(國(guó)標(biāo)GB/T5386-94)</p><p>  滑行速度的測(cè)定:底盤(pán)測(cè)功機(jī)處于模擬道路工作狀態(tài),受試摩托車達(dá)到規(guī)定的車速時(shí)(摩托車為401km/h,輕便摩托車為301km/h),離合器完全脫開(kāi),掛空檔,測(cè)試從此開(kāi)始到滾輪完全停止轉(zhuǎn)動(dòng)間的距離S。</p><p>  滑行阻力系數(shù)的測(cè)定:滑行開(kāi)始的初速度保證受試車通過(guò)100m測(cè)試區(qū)間的時(shí)間為202s,測(cè)量從初速度到滾

30、輪經(jīng)過(guò)50m,100m的時(shí)間t1,t2.滑行減速度b和滑行阻力系數(shù)f計(jì)算公式如下:</p><p>  b=………………………2. 3</p><p>  ……………………………2. 4</p><p>  最高車速(國(guó)標(biāo)GB/T5384-1996)</p><p>  底盤(pán)測(cè)功機(jī)處于模擬道路工作狀態(tài),設(shè)定的測(cè)試區(qū)間距離為200m,受試車達(dá)到

31、最高車速穩(wěn)定后,開(kāi)始測(cè)量其通過(guò)200m的時(shí)間。計(jì)算公式如下:</p><p>  V=s/t ……………………………2. 5</p><p>  速表里程表校核( 國(guó)標(biāo)GB/T5376-1996,GB/T7258-1997)</p><p><b>  a.速度表校核:</b></p><p>  底盤(pán)測(cè)功機(jī)處于ASR工

32、作狀態(tài),將受試摩托車前輪安置在滾輪上,由底盤(pán)測(cè)功機(jī)拖動(dòng)摩托車,使其車速表的指示值穩(wěn)定為V,讀取此時(shí)等于滾輪線速度的實(shí)際車速Vs。用此方法還應(yīng)可測(cè)其它數(shù)點(diǎn)的車速校核值。修正率公式為:</p><p>  Cv=Vs/V …………………………2. 6</p><p><b>  b.里程表校核:</b></p><p>  底盤(pán)測(cè)功機(jī)處于ASR工作

33、狀態(tài),將受試摩托車前輪安置在滾輪上,由底盤(pán)測(cè)功機(jī)拖動(dòng)摩托車,測(cè)定受試摩托車?yán)锍瘫砥鹬乖黾又礢和滾輪轉(zhuǎn)過(guò)的實(shí)際距離Ss,修正率C的計(jì)算公式如下:</p><p>  C=Ss/S ……………………………2. 7</p><p>  燃油消耗(國(guó)標(biāo)GB/T16486-1996)</p><p>  底盤(pán)測(cè)功機(jī)處于模擬道路工作狀態(tài),設(shè)定測(cè)試區(qū)間距離S(摩托車為1000m,

34、輕便摩托車為600m),受試摩托車按試驗(yàn)要求的車速運(yùn)行,保持穩(wěn)定后開(kāi)始測(cè)量摩托車在此車速下勻速通過(guò)設(shè)定的測(cè)試距離所消耗的燃油。記錄的數(shù)據(jù)有:通過(guò)測(cè)試區(qū)間的時(shí)間t和燃油消耗量G0。需計(jì)算出如下量:</p><p>  實(shí)際車速V: V=S/t</p><p>  汽油消耗量: 非混合燃油時(shí),G=G0/S</p><p>  混合燃油時(shí), G=MG0/(S*(M+1

35、))</p><p>  其中,M為汽油與潤(rùn)滑油的容積混合比,最后根據(jù)試驗(yàn)數(shù)據(jù)繪制曲線。</p><p>  爬坡能力(國(guó)標(biāo)GB/T5387-94)</p><p><b>  最大爬坡能力: </b></p><p>  底盤(pán)測(cè)功機(jī)處于模擬道路工作狀態(tài),在底盤(pán)測(cè)功機(jī)上設(shè)定受試摩托車模擬爬坡試驗(yàn)時(shí)的坡度阻力F,由下式確

36、定:</p><p>  F=mg*sinβ …………………………2. 8</p><p>  其中,m為摩托車的總質(zhì)量(包括駕駛員和加載質(zhì)量), β為模擬坡道的坡度角。</p><p>  所模擬的測(cè)試區(qū)間如下圖所示:</p><p><b>  圖2. 1</b></p><p>  摩托

37、車用最低檔并加載規(guī)定質(zhì)量,以合適的初速度行駛,開(kāi)始試驗(yàn)。試驗(yàn)臺(tái)將設(shè)定的相當(dāng)于F的阻力作用于滾輪上,分別測(cè)定經(jīng)過(guò)測(cè)試區(qū)間前10m和后10m的時(shí)間t1和t2。</p><p>  若t1<t2, 則最大爬坡角度大于 β;</p><p>  若t1=t2,則最大爬坡角度等于β;</p><p>  若t1>t2,則最大爬坡角度小于β。</p>

38、<p>  在改變質(zhì)量或檔位的情況下,按下式計(jì)算等效爬坡角度:</p><p>  α=arcsin((Ws/W)(isinβ/is)) ……………2. 9</p><p>  其中,α為爬坡角度,Ws為受試車實(shí)際總質(zhì)量,W為受試車規(guī)定總質(zhì)量,i為受試車最低檔變速比,is為試驗(yàn)時(shí)使用檔變速比,β為試驗(yàn)坡道角度</p><p><b>  爬長(zhǎng)坡試

39、驗(yàn)</b></p><p>  與最大爬坡角度測(cè)試不同的是模擬測(cè)試區(qū)間的距離S不同,此試驗(yàn)一般設(shè)定為1500m。需要測(cè)定初速度V0和經(jīng)過(guò)S的時(shí)間。計(jì)算出爬長(zhǎng)坡工程中的平均速度:</p><p>  V=S/t …………………………2. 10</p><p>  由發(fā)動(dòng)機(jī)試驗(yàn)狀況及V與V0兩值的大小比較,決定是否繼續(xù)試驗(yàn)。</p><p

40、><b>  后輪出力</b></p><p>  底盤(pán)測(cè)功機(jī)處于ASR工作狀態(tài),將摩托車后輪(驅(qū)動(dòng)輪)置于轉(zhuǎn)鼓上,夾持車輛。由底盤(pán)測(cè)功機(jī)調(diào)節(jié)速度到一定值,加摩托車油門(mén)至全開(kāi),穩(wěn)定后可記錄下后輪輸出的功率,扭距,發(fā)動(dòng)機(jī)轉(zhuǎn)速,車速等。改變速度后,再做同樣的測(cè)量,這樣可作出一組數(shù)據(jù)。根據(jù)這樣一組試驗(yàn)數(shù)據(jù),繪制功率-車速,扭距-車速圖等。</p><p>  工況排放

41、(國(guó)標(biāo)GB/T14622-93)</p><p>  進(jìn)行工況排放測(cè)試,還需另行配置排氣分析儀。</p><p><b>  自由模式</b></p><p>  用戶自定實(shí)驗(yàn)方式,為用戶提供測(cè)試開(kāi)始及停止控制方式。</p><p>  11)司機(jī)助手CRT在不同測(cè)量項(xiàng)目中的提示</p><p>

42、  起步加速:車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、測(cè)量開(kāi)始后的時(shí)間和行駛距離。</p><p>  超越加速:車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、測(cè)量開(kāi)始后的時(shí)間和行駛距離。</p><p>  最高車速:車速、測(cè)量開(kāi)始后的時(shí)間和行駛距離。</p><p>  車速和里程表校核:車速、測(cè)量開(kāi)始后的行駛距離。</p><p>  滑行:車速、測(cè)量開(kāi)始后的行駛距離。</p&g

43、t;<p>  油耗:等速油耗:車速、測(cè)量開(kāi)始后的行駛距離。</p><p>  工況油耗:行駛工況、超差警示、超差次數(shù)積累及時(shí)間。</p><p>  爬坡:車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、前十米和后十米的行駛時(shí)間。</p><p>  后輪出力:車速、驅(qū)動(dòng)力和輸出功率。</p><p>  工況排放:行駛工況、超差警示、超差次數(shù)積累及時(shí)間

44、。</p><p>  自由模式:坡道角度、車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速。</p><p>  所有的測(cè)量項(xiàng)目中,火花塞座溫、機(jī)油溫度、冷卻液溫度、排氣溫度應(yīng)可選,測(cè)量開(kāi)始和結(jié)束狀態(tài)都應(yīng)有提示,行駛距離采用圖形方式提示。</p><p>  此外,爬長(zhǎng)坡實(shí)驗(yàn)時(shí)間是受試摩托車在模擬平坦路面下行駛,達(dá)到設(shè)定的初速度后開(kāi)始,測(cè)定初速度,開(kāi)始計(jì)時(shí)、計(jì)距。</p><

45、p>  2.3編程語(yǔ)言及開(kāi)發(fā)工具</p><p>  由上位軟件的要求可以看出,該軟件規(guī)模較大,數(shù)據(jù)量多,結(jié)構(gòu)較復(fù)雜,且有相當(dāng)代碼可重用。針對(duì)以上特點(diǎn),選擇了C++作為上位軟件的編程語(yǔ)言。</p><p><b>  C++簡(jiǎn)介:</b></p><p>  C++是一種面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programmi

46、ng――簡(jiǎn)稱OOP)語(yǔ)言。</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì)既吸取了結(jié)構(gòu)化程序設(shè)計(jì)的一切優(yōu)點(diǎn),又考慮了現(xiàn)實(shí)世界與面相對(duì)象解空間的映射關(guān)系,它所追求的目標(biāo)是將現(xiàn)實(shí)世界的問(wèn)題求解盡可能簡(jiǎn)單化。</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)及對(duì)數(shù)據(jù)的操作放在一起,作為一個(gè)相互依存,不可分割的整體來(lái)處理,它采用數(shù)據(jù)抽象和信息隱藏技術(shù)。它將對(duì)象及對(duì)對(duì)象的操作抽象成一種新的數(shù)據(jù)類型――類,并考慮不同

47、對(duì)象之間的聯(lián)系和對(duì)象類的重用性。</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì)較之傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì),優(yōu)越性表現(xiàn)在,它有希望解決軟件工程的兩個(gè)主要問(wèn)題――軟件復(fù)雜性控制和軟件生產(chǎn)率的提高。</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì)能支持的軟件開(kāi)發(fā)策略有:</p><p><b>  編寫(xiě)可重用代碼</b></p><p><

48、b>  編寫(xiě)可維護(hù)的代碼</b></p><p><b>  共享代碼</b></p><p><b>  精化已有代碼</b></p><p>  在80年代,C語(yǔ)言成為一種及其流行,應(yīng)用非常廣泛的語(yǔ)言。C++是在C語(yǔ)言的基礎(chǔ)上進(jìn)行擴(kuò)展,并加入了對(duì)象機(jī)制。C++以其高效的執(zhí)行贏得了廣大程序設(shè)計(jì)者的喜愛(ài),

49、在C++中提供了對(duì)傳統(tǒng)語(yǔ)言C的向后兼容性,因此,很多已有的程序稍加修改就可重用,許多有效的算法也可以重新利用。它是一種混合型的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,由于它的出現(xiàn),才使面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言越來(lái)越得到重視和廣泛的應(yīng)用。</p><p><b>  編譯器的選擇</b></p><p>  常用的C++編譯器有MS-C++, Turbo C++, Borland C++,

50、 Visual C++ 及Borland C++ Builder等。其中MS-C++, Turbo C++ 應(yīng)用于DOS環(huán)境下,不適合于Windows下的程序開(kāi)發(fā)。Borland C++ 和Visual C++分別基于OWL和MFC類庫(kù)進(jìn)行Windows下的程序開(kāi)發(fā),雖然功能強(qiáng)大,但所依賴的類庫(kù)非常復(fù)雜,學(xué)習(xí)和熟悉都相當(dāng)不易,從而導(dǎo)致了開(kāi)發(fā)周期長(zhǎng),效率底等問(wèn)題,不適合于開(kāi)發(fā)這類上層軟件。</p><p>  而B(niǎo)

51、orland公司的Borland C++ Builder則成功地解決了以上問(wèn)題,成為了一種劃時(shí)代的C++開(kāi)發(fā)工具。它結(jié)合了Borland C++ 和Delphi的優(yōu)點(diǎn),將可視化開(kāi)發(fā)環(huán)境,開(kāi)發(fā)工具和可視組件加入到C++語(yǔ)言中,實(shí)現(xiàn)了真正的面向?qū)ο蟮拈_(kāi)發(fā)。</p><p>  與其他工具相比,C++Builder具有以下優(yōu)點(diǎn):</p><p>  C++Builder是一個(gè)可視化的快速應(yīng)用程序

52、開(kāi)發(fā)工具,具有高效,最優(yōu)化的源代碼編譯器,可視化的快速應(yīng)用程序開(kāi)發(fā)環(huán)境和可擴(kuò)展的數(shù)據(jù)庫(kù)技術(shù),適合各類可視化程序開(kāi)發(fā)。</p><p>  因?yàn)樗褂玫某绦蛘Z(yǔ)言是C++,所以是一個(gè)面向?qū)ο蟮恼Z(yǔ)言,具有靈活,自由,簡(jiǎn)潔,高效的特點(diǎn),由于Windows自身是用C語(yǔ)言編寫(xiě),所以C++可直接調(diào)用Windows API,另外,還增強(qiáng)了異常處理能力和類的封裝能力及特性。</p><p>  C++Bui

53、lder具有完整的基于組件設(shè)計(jì)與可視化的開(kāi)發(fā)環(huán)境,提供了所有可視組件對(duì)象的完整代碼,可以讓程序設(shè)計(jì)人員很快產(chǎn)生程序原型及用戶界面,實(shí)現(xiàn)代碼的重用。</p><p>  擁有獨(dú)立,高效的編譯技術(shù),執(zhí)行文件EXE或DLL都與Windows的操作環(huán)境無(wú)關(guān),支持多語(yǔ)言開(kāi)發(fā)代碼,對(duì)于Power Builder,Visual Basic,Borland C++,Visual C++和Delphi代碼都可以重新編譯利用。<

54、;/p><p>  有強(qiáng)大的數(shù)據(jù)庫(kù)支持能力,提供了存取dBase或FoxPro數(shù)據(jù)庫(kù)數(shù)據(jù)的能力。提供了Client/Server支持,可以輕松自如地開(kāi)發(fā)客戶/服務(wù)器程序。</p><p>  C++ Builder提供擴(kuò)展的ActiveX支持及VCL增強(qiáng)功能。</p><p>  C++ Builder提供了與微軟產(chǎn)品的兼容性,可以很容易地將微軟Visual C++ 的

55、項(xiàng)目轉(zhuǎn)換為C++ Builder的項(xiàng)目。</p><p><b>  第3章 軟件界面</b></p><p><b>  3.1界面組成</b></p><p>  上位機(jī)軟件界面主要由以下幾部分組成:基本數(shù)據(jù)輸入及測(cè)試管理,測(cè)試控制,司機(jī)助手,道路阻力設(shè)定器,工況模型。如圖:</p><p>&

56、lt;b>  圖3. 1</b></p><p>  以下各節(jié)將分別介紹軟件界面的各個(gè)組成部分。</p><p>  3.2基本數(shù)據(jù)輸入及測(cè)試管理</p><p>  該窗口主要用于輸入測(cè)試所用的各種基本數(shù)據(jù),包括試驗(yàn)參數(shù)(主要有試驗(yàn)編號(hào),試驗(yàn)日期,試驗(yàn)員,駕駛員等),整車參數(shù)(主要有車輛編號(hào),生產(chǎn)廠家,車重,長(zhǎng)寬高等)以及發(fā)動(dòng)機(jī)參數(shù)(主要有發(fā)動(dòng)機(jī)

57、編號(hào),發(fā)動(dòng)機(jī)生產(chǎn)廠家,燃油型號(hào),潤(rùn)滑油型號(hào)等)。這些數(shù)據(jù)均由廠家提供輸入并存入數(shù)據(jù)庫(kù)以備后用。</p><p>  此外,該窗體還用于對(duì)測(cè)試進(jìn)行整體管理,包括建立一新測(cè)試,繼續(xù)前次測(cè)試以及刪除無(wú)效測(cè)試等。如下圖:</p><p>  圖3. 2 基本數(shù)據(jù)輸入及測(cè)試</p><p>  窗體上的快捷鍵用于對(duì)測(cè)試進(jìn)行管理,其具體說(shuō)明如下:</p><

58、;p>  建立新測(cè)試:用以建立并準(zhǔn)備一次新的測(cè)試。首先關(guān)閉并保存上一次測(cè)試,然后清空數(shù)據(jù)輸入欄,并自動(dòng)填入時(shí)間日期等默認(rèn)值。</p><p>  開(kāi)始新測(cè)試:正式開(kāi)始一次測(cè)試。填入的基本數(shù)據(jù)將被存入數(shù)據(jù)庫(kù)并進(jìn)行一定的合法性判斷。然后初始化各測(cè)試項(xiàng)目以準(zhǔn)備測(cè)試。</p><p>  保存基本數(shù)據(jù):用以保存輸入的基本測(cè)試數(shù)據(jù)。</p><p>  保存所有數(shù)據(jù):用

59、以保存基本測(cè)試數(shù)據(jù)及所有測(cè)試項(xiàng)目的測(cè)試數(shù)據(jù)。</p><p>  繼續(xù)以前的測(cè)試:用以完成或修改以前的某次測(cè)試。</p><p>  刪除:將某次測(cè)試及其數(shù)據(jù)從數(shù)據(jù)庫(kù)中刪除。</p><p><b>  3.3測(cè)試控制</b></p><p>  在基本數(shù)據(jù)輸入及測(cè)試管理窗口正確輸入完畢所需數(shù)據(jù)后,即可開(kāi)始各個(gè)測(cè)試項(xiàng)目的

60、測(cè)試。</p><p>  為方便用戶學(xué)習(xí)使用本軟件,也由于各測(cè)試項(xiàng)目的流程基本一致,多數(shù)(除工況排放外)項(xiàng)目的測(cè)試控制窗口在風(fēng)格布局上均一致,故以下以起步加速為例介紹這些窗口。如圖:</p><p>  快捷鍵有1)保存,用于將測(cè)試結(jié)果存入數(shù)據(jù)庫(kù)。2)打印,用于打印出測(cè)試結(jié)果。</p><p>  窗口由以下幾部分組成:</p><p> 

61、 3) 設(shè)置測(cè)試條件:根據(jù)不同測(cè)試項(xiàng)目的不同要求,設(shè)置測(cè)試距離,初速度,末速度等。由于要求不同,各監(jiān)控窗口該部分界面也有所不同。</p><p>  開(kāi)始及結(jié)束按鈕:測(cè)試未開(kāi)始時(shí)為綠色,按下后開(kāi)始起步加速測(cè)試,同時(shí)按鈕變?yōu)榧t色,可隨時(shí)按下以強(qiáng)制停止測(cè)試。當(dāng)測(cè)試結(jié)束時(shí)(強(qiáng)制或正常結(jié)束)變綠,可以開(kāi)始下一次測(cè)試。</p><p>  即時(shí)數(shù)據(jù)顯示:顯示車速,發(fā)動(dòng)機(jī)轉(zhuǎn)速,火花塞溫度等即時(shí)數(shù)據(jù)以供

62、測(cè)試員監(jiān)測(cè)。</p><p>  試驗(yàn)結(jié)果顯示:在表格中顯示測(cè)試結(jié)果。</p><p>  一個(gè)典型的測(cè)試過(guò)程為:</p><p>  設(shè)置測(cè)試條件,如起步加速中需要設(shè)置測(cè)試距離。</p><p>  開(kāi)始測(cè)試,按動(dòng)開(kāi)始按鈕,摩托車開(kāi)始起步,同時(shí)顯示速度,行駛距離等即時(shí)數(shù)據(jù)。當(dāng)摩托車達(dá)到初始條件(如一定的初速度,或行駛過(guò)一定距離)后,上位機(jī)開(kāi)

63、始記錄并處理測(cè)試數(shù)據(jù)。</p><p>  在測(cè)試過(guò)程中,測(cè)試員可以通過(guò)所顯示的即時(shí)數(shù)據(jù)了解測(cè)試進(jìn)程。當(dāng)測(cè)試出現(xiàn)問(wèn)題時(shí),測(cè)試員可按動(dòng)停止按鈕強(qiáng)制停止測(cè)試。</p><p>  當(dāng)摩托車達(dá)到一定結(jié)束條件(如行駛完一定距離,或達(dá)到一定速度)時(shí),測(cè)試自動(dòng)結(jié)束。上位機(jī)對(duì)記錄的數(shù)據(jù)進(jìn)行計(jì)算處理后,顯示在表格中。</p><p>  按照一定條件,可以手工或由軟件自動(dòng)刪除表格中

64、的不合格數(shù)據(jù)。合格數(shù)據(jù)將被存入數(shù)據(jù)庫(kù),也可以打印出結(jié)果。</p><p>  工況排放與其他測(cè)試項(xiàng)目有所不同,故其測(cè)試窗口也有所不同,以下單獨(dú)介紹,如圖:</p><p>  圖3. 4 工礦排放測(cè)試窗口</p><p>  設(shè)置測(cè)試條件:設(shè)置摩托車測(cè)試循環(huán)次數(shù)及測(cè)試所使用的工況模型。</p><p>  顯示剩余循環(huán)次數(shù)及當(dāng)前測(cè)試剩余時(shí)間

65、。</p><p><b>  即時(shí)數(shù)據(jù)顯示。</b></p><p><b>  測(cè)試結(jié)果顯示。</b></p><p>  摩托車行駛路線顯示。用于顯示設(shè)定行駛路線和摩托車的實(shí)際行駛路線。</p><p>  出差,入差統(tǒng)計(jì)。出差指摩托車行駛過(guò)程中車速超過(guò)了限定的誤差范圍,入差指回歸誤差范圍以內(nèi)

66、。出差與入差影響到工況排放數(shù)據(jù)的有效性,因此需要統(tǒng)計(jì)。</p><p>  在工況排放測(cè)試中,摩托車要沿著給定的速度,時(shí)間曲線(即工況模型)加減速,因而測(cè)試人員要隨時(shí)掌握車輛相對(duì)于給定路線的行駛情況,故工況排放測(cè)試窗口除了一般窗口所具有的控件外,還加入了行駛路線顯示和出,入差統(tǒng)計(jì)。</p><p><b>  3.4司機(jī)助手</b></p><p&

67、gt;  為方便駕駛員及時(shí)了解測(cè)試狀況,接受測(cè)試員發(fā)出的命令,在駕駛員面前也有一臺(tái)CRT,隨時(shí)將車速,發(fā)動(dòng)機(jī)轉(zhuǎn)速,及指令等顯示給駕駛員。為使駕駛員清楚了解測(cè)試狀況,司機(jī)助手僅顯示少量重要信息,并盡量以較大的圖形文字顯示。不同測(cè)試項(xiàng)目的司機(jī)助手在風(fēng)格布局方面也相似(除工況排放),故僅以起步加速為例進(jìn)行介紹。</p><p>  圖3. 5 司機(jī)助手(起步加速)</p><p>  鑒于司機(jī)

68、主要關(guān)心的是車速和發(fā)動(dòng)機(jī)轉(zhuǎn)速,司機(jī)助手以兩個(gè)較大的虛擬指針式儀表顯示。</p><p>  此外,司機(jī)助手以虛擬溫度記的形式分別顯示火花塞溫度,機(jī)油溫度,冷卻液溫度和排氣溫度,如圖中3號(hào)部分。</p><p>  1號(hào)部分用以顯示測(cè)試進(jìn)程。在起步加速中顯示的是行駛路程。</p><p><b>  測(cè)試指令由2顯示。</b></p>

69、<p>  在工況排放中,司機(jī)需要根據(jù)工況模型駕駛,因此其司機(jī)助手也不同于其他測(cè)試項(xiàng)目,如圖:</p><p>  圖3. 6 司機(jī)助手(工礦排放)</p><p>  行駛路線顯示:以動(dòng)畫(huà)的形式顯示既定行駛路線和摩托車的實(shí)際行駛狀況。橫軸為速度,縱軸為時(shí)間。紅色實(shí)心線為既定行駛路線,兩側(cè)的黃色虛線為行駛車速最大偏差。以圖標(biāo)代表摩托車,其后的藍(lán)線為摩托車的實(shí)際行駛路線。&l

70、t;/p><p><b>  車速表</b></p><p>  即時(shí)數(shù)據(jù)顯示:即時(shí)顯示行駛時(shí)間,行駛距離等。</p><p><b>  3.5路阻力設(shè)定器</b></p><p>  由上位機(jī)設(shè)定道路阻力設(shè)定器參數(shù),并監(jiān)控滑行實(shí)驗(yàn)直至數(shù)據(jù)修正滿足要求。窗口如圖:</p><p&g

71、t;  圖3. 7 道路阻力設(shè)定器</p><p>  設(shè)定預(yù)熱時(shí)間,預(yù)熱車速,允許誤差,穩(wěn)定車速,終止車速等</p><p>  設(shè)定F(v)曲線,可以選擇設(shè)定方式,包括多點(diǎn)設(shè)定,方程式設(shè)定,V-t設(shè)定</p><p>  實(shí)時(shí)顯示時(shí)間,速度,阻力</p><p>  實(shí)時(shí)顯示F(v)曲線,其中綠線為設(shè)定曲線,紅線為滑行修正后的曲線<

72、;/p><p><b>  3.6工況模型</b></p><p>  在工況排放測(cè)試中,駕駛員需要根據(jù)工況模型駕駛。為方便地建立工況模型,軟件中加入了工況模型窗口。如圖:</p><p><b>  圖3. 8</b></p><p>  工況模型實(shí)際是一種二維折線,其橫軸為速度,縱軸為時(shí)間,規(guī)定了

73、行駛中每一時(shí)刻的速度。通過(guò)設(shè)定折線首位兩端的時(shí)間,速度,即可確定工況模型。</p><p>  模型設(shè)定:輸入各點(diǎn)的時(shí)間,速度,以建立工況模型。</p><p>  2) 顯示工況模型:隨各點(diǎn)參數(shù)的輸入,顯示所建立的工況模型以便于模型的建立。</p><p><b>  第4章 數(shù)據(jù)管理</b></p><p><

74、b>  4.1工作簡(jiǎn)介</b></p><p>  在本次摩托車測(cè)功機(jī)上位軟件編寫(xiě)中,有相當(dāng)多數(shù)據(jù)需要收集,計(jì)算,整理及存儲(chǔ),以簡(jiǎn)單數(shù)據(jù)文件的方式難以安全,有效且方便的處理,因而選擇使用數(shù)據(jù)庫(kù)對(duì)以上數(shù)據(jù)進(jìn)行統(tǒng)一管理,極大地方便了程序編寫(xiě),并有效消除了可能出現(xiàn)的安全隱患,提高了軟件質(zhì)量。</p><p>  本章首先對(duì)數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)語(yǔ)言SQL進(jìn)行了簡(jiǎn)介,以使讀者初步了解數(shù)據(jù)

75、庫(kù)及其特點(diǎn),方便對(duì)以后幾小節(jié)的閱讀。第四節(jié)通過(guò)具體的上位軟件例程,介紹了如何在應(yīng)用程序中使用數(shù)據(jù)庫(kù)。第五節(jié)則介紹了數(shù)據(jù)報(bào)表的生成及打印。</p><p><b>  4.2數(shù)據(jù)庫(kù)簡(jiǎn)介</b></p><p>  數(shù)據(jù)處理是計(jì)算機(jī)應(yīng)用中最大的一個(gè)分支。據(jù)估計(jì),全世界計(jì)算機(jī)中有90%以上的CPU時(shí)間用于數(shù)據(jù)處理。</p><p>  數(shù)據(jù)處理對(duì)計(jì)算

76、機(jī)系統(tǒng)資源(包括硬件,軟件和人員)的要求與其他方面的應(yīng)用(如科學(xué)計(jì)算等)有很大差別。從軟件方面來(lái)說(shuō),數(shù)據(jù)庫(kù)技術(shù)是數(shù)據(jù)處理最新和最有效的技術(shù)。</p><p>  數(shù)據(jù)庫(kù)技術(shù)產(chǎn)生于六七十年代之交,其前身是曾經(jīng)廣泛應(yīng)用的文件系統(tǒng)。1969年,IBM公司研制了世界上第一個(gè)層次型數(shù)據(jù)庫(kù)管理系統(tǒng)IMS(Information Management System);同年美國(guó)DBTG(Data Base Task Group)

77、小組發(fā)表了DBTG報(bào)告,給出了網(wǎng)絡(luò)型數(shù)據(jù)庫(kù)的論文,從而奠定了關(guān)系數(shù)據(jù)庫(kù)的基礎(chǔ)。層次型,網(wǎng)絡(luò)型和關(guān)系數(shù)據(jù)庫(kù)直到現(xiàn)在仍是數(shù)據(jù)庫(kù)系統(tǒng)的三種主要類型。</p><p>  數(shù)據(jù)庫(kù)系統(tǒng)一般由四部分組成:</p><p><b>  硬件</b></p><p>  硬件既計(jì)算機(jī)的硬設(shè)備,包括主機(jī)(CPU和內(nèi)存)及外部設(shè)備。數(shù)據(jù)庫(kù)系統(tǒng)對(duì)計(jì)算機(jī)硬件的要求與數(shù)

78、值計(jì)算等其它應(yīng)用不同,除了要求CPU的處理速度高,內(nèi)存容量大外,還要求有較多高質(zhì)量的外部設(shè)備――大容量磁盤(pán)機(jī),高速磁帶機(jī)及高速寬行打印機(jī)等。</p><p><b>  軟件</b></p><p>  數(shù)據(jù)庫(kù)系統(tǒng)中的軟件主要包括操作系統(tǒng),數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),應(yīng)用程序和語(yǔ)言編譯器。操作系統(tǒng)是其他各類軟件的基礎(chǔ),結(jié)構(gòu)一般較復(fù)雜,由生產(chǎn)廠家或軟件公司提供。數(shù)據(jù)庫(kù)管

79、理系統(tǒng)是數(shù)據(jù)庫(kù)中最重要的軟件系統(tǒng)。一般說(shuō)DBMS應(yīng)具有以下功能:</p><p>  數(shù)據(jù)庫(kù)定義功能,包括各種數(shù)據(jù)庫(kù)文件的組織和存儲(chǔ)結(jié)構(gòu)定義,以及保密定義等內(nèi)容。</p><p>  數(shù)據(jù)庫(kù)的建立和維護(hù)功能,包括數(shù)據(jù)庫(kù)文件的建立,更新,恢復(fù)和數(shù)據(jù)庫(kù)的性能監(jiān)視等。</p><p>  數(shù)據(jù)庫(kù)的管理功能,包括系統(tǒng)控制,數(shù)據(jù)存取及數(shù)據(jù)的安全性,完整性控制等。</p&

80、gt;<p>  許多數(shù)據(jù)庫(kù)管理系統(tǒng)還具有通信功能,適用于分布系統(tǒng)并且有遠(yuǎn)程作業(yè)輸入接口。</p><p>  4. 3嵌入式SQL語(yǔ)言</p><p>  SQL(Structured Query Language)語(yǔ)言是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,它是1974年由Boyce和Chamberlin提出的。1975年~1979年IBM公司San Jose Research研制了著

81、名的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)原型System R并實(shí)現(xiàn)了這種語(yǔ)言。1986年10月美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)的數(shù)據(jù)委員會(huì)X3H2批準(zhǔn)了SQL作為關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的美國(guó)標(biāo)準(zhǔn),同年公布了SQL標(biāo)準(zhǔn)文本(簡(jiǎn)稱SQL-86)。1987年國(guó)際標(biāo)準(zhǔn)化組織(ISO)也通過(guò)了這一標(biāo)準(zhǔn)。此后ANSI不斷修改和完善SQL標(biāo)準(zhǔn),并于1989公布了SQL-89標(biāo)準(zhǔn),1992年又公布了SQL-92標(biāo)準(zhǔn)。</p><p>  由于SQL語(yǔ)言功能豐富,語(yǔ)

82、言簡(jiǎn)潔,因而倍受用戶及計(jì)算機(jī)工業(yè)界歡迎。自SQL成為國(guó)際標(biāo)準(zhǔn)后,各個(gè)數(shù)據(jù)庫(kù)廠家紛紛推出各自的支持SQL的軟件或與SQL的接口軟件。這就使得大多數(shù)數(shù)據(jù)庫(kù)均采用了SQL作為共同的數(shù)據(jù)存儲(chǔ)語(yǔ)言和標(biāo)準(zhǔn)接口,從而使未來(lái)的數(shù)據(jù)庫(kù)世界有可能連接為一個(gè)統(tǒng)一的整體。因此,有人把SQL被制定為關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的標(biāo)準(zhǔn)及其以后的發(fā)展稱為是“一場(chǎng)革命”。</p><p>  SQL具有自含式語(yǔ)言和嵌入式語(yǔ)言兩種形式:自含式SQL能夠獨(dú)立地進(jìn)

83、行聯(lián)機(jī)交互,用戶只需在終端鍵盤(pán)上直接鍵入SQL命令就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作;嵌入式SQL能夠嵌入到高級(jí)語(yǔ)言(如C,COBOL,F(xiàn)ORTRAN)程序中來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)存取操作,給程序員設(shè)計(jì)程序提供了很大的方便。在這兩種不同的使用方式中,SQL的語(yǔ)法結(jié)構(gòu)基本上一致。而統(tǒng)一的語(yǔ)法結(jié)構(gòu)的特點(diǎn),為使用SQL提供了極大的靈活性和方便性。</p><p>  由于本次使用C++作為軟件開(kāi)發(fā)語(yǔ)言,故選用嵌入式SQL語(yǔ)言操作數(shù)據(jù)

84、庫(kù)。C++Builder對(duì)數(shù)據(jù)庫(kù)應(yīng)用提供了完善的支持,極大地方便了數(shù)據(jù)庫(kù)開(kāi)發(fā),但與標(biāo)準(zhǔn)嵌入式SQL語(yǔ)言相比,又有其不同點(diǎn)和特點(diǎn),在下一節(jié)中將著重討論。</p><p>  4在程序應(yīng)用中使用數(shù)據(jù)庫(kù)</p><p>  基于BDE(Borland Database Engine,既Borland數(shù)據(jù)庫(kù)引擎)的數(shù)據(jù)</p><p>  庫(kù)連接技術(shù)是Borland C++

85、Builder最早使用的數(shù)據(jù)庫(kù)連接技術(shù),它利用數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序隱藏了應(yīng)用程序連接不同種類數(shù)據(jù)庫(kù)的差異,從而為應(yīng)用程序提供訪問(wèn)所有數(shù)據(jù)庫(kù)的統(tǒng)一接口。而C++Builder中的數(shù)據(jù)庫(kù)統(tǒng)一接口就是VCL提供的基于BDE技術(shù)的數(shù)據(jù)庫(kù)訪問(wèn)和控制組件,它們是C++Builder數(shù)據(jù)庫(kù)連接技術(shù)的核心。</p><p>  以下將基于本次程序設(shè)計(jì),介紹在C++Builder如何在應(yīng)用程序使用數(shù)據(jù)庫(kù)。</p><

86、p><b>  建立數(shù)據(jù)庫(kù)</b></p><p>  由于BDE隱藏了應(yīng)用程序與數(shù)據(jù)庫(kù)連接的底層細(xì)節(jié),使數(shù)據(jù)庫(kù)應(yīng)用</p><p>  程序不需要因?yàn)閿?shù)據(jù)庫(kù)物理結(jié)構(gòu)的變化而修改代碼,因而可以方便的連接使用各種常見(jiàn)數(shù)據(jù)庫(kù),如Access,dBase,F(xiàn)oxPro等。本程序使用了Access數(shù)據(jù)庫(kù)。</p><p>  C++ Builde

87、r提供了DataBase DeskTop用于創(chuàng)建數(shù)據(jù)庫(kù),可以點(diǎn)擊‘開(kāi)始//C++Builder//DataBase DeskTop’啟動(dòng)該程序,如下圖所示:</p><p>  圖4. 1 Database Desktop</p><p>  點(diǎn)擊‘File//New//Table’, 在表類型對(duì)話框中選擇MSACCESS,打開(kāi)數(shù)據(jù)庫(kù)編輯器,設(shè)計(jì)基本表,如圖所示:</p>

88、<p>  圖4. 2 建立數(shù)據(jù)庫(kù)</p><p>  設(shè)計(jì)結(jié)束后選擇適當(dāng)目錄保存即可。</p><p>  也可以使用專用數(shù)據(jù)庫(kù)軟件,如微軟Office系列的Access設(shè)計(jì)所需數(shù)據(jù)庫(kù),可以更為方便快捷,這里不作進(jìn)一步介紹,讀者可查閱相關(guān)書(shū)籍資料。</p><p><b>  數(shù)據(jù)庫(kù)別名</b></p><p&

89、gt;  BDE采用別名機(jī)制管理數(shù)據(jù)庫(kù)的連接信息。所謂別名就是用來(lái)表示</p><p>  一個(gè)數(shù)據(jù)庫(kù)資源的名字,包括與其相連的一系列參數(shù)。通過(guò)引用數(shù)據(jù)庫(kù)別名,程序員可以忽略數(shù)據(jù)庫(kù)所在路徑等具體信息直接使用數(shù)據(jù)庫(kù),從而使編寫(xiě)和修改數(shù)據(jù)庫(kù)程序更為方便。</p><p>  在設(shè)計(jì)應(yīng)用程序之前,程序員必須建立訪問(wèn)數(shù)據(jù)庫(kù)的別名,以在應(yīng)用程序中使用。</p><p>  打

90、開(kāi)‘控制面板’,雙擊‘管理工具’,選擇‘?dāng)?shù)據(jù)源(ODBC)’,雙擊打開(kāi),如圖所示:</p><p>  在‘用戶DSN’頁(yè),點(diǎn)擊‘添加’,選擇合適的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。本軟件使用了Access數(shù)據(jù)庫(kù),故選擇‘Microsoft Access Driver (*.mdb)’,如圖:</p><p>  圖4. 4 選擇數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序</p><p>  點(diǎn)擊‘完成’,進(jìn)

91、入安裝頁(yè)面,如圖:</p><p>  在‘?dāng)?shù)據(jù)源名’填入數(shù)據(jù)庫(kù)別名,如果需要,在‘說(shuō)明’填入數(shù)據(jù)庫(kù)的簡(jiǎn)要說(shuō)明。</p><p>  由于已創(chuàng)建了數(shù)據(jù)庫(kù),在‘?dāng)?shù)據(jù)庫(kù)’中點(diǎn)擊‘選擇’,進(jìn)入數(shù)據(jù)庫(kù)選擇頁(yè)面,如圖:</p><p><b>  圖4. 6 </b></p><p>  找到已建好的數(shù)據(jù)庫(kù),點(diǎn)擊確定,數(shù)據(jù)庫(kù)別名

92、建立完畢。</p><p><b>  操作數(shù)據(jù)庫(kù)</b></p><p>  C++Builder提供了豐富的數(shù)據(jù)庫(kù)控件用于操作控制數(shù)據(jù)庫(kù),常用</p><p>  的控件有Ttable和TQuery。本次程序設(shè)計(jì)使用了TQuery操作數(shù)據(jù)庫(kù),故將重點(diǎn)介紹TQuery,對(duì)于TTable只作簡(jiǎn)要介紹。</p><p>&

93、lt;b>  TTable</b></p><p>  TTable通常用于為數(shù)據(jù)庫(kù)中的表建立數(shù)據(jù)映射,從而,應(yīng)用程序可</p><p>  以像訪問(wèn)數(shù)據(jù)庫(kù)中的表一樣訪問(wèn)TTable對(duì)象。因此,在使用TTable對(duì)象中的數(shù)據(jù)前,應(yīng)用程序必須建立數(shù)據(jù)映射,即通過(guò)設(shè)置DatabaseName(數(shù)據(jù)庫(kù)別名),TableName(表名)這兩個(gè)屬性,將TTable對(duì)象與數(shù)據(jù)庫(kù)中的表

94、對(duì)應(yīng)起來(lái)??稍谠O(shè)計(jì)期在屬性觀察器中設(shè)置這兩個(gè)屬性,或在代碼中設(shè)置,如下示例程序:</p><p>  Table1->Active=false; / /關(guān)閉可能存在的數(shù)據(jù)映</p><p><b>  射</b></p><p>  Table1->DatabaseName=CGJ; / /設(shè)置數(shù)據(jù)

95、庫(kù)別名</p><p>  Table1->TableName=”BasicData”; / /設(shè)置表名</p><p>  Table1->Active=true; / /打開(kāi)映射</p><p>  注意,這里建立的數(shù)據(jù)映射是供應(yīng)用程序中的數(shù)據(jù)感知控件,如TDBEdit,TDBGrid等使用的,單獨(dú)使用TTable無(wú)法做到用

96、戶與數(shù)據(jù)庫(kù)之間的交互。</p><p>  與TQuery相比,TTable具有簡(jiǎn)單,快捷的特點(diǎn),結(jié)合TDBEdit,TDBGrid等多種數(shù)據(jù)感知控件,可以在不編寫(xiě)代碼的情況下對(duì)表中的數(shù)據(jù)做任何操作,包括插入,修改,刪除等。但TTable只能為一個(gè)數(shù)據(jù)表中的數(shù)據(jù)建立數(shù)據(jù)映射,而不能同時(shí)訪問(wèn)多個(gè)表,且其對(duì)數(shù)據(jù)操作的靈活性也不如TQuery。而本次程序設(shè)計(jì)中,數(shù)據(jù)庫(kù)含有多個(gè)表,且相互有較多關(guān)聯(lián),故最終選用TQuery

97、操作數(shù)據(jù)庫(kù)。</p><p>  TQuery TQuery使用SQL語(yǔ)言操作數(shù)據(jù)庫(kù),因而具有很大的靈活性。在使用TQuery對(duì)象之前,應(yīng)用程序應(yīng)當(dāng)為其設(shè)置DatabaseName屬性,</p><p>  這與使用TTable對(duì)象一樣。之后將Active屬性設(shè)為true,則TQuery對(duì)象與相應(yīng)數(shù)據(jù)庫(kù)建立了聯(lián)系。然后即可使用SQL語(yǔ)言操作數(shù)據(jù)庫(kù)。以下結(jié)合實(shí)例進(jìn)行介紹。</p>

98、<p>  操作數(shù)據(jù)庫(kù)時(shí),經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行查詢,統(tǒng)計(jì),分組和排序等,可以用SELECT語(yǔ)句實(shí)現(xiàn)以上操作。</p><p>  SELECT的語(yǔ)法格式為:</p><p>  SELECT <目標(biāo)列組></p><p>  FROM <數(shù)據(jù)列組></p><p>  [WHERE <選擇條件>

99、;] </p><p><b>  例如:</b></p><p>  從測(cè)功機(jī)數(shù)據(jù)庫(kù)中的BasicData表中找出Index,ID等于給定值的組,并讀出該組所記錄的駕駛員名。</p><p>  Query->Close( ); //1</p

100、><p>  Query->SQL->Clear( ); //2</p><p>  Query->SQL->Add(“SELECT Driver FROM BasicData”); //3 </p><p>  Query->SQL->Add(“

101、WHERE Index LIKE :Index AND ID=:ID”); //4</p><p>  Query->Params->Items[0]->AsString=Index; //5</p><p>  Query->Params->Items[1]->AsInteger=ID;

102、 //6</p><p>  Query-> ExecSQL( ); //7</p><p>  Query->Open( ); //8</p><p>  DriverName

103、=Query->Fields->Fields[0]->AsString; //9</p><p>  關(guān)閉Query,以便重新操作數(shù)據(jù)庫(kù)。</p><p>  清除前次操作的SQL語(yǔ)句。注意,TQuery利用其SQL屬性使用SQL語(yǔ)句。</p><p>  ,4. 添加SQL語(yǔ)句。使用SQL屬性的Add函數(shù),加入操作數(shù)

104、據(jù)庫(kù)所用的SQL語(yǔ)句。當(dāng)一條語(yǔ)句過(guò)長(zhǎng)時(shí),可分開(kāi)用多條Add函數(shù)添加。</p><p>  5. ,6.輸入?yún)?shù)。數(shù)據(jù)庫(kù)操作常常需要外界輸入一定參數(shù),這些參數(shù)是通過(guò)TQuery的Params屬性輸入的。</p><p>  Query->Params->Items[n]->AsParamType=Param;</p><p>  注意:◆ Items

105、是類數(shù)組,包含了AsString,AsInteger,AsFloat,AsBCD等多種不同屬性,用以輸入字符串,整形,浮點(diǎn),BCD等多種不同數(shù)據(jù)。</p><p>  ◆ Items的下標(biāo)與相關(guān)參數(shù)在SQL語(yǔ)句中出現(xiàn)的順序有關(guān)。</p><p><b>  7.執(zhí)行SQL語(yǔ)句</b></p><p>  8.打開(kāi)Query的數(shù)據(jù)區(qū)。當(dāng)操作完成后

106、有輸出數(shù)據(jù)時(shí),需要使用該函數(shù)。</p><p>  9.輸出數(shù)據(jù)。完成查詢等操作后,通常會(huì)有一定符合要求的數(shù)據(jù)要輸出,則通過(guò)Query的Fields屬性輸出。</p><p>  Param=Query->Fields->Fields[n]->AsParamType;</p><p>  類似于Items,F(xiàn)ields也是類數(shù)組,其用法可參見(jiàn)Ite

107、ms。</p><p>  上例顯示了TQuery的典型用法。在其他不同的應(yīng)用中,如刪除或添加記錄等,只需改變SQL命令即可。</p><p>  注意: 嵌入式SQL的應(yīng)用程序中,會(huì)有SQL和主語(yǔ)言兩種語(yǔ)言,有時(shí)可能還有其他語(yǔ)言。多種語(yǔ)言同在一個(gè)程序中,它們的語(yǔ)法不一致,某些地方會(huì)產(chǎn)生沖突。為解決語(yǔ)言沖突問(wèn)題,使SQL和主語(yǔ)言能夠相容,不同系統(tǒng)及開(kāi)發(fā)工具提供了不同的解決方案,使得嵌入式S

108、QL在個(gè)別語(yǔ)法點(diǎn)上不盡相同,在使用中應(yīng)加以注意。</p><p>  第五章 上下位機(jī)通訊</p><p><b>  5.1工作簡(jiǎn)介</b></p><p>  摩托車測(cè)功機(jī)系統(tǒng)中,上位機(jī)提供了人機(jī)界面,用以監(jiān)控測(cè)試,收集整理數(shù)據(jù)等,而下位機(jī)通過(guò)PLC,傳感器等控制測(cè)功機(jī)的電氣硬件部分并采集時(shí)間速度等數(shù)據(jù),因而上下位機(jī)之間需要相互通訊以完成命

109、令,數(shù)據(jù)的交流。</p><p>  計(jì)算機(jī)間通信分為串行通訊和并行通訊。串行通訊具有配線少,容易實(shí)現(xiàn)的特點(diǎn),成為計(jì)算機(jī)間通訊的主要形式。本次測(cè)功機(jī)上下位通訊即采用了RS-232協(xié)議的串行通訊實(shí)現(xiàn)。</p><p>  本章第二小節(jié)介紹了串口通訊的原理及應(yīng)用等。第三小節(jié)介紹了在Windows下編寫(xiě)串口通訊應(yīng)用程序。第四小節(jié)介紹了本次上下位機(jī)之間串口通訊的協(xié)議。</p><

110、;p><b>  5.2串口通訊簡(jiǎn)介</b></p><p>  計(jì)算機(jī)與外部設(shè)備的通信聯(lián)系往往通過(guò)并行口或串行口實(shí)現(xiàn)。例如,PC機(jī)和打印機(jī)間是通過(guò)并行口聯(lián)接的,而PC機(jī)和鼠標(biāo)器、數(shù)字化儀等設(shè)備間則是通過(guò)串行口連接的。MS-DOS 6.0系統(tǒng)程序提供的INTERSVR.EXE和INTERLNK.EXE兩個(gè)局域網(wǎng)驅(qū)動(dòng)程序,其通信媒介也是串行口或并行口。因此,串行口通信是實(shí)現(xiàn)有一定距離的兩

111、臺(tái)或兩臺(tái)以上的設(shè)備彼此連接的最簡(jiǎn)單、最便宜的方法。串行口通信需要許多握手信號(hào)和狀態(tài)信號(hào)來(lái)協(xié)調(diào)多臺(tái)設(shè)備的通信工作,因此串行口通信比較復(fù)雜。</p><p>  所謂串行通信指的是一次傳送一個(gè)bit位數(shù)據(jù),而不是一次傳送一個(gè)字節(jié)的數(shù)據(jù)。所以傳送速度較慢,但是由于其通訊線路簡(jiǎn)單,只要一對(duì)傳輸線就可以實(shí)現(xiàn)通訊,大大降低了成本,從而得以廣泛應(yīng)用。</p><p>  5.3 Windows下的上位機(jī)

112、串口通訊</p><p>  由于操作系統(tǒng)結(jié)構(gòu)的不同,在DOS下和Windows下進(jìn)行串行通訊編程有很大區(qū)別。</p><p>  DOS作為一種單用戶操作系統(tǒng),允許用戶對(duì)硬件進(jìn)行直接操作,因而在DOS下的串行通訊程序,大多采用查詢方式進(jìn)行數(shù)據(jù)的收發(fā)工作,大致可以分為以下幾個(gè)步驟:首先應(yīng)初始化串行口,然后查詢串行口狀態(tài),確定可以接收或發(fā)送后,再進(jìn)行數(shù)據(jù)的接收和發(fā)送。從程序設(shè)計(jì)的角度看待串行

113、端口,就是通過(guò)異步通信適配器來(lái)控制RS-232接口,具體的說(shuō)就是設(shè)置8250中各寄存器,實(shí)現(xiàn)波特率設(shè)定、狀態(tài)檢測(cè)、中斷設(shè)定等功能。</p><p>  Windows是一種多進(jìn)程操作系統(tǒng),為保證系統(tǒng)安全,用戶被禁止對(duì)硬件進(jìn)行直接操作。為向用戶屏蔽硬件,用戶通常使用API函數(shù)向系統(tǒng)請(qǐng)求硬件服務(wù),系統(tǒng)通過(guò)硬件驅(qū)動(dòng)程序等完成相應(yīng)的服務(wù),并將服務(wù)結(jié)果返回用戶。通過(guò)這一方式,用戶只需使用相應(yīng)的API函數(shù)即可完成硬件操作,而

114、無(wú)需關(guān)心硬件的具體型號(hào)等問(wèn)題,使得程序的可移植性,安全性和維護(hù)性都大為增加。</p><p>  但是,作為較低層的應(yīng)用,API函數(shù)雖然功能強(qiáng)大完善,但也具有不易使用的問(wèn)題,因而,許多軟件公司又對(duì)其進(jìn)行了封裝,改善,去掉少量不常用功能,增強(qiáng)其易用性和對(duì)用戶的友善性,然后以控件的形式發(fā)表,極大的方便了程序的編寫(xiě),調(diào)試和維護(hù)。</p><p>  本次上位機(jī)程序的串行通訊部分即以Microso

115、ft的MSComm控件實(shí)現(xiàn)。以下將圍繞該控件討論Windows下的串行通訊程序。</p><p><b>  安裝MSComm</b></p><p>  MSComm是VB自帶的控件,當(dāng)安裝好VB后便可在其中使用MSComm。但本次上位機(jī)程序是由C++Builder開(kāi)發(fā),故先要在C++Builder中安裝MSComm后方可使用。</p><p&g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論