新聞中心

EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于Delphi的車載數(shù)據(jù)顯示界面的設(shè)計

基于Delphi的車載數(shù)據(jù)顯示界面的設(shè)計

——
作者:陳俊麟 吳友宇 武漢理工大學(xué) 信息工程學(xué)院 時間:2007-01-26 來源:《電子元器件應(yīng)用》 收藏

引言

在自動控制、儀表智能化、工業(yè)測控點實時監(jiān)控等領(lǐng)域中,人們經(jīng)常用計算機對生產(chǎn)過程實行實時監(jiān)控,以對下位機采集來的數(shù)據(jù)進行實時數(shù)據(jù)處理,同時產(chǎn)生和傳輸控制信號,在這種特定環(huán)境下,計算機要與過程控制的實時信號相聯(lián)系,為此,使用筆者使用delphi開發(fā)了一個車載數(shù)據(jù)采集顯示系統(tǒng)的界面,從而在基于windows操作系統(tǒng)中實現(xiàn)了下位機與上位機的數(shù)據(jù)通信。

設(shè)計思想和軟件架構(gòu)

delphi是一種功能強大的高級編程語言,它具有可視化,面向?qū)ο蟮奶匦?,特別適于在windows環(huán)境下進行圖形界面和用戶程序的編制[1],該顯示系統(tǒng)的下位機以dsp為核心,可實現(xiàn)對重要參數(shù)的檢測、控制,并將采集的數(shù)據(jù)以一定的方式向上位機發(fā)送,從而實現(xiàn)與上位機的數(shù)據(jù)通信,在數(shù)據(jù)傳輸?shù)倪^程中仍然采用串行通信的方式,該軟件的總體設(shè)計任務(wù)是:

(1)通過該軟件對串口參數(shù)進行配置,以與下位機形成統(tǒng)一的通訊協(xié)議。

(2)通過該軟件實時顯示下位機的數(shù)據(jù)采集值,同時調(diào)用和察看存盤的數(shù)據(jù)記錄。

基于以上任務(wù),該界面的軟件架構(gòu)模型如圖1所示,該程序由串口通信模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)顯示模塊和數(shù)據(jù)保存模塊四部分組成。

本文引用地址:http://m.butianyuan.cn/article/21509.htm

軟件設(shè)計

串口通信模塊的設(shè)計

在delphi環(huán)境下的串口通信實現(xiàn)方法主要有4種,即使用控件(如mscomm)、使用api函數(shù),使用行間匯編asm或在程序中調(diào)用其他串口通程序[2],利用api函數(shù)或行間匯編編寫串口通信程序較為復(fù)雜,但優(yōu)點是可以實現(xiàn)功能更強大,應(yīng)用更廣泛、更復(fù)雜的低層次通信程序,mscomm通信控件可以用來提供簡單的串行端口通訊功能,也可以用來創(chuàng)建功能完備、事件驅(qū)動的高級通訊工具,該控件提供了一系列標(biāo)準(zhǔn)通訊命令的使用界面,使用它可以建立與串行端口的連接,并通過串行端口連接到其他通訊設(shè)備(例如調(diào)制解調(diào)器),以發(fā)出命令、交換數(shù)據(jù)和監(jiān)視及響應(yīng)串行連接中發(fā)生的事件和錯誤,因為mscomm控件的屬性較多,應(yīng)用起來比較方便,所以用該控件編寫串行通信程序相對來說比較簡單,下面介紹本文在程序設(shè)計中用到該控件的幾個屬性:

comm port:設(shè)置并返回通信口號。

comm event:返回通信事件或錯誤。

input:返回并刪除接收緩沖區(qū)中的數(shù)據(jù),在設(shè)計時,該功能無效,而在運行時為只讀。

inputlen:確定被input屬性讀取的字符數(shù)。

inputmode:設(shè)置并返回被input屬性讀取的數(shù)據(jù)類型,其中cominputmodetext以文本形式返回,而cominputmodetext以本文形式返回,而cominputmodebinary則以二進制形式返回。

output:向輸出緩沖區(qū)中寫入數(shù)據(jù),在設(shè)計時無效,運行時為只讀。

portopen:設(shè)置并返回通信端口開或關(guān)的狀態(tài),運行時有效。

rthreshold:在mscomm控件中設(shè)置commevent屬性為commevreceive,并在產(chǎn)生oncomm事件之前,設(shè)置并返回要接收的字符數(shù)。

settings:設(shè)置并返回初始化參數(shù),即波特率、奇偶校驗、數(shù)據(jù)位和停止位。

oncomm事件:當(dāng)commevent屬性的值變化時產(chǎn)生次事件,以標(biāo)志發(fā)生了一個通信事件或錯誤。

mscomm控件有兩種處理通信的方式,即事件驅(qū)動和查詢方式[3],事件驅(qū)動方式是處理端口通信的一種有效方法,它可以利用oncomm事件捕獲并處理通信中發(fā)生的事件或錯誤,實時性較強,而查詢方式是在程序通過查詢commevent屬性的值來判斷通信的過程中的事件或錯誤,這種方式適合于應(yīng)用程序較小、實時性要求不是很高的系統(tǒng)中,本文采取的是事件驅(qū)動方式,用戶可以在oncomm事件中編寫程序代碼。串口通信的主要步驟有:

