用于卷煙機組的CAN總線(xiàn)實(shí)時(shí)監聽(tīng)器的設計與實(shí)現
數據庫系統的DELPHI實(shí)現 (1)建立數據庫,在本項目中,我們是利用Microsoft Access 建立了一個(gè)關(guān)系數據庫(由若干表組成的數據庫)。其中包含了一張表,該表的字段分為id表示用以判斷的字符串,以及l(fā)ocation表示參數值應填的文本框代號。(2)在應用程序中要實(shí)現對所建立的數據庫的訪(fǎng)問(wèn)需要用到數據庫引擎和數據庫訪(fǎng)問(wèn)組件以及數據庫控制組件,DELPHI7中提供了BDE,ADO數據引擎,考慮到項目中的數據庫應用相對簡(jiǎn)單,我們選擇了常用的BDE(Borland Database Engine)控制讀取所建立的數據庫,具體操作為1)利用DEPHI7文件夾中的BDE Administer為所建立的數據庫創(chuàng )建別名。2)在窗體中添加數據庫訪(fǎng)問(wèn)組件和數據庫控制組件(包括Data Access頁(yè)和BDE頁(yè)中的組件)來(lái)實(shí)現應用程序與數據庫之間的聯(lián)系。項目中,我們用Table組件來(lái)封裝數據表,通過(guò)BDE數據引擎從數據庫表格中取得數據(參數值應填的文本框代號)并通過(guò)DataSource組件將數據傳遞給數據控制組件TDBEdit,3)在程序中,我們通過(guò)TTable提供的Gotokey的方法實(shí)現對數據庫的查找,以及通過(guò)對TDBEdit中的數據的使用。實(shí)現了將不同參數值填到其唯一對應的文本框中。
2 域請求和域數據的處理
因為域數據的多類(lèi),多變性,以及不確定性,我們不能用處理參數一樣的數據庫或者其他統一處理的方法,所以在程序中我們使用的是用多層復合選擇語(yǔ)句進(jìn)行判斷然后根據不同的域數據做出不同的處理,域數據是根據標識符上傳的,只有數據沒(méi)有別的判斷信息,對域數據的判斷決定于域請求的數據內容,因此在程序中首先判斷楨是否為域請求,如果是,則將楨數據賦值對應的變量,這些變量保存的便是域數據的判斷信息,而如果根據標識符判斷出為域數據,則根據變量保存的信息進(jìn)行對應的處理。
在域數據的處理中,很多情況是要繪出曲線(xiàn)。對此,我們選擇了DELPHI的Tchart控件。利用其Series屬性里面的Fast-line,將收到的數據正確的繪成曲線(xiàn)。
3 指令和消息的處理
指令和消息的處理類(lèi)似于域數據的處理,也是采用多層復合選擇語(yǔ)句進(jìn)行判斷,然后做出相應的處理,在此,相應的處理即將指令,消息的相關(guān)信息填入文本框。
〈5〉軟件流程圖
數據處理函數dataprocess()流程圖
結 論
在本項目中,CAN卡PCI-9810的控制器是SJA1000,在收發(fā)數據方面它支持正常和只聽(tīng)兩種模式,在監聽(tīng)器的實(shí)際運行中我們選用只聽(tīng)模式進(jìn)行線(xiàn)路監聽(tīng),取的了不錯的效果,而且在界面的設計過(guò)程中上我們添加了發(fā)送部分,這是便于進(jìn)行CAN卡的檢測以及數據接收的調試,此時(shí)需要選擇正常模式。
本文作者的創(chuàng )新點(diǎn):結合實(shí)際情況的具體需要,合理的選用了Delphi作為軟件開(kāi)發(fā)平臺,在實(shí)時(shí)性方面,我們選擇了Delphi自身提供的線(xiàn)程類(lèi),而不是按照常規選擇windows提供的API函數,從而使程序的設計變的簡(jiǎn)潔,另外在數據的處理方面,我們不僅采用了通常的數據庫方法,而且還根據實(shí)際需要采用了其他簡(jiǎn)易可行的方法。很好地完成了需求。
總之,借鑒前者地經(jīng)驗加上實(shí)際地創(chuàng )新我們成功設計了實(shí)時(shí)監聽(tīng)器并通過(guò)了實(shí)際檢驗,本項目所設計的實(shí)時(shí)監聽(tīng)器在實(shí)用性,實(shí)時(shí)性,準確性,以及友好性上都是很不錯的。
評論