(1)設(shè)置通信對象、通信端口以及其他屬性;

(2)設(shè)定通信協(xié)議;

(3)打開通信端口,進行數(shù)據(jù)的傳送;

(4)關(guān)閉通信端口。

下位機主要用于將采集上來的數(shù)據(jù)通過pc機上的rs-232接口發(fā)送到上位機,其程序流程如圖2所示。

數(shù)據(jù)處理模塊的設(shè)計

數(shù)據(jù)處理模塊的主要任務(wù)是將從下位機上接收到的數(shù)據(jù)進行分類,并對數(shù)據(jù)進行分割和轉(zhuǎn)化,以得到需要的數(shù)據(jù),在下位機和上位機的通信過程中數(shù)據(jù)是按照一定的通信協(xié)議進行封裝和傳輸?shù)?,下位機把數(shù)據(jù)以16進制的數(shù)組形式向上發(fā)送,其數(shù)據(jù)幀的封裝格式如圖3所示,一幀數(shù)據(jù)包括10個字節(jié),其中id號占2個字節(jié),每個data占一個字節(jié),id號代表了數(shù)據(jù)的類型含義,data則代表具體的數(shù)據(jù)值,圖4是具體傳輸?shù)臄?shù)值模式。



因此,在程序設(shè)計中,必須將id號和數(shù)據(jù)進行分離,以分別讀出它們各自的數(shù)值,然后根據(jù)id的數(shù)值對相應(yīng)的數(shù)據(jù)進行分類和轉(zhuǎn)化,以變成所需要的數(shù)據(jù),并附值給相應(yīng)的變量,從而在后面的顯示模塊設(shè)計中合理地使用這些變量來達到正確顯示數(shù)據(jù)的功能,其程序流程圖如圖5所示。

數(shù)據(jù)顯示模塊的設(shè)計

在數(shù)據(jù)顯示模塊的設(shè)計當(dāng)中,筆者使用了timer(定時器)這一控件來進行軟件的開發(fā)。因為在軟件設(shè)計過程中,定時器所起到的作用是非常大的。timer控件具有enabled(定時器使能屬性)、interval(定時時間間隔)等屬性。使用timer時,首先要將enable置1,然后設(shè)定時間間隔,最后在ontimer()事件中添加程序代碼。

由于車輛狀態(tài)的各種參數(shù)的實時性相當(dāng)重要,它是駕駛員作出正確操作的根本依據(jù),因此,數(shù)據(jù)的顯示要求是動態(tài)實時地反應(yīng)車輛的行駛狀況,采用定時器可以每隔一段時間對顯示的數(shù)據(jù)進行一次刷新,從而很好地滿足這一需要[4]。顯示程序的代碼可以全部寫在定時器里面,數(shù)據(jù)顯示的界面分為歡迎界面、整車參數(shù)顯示界面、燃料電池參數(shù)顯示界面、鎳氫電池參數(shù)顯示界面和狀態(tài)信息顯示界面,每一個界面都能實時的反應(yīng)正確的參數(shù)信息,并回饋給駕駛員每個部分的工作狀態(tài),其中整車參數(shù)顯示界面如圖6所示,燃料電池參數(shù)顯示界面圖如圖7所示。


數(shù)據(jù)保存模塊的設(shè)計

在該界面的設(shè)計過程中,還有一個數(shù)據(jù)保存模塊。該模塊的功能是將車上重要的行駛參數(shù)和狀態(tài)參數(shù)保存到計算機的硬盤里,也可以通過usb接口用移動硬盤將數(shù)據(jù)從計算機里讀出,以方便工作人員和研究人員對數(shù)據(jù)的察看和分析,從而對汽車的性能和控制作進一步的改善,因為汽車在行駛過程中下位機與上位機的通信數(shù)據(jù)量非常大,如果每接收到一組數(shù)據(jù),就將數(shù)據(jù)往文件里寫一次,那么對資源的開銷太大,而且會降低軟件的運行效率,所以,本文采用定時方式,即每隔一段時間存儲一次數(shù)據(jù),即對數(shù)據(jù)的存儲過程是在定時器里完成的,這樣,每次汽車啟動時,就可在系統(tǒng)里建立一個文本文件,并設(shè)置文件的存儲路徑,然后每隔一段時間向這個本文文件里寫一次數(shù)據(jù),數(shù)據(jù)的保存格式遵循通信協(xié)議里數(shù)據(jù)幀的格式,在程序的設(shè)計過程中,調(diào)用api函數(shù)即可實現(xiàn)數(shù)據(jù)的存儲,其程序流程圖如圖8所示。

結(jié)束語

本文給出了基于delphi的車載數(shù)據(jù)顯示系統(tǒng)界面的設(shè)計框架和軟件體系結(jié)構(gòu),本系統(tǒng)通過串行通信技術(shù)來實現(xiàn)下位機和上位機的實時通信,并通過對實時數(shù)據(jù)的處理,顯示和存儲,來達到對汽車行駛狀態(tài)的監(jiān)控,實踐證明:用delphi開發(fā)該系統(tǒng),其人機界面友好,便于操作,移植性強,并具有很好的擴充性??梢韵嘈烹S著工業(yè)信息化和自動化的發(fā)展,這項技術(shù)將會應(yīng)用在更多的領(lǐng)域。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