999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

界面可編程的機(jī)車微機(jī)顯示軟件

2018-04-23 09:13:16
軟件 2018年3期
關(guān)鍵詞:按鈕界面數(shù)據(jù)庫

黃 飛

(中車大連機(jī)車研究所有限公司 電力電子事業(yè)部,遼寧 大連 116021)

0 引言

機(jī)車微機(jī)顯示器是一個(gè)集成多種電子功能的司機(jī)室電子平臺(tái),通過CAN總線與機(jī)車控制計(jì)算機(jī)通信,從而采集機(jī)車運(yùn)行數(shù)據(jù)并顯示[1]。目前,應(yīng)用在機(jī)車上的微機(jī)顯示器所顯示的內(nèi)容都是開發(fā)人員設(shè)計(jì)的固定界面,雖然可以滿足司乘人員的駕駛需要,但當(dāng)技術(shù)人員分析機(jī)車故障和調(diào)試機(jī)車時(shí)就顯得不方便。比如:故障表現(xiàn)在冷卻系統(tǒng),但原因出現(xiàn)在柴油機(jī)的潤(rùn)滑系統(tǒng),這時(shí)技術(shù)人員就不能同時(shí)觀察兩個(gè)系統(tǒng)的參數(shù)。因此無論是機(jī)務(wù)部門還是機(jī)車生產(chǎn)廠商都迫切需要一種數(shù)據(jù)顯示方式更為靈活的機(jī)車微機(jī)顯示器。

針對(duì)以上問題,本文設(shè)計(jì)一種界面可編程的機(jī)車微機(jī)顯示系統(tǒng)軟件。界面可編程是本文提出的獨(dú)創(chuàng)性設(shè)計(jì)理念,本文所設(shè)計(jì)的機(jī)車微機(jī)顯示系統(tǒng)軟件為用戶提供若干沒有任何顯示參數(shù)的顯示界面,由用戶根據(jù)應(yīng)用需要為空白界面增加參數(shù),并可以保存、修改和刪除。本文基于嵌入式 Windows XP系統(tǒng),應(yīng)用Visual Basic開發(fā)系統(tǒng)軟件。應(yīng)用開源免費(fèi)的SQlite3數(shù)據(jù)庫和INI文件作為配置文件。由于本軟件是基于嵌入式Windows XP系統(tǒng),所以在修改底層驅(qū)動(dòng)之后可以快速移植到 PC機(jī)或工控機(jī)平臺(tái),具有普遍應(yīng)用性。

1 軟件架構(gòu)

本軟件整體架構(gòu)如圖1所示。整體軟件分為界面顯示與控制、界面編程數(shù)據(jù)采集與存儲(chǔ)、CAN通信處理三大部分。Visual Basic是微軟公司開發(fā)的一種基于對(duì)象的程序設(shè)計(jì)語言,為結(jié)構(gòu)化的、模塊化的、面向?qū)ο蟮目梢暬绦蛟O(shè)計(jì)語言[2]。擁有圖形用戶界面和快速應(yīng)用程序開發(fā)系統(tǒng),因此可以快速開發(fā)出機(jī)車微機(jī)顯示系統(tǒng)軟件的人機(jī)界面,本軟件即由Visual Basic開發(fā)。

應(yīng)用INI文件存儲(chǔ)界面編程基本信息。界面顯示變量的詳細(xì)信息由數(shù)據(jù)庫存儲(chǔ)。SQLite3數(shù)據(jù)庫不僅具有傳統(tǒng)數(shù)據(jù)庫的主要功能,還具有嵌入式體積小、占用資源少和支持移動(dòng)技術(shù)等特性,常被用在PDA、車載設(shè)備、GPS定位和地圖顯示中[3]。基于以上特點(diǎn),本文應(yīng)用SQLite3數(shù)據(jù)庫保存軟件中界面編程所產(chǎn)生的數(shù)據(jù),同時(shí)應(yīng)用 SQLite3數(shù)據(jù)庫保存需要本微機(jī)顯示系統(tǒng)處理的 CAN通信數(shù)據(jù)的解析信息,從而配合數(shù)據(jù)解析引擎實(shí)現(xiàn)數(shù)據(jù)高速解析。

圖1 軟件整體架構(gòu)Fig.1 S oftware architecture

2 詳細(xì)設(shè)計(jì)

首先介紹 INI配置文件的設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì),然后介紹本軟件的詳細(xì)設(shè)計(jì)。

2.1 INI文件設(shè)計(jì)

INI是英文“初始化”(initialization)的縮寫。正如該術(shù)語所表示的,INI文件被用來對(duì)操作系統(tǒng)或特定程序初始化或進(jìn)行參數(shù)設(shè)置[4]。文件格式由節(jié)和鍵組成,其中節(jié)用方括號(hào)括起來,單獨(dú)占一行,例如:[section]。鍵(key)又名屬性(property),單獨(dú)占一行用等號(hào)連接鍵名和鍵值,例如:name=value。

本文設(shè)計(jì)了3個(gè)INI文件,分別是chinese.ini,english.ini和 z_para.ini。其中 chinese.ini和 english.ini實(shí)現(xiàn)顯示系統(tǒng)語言切換,由于機(jī)車微機(jī)顯示系統(tǒng)涉及許多機(jī)車專有名詞,所有必須事先將所有名詞及對(duì)應(yīng)的英文編入文件。在窗體加載時(shí),通過系統(tǒng)kernel32內(nèi)核提供的API接口GetPrivateProfileString讀出各顯示標(biāo)簽對(duì)應(yīng)的顯示內(nèi)容。配置文件chinese.ini和english.ini的部分對(duì)比如表1所示,F(xiàn)C2_Main是主界面名,在文件中作為節(jié)名,該節(jié)下所有鍵對(duì)應(yīng)界面中的一個(gè)標(biāo)簽,根據(jù)語言選擇不同的文件,同一個(gè)鍵的鍵值有中文也有英文,這樣則實(shí)現(xiàn)了中英文語言切換的效果。

表1 語言配置文件對(duì)比表Tab.1 Comparison of language configuration files

文件 z_para.ini用來存儲(chǔ)可編程界面的變量信息,文件的部分內(nèi)容如圖2所示。

文件 z_para.ini中的節(jié)對(duì)應(yīng)界面名,如圖[Undefined1]和[Undefined2]分別是界面未定義 1和未定義2。當(dāng)界面沒有被編程時(shí),如:未定義2,在[Undefined2]下的所有鍵的鍵值都為空。當(dāng)界面被編程并保存時(shí),如:未定義1,在[Undefined1]下,鍵para_id的鍵值是以變量個(gè)數(shù)開頭,變量id之間以分號(hào)分隔的字符串,鍵 para_name的鍵值是以變量個(gè)數(shù)開頭,變量名之間以分號(hào)分隔的字符串。

2.2 數(shù)據(jù)庫設(shè)計(jì)

應(yīng)用 SQLite3可視化工具開發(fā)設(shè)計(jì)數(shù)據(jù)庫表格,部分表格如圖3所示。應(yīng)用數(shù)據(jù)庫存儲(chǔ)變量的信息,如圖3所示,para_id是變量的id號(hào),每個(gè)變量有唯一的id號(hào),程序中根據(jù)id號(hào)便可知該變量的顯示信息。項(xiàng) para_name是變量的變量名,最終顯示界面顯示的變量標(biāo)題便是這個(gè)字符串。變量相關(guān)的CAN數(shù)據(jù)幀ID是表中can_id,由于涉及保密通信協(xié)議細(xì)節(jié),所以此處以-1代替,并未提供真實(shí)幀ID信息。

圖2 文件z_para.iniFig.2 File z_para.ini

圖3 SQLite3表Fig.3 Table developed by SQLite3

2.3 界面設(shè)計(jì)流程

本文僅介紹可編程界面的設(shè)計(jì)問題。可編程界面設(shè)計(jì)流程如圖4所示。

2.3.1 變量編輯界面的form_load事件

變量編輯界面如圖6所示,form_load事件是該界面的初始化事件,需要考慮的軟件邏輯包括所編輯的界面是第一次編程還是對(duì)已有的界面進(jìn)行修改,SQlite3數(shù)據(jù)庫初始化工作。VB引用SQlite3數(shù)據(jù)庫的方法是:首先將 sqlite3.dll放在程序的路徑下,在VB工程中添加mSqlite.bas模塊,之后在程序中應(yīng)用mSqlite.bas模塊中的函數(shù)即可實(shí)現(xiàn)程序?qū)qlite3數(shù)據(jù)庫的全部操作[5]。SQlite3數(shù)據(jù)庫初始化代碼為 mSqlite.sqlite3_initialize(sPath),其中 sPath是數(shù)據(jù)庫的路徑,函數(shù)返回值為1時(shí)則初始化成功。打開本軟件所建立數(shù)據(jù)庫的代碼是 mSqlite.sqlite3_open("C:FC2_Codesys.db3", f_lSqlite),C:FC2_Codesys.db3是本軟件所使用數(shù)據(jù)庫的完整路徑和名稱,f_lSqlite是句柄,函數(shù)返回值為 1時(shí)則函數(shù)調(diào)用成功。在變量編輯界面的左邊是一個(gè)列表框,其初始狀態(tài)為空。初始化工作在即在這里完成,代碼如下:

圖4 可編程界面設(shè)計(jì)流程Fig.4 Process of programmable form

通過SQL語句中的SELECT語句將符合條件的變量名選出,通過列表框的additem方法添加,通過列表框的 selected方法實(shí)現(xiàn)光標(biāo)的效果,執(zhí)行完以上代碼之后列表框list1便顯示出所有可編程變量選項(xiàng)。

2.3.2 方向按鈕事件

本文所設(shè)計(jì)軟件運(yùn)行的硬件平臺(tái)不是觸摸屏,所有操作均由顯示器上的 8個(gè)按鈕執(zhí)行,8個(gè)按鈕分別對(duì)應(yīng)系統(tǒng)的F1到F8功能鍵。因此,本軟件邏輯也涉及到按鍵響應(yīng)問題。應(yīng)用Form_KeyUp作為按鍵響應(yīng)事件,通過傳遞的鍵值判斷所需要的操作。部分代碼如下:

變量 p_Row在程序中表示列表框中光標(biāo)的位置,通過對(duì)它加減和列表框的 selected方法實(shí)現(xiàn)光標(biāo)在列表框中的上下移動(dòng)和翻頁。

2.3.3 選擇按鈕事件

變量編輯界面如圖6所示,界面右側(cè)標(biāo)題為“已選變量”下面區(qū)域是一個(gè)列表框 list2,選擇按鈕事件就是確保list2變量數(shù)量不超限并選擇list1變量與list2變量不重復(fù)的前提下,在list2中添加list1中光標(biāo)停留位置的變量名稱。之后,根據(jù)被選變量的名稱在數(shù)據(jù)庫中查找該變量的id號(hào),最終將list2中所有變量的id號(hào)和名稱分別存儲(chǔ)在兩個(gè)字符串中。查找和存儲(chǔ)的部分代碼如下:

其中Label7.Caption是存儲(chǔ)變量id的,Label6.Caption是存儲(chǔ)變量名的,這兩個(gè)字符串都是相應(yīng)標(biāo)簽控件的caption屬性,這樣設(shè)計(jì)有利于調(diào)試,在程序發(fā)布時(shí)將標(biāo)簽設(shè)置為隱藏即可。

2.3.4 保存按鈕事件

將Label7.Caption和Label6.Caption保存到INI文件中,并且在字符串前加上變量數(shù)量,根據(jù)所選的可編程界面,存入不同的節(jié)名和鍵名下。通過windows內(nèi)核提供的API接口WritePrivateProfileString實(shí)現(xiàn)對(duì)INI的寫入[6],部分代碼如下:

2.3.5 按字母索引按鈕事件

進(jìn)行27次循環(huán)計(jì)數(shù),計(jì)數(shù)值為0時(shí)代表列表框list1應(yīng)顯示全部變量,計(jì)數(shù)值為1至27時(shí)代表列表框list1應(yīng)顯示以A到Z開頭的變量。列表框list1顯示全部變量名稱的代碼與變量編輯界面的form_load事件中的一樣,列表框list1顯示以A到Z開頭的變量名稱通過SELECT LIKE語句實(shí)現(xiàn)[7],部分代碼如下:

2.3.6 主界面“選擇”按鈕事件

主界面如圖5所示,在主界面窗體程序中設(shè)置兩個(gè)表示光標(biāo)方向的變量,根據(jù)列坐標(biāo)可判斷當(dāng)前光標(biāo)在固定顯示界面還是可編程界面,根據(jù)行坐標(biāo)便可確定操作人員希望進(jìn)入的界面。以上得到確認(rèn)后,首先加載下一個(gè)窗體,然后調(diào)用下一個(gè)窗體的show方法,最后卸載當(dāng)前窗體[8]。這樣的設(shè)計(jì)保證同一時(shí)刻只用一個(gè)窗體在運(yùn)行,有效控制了系統(tǒng)內(nèi)存和CPU占用率,同時(shí)避免了先卸載后加載過程中短暫顯示系統(tǒng)桌面的現(xiàn)象。

2.3.7 50 ms定時(shí)觸發(fā)事件

可編程數(shù)據(jù)顯示界面如圖 7所示,該界面的50ms定時(shí)器觸發(fā)事件實(shí)現(xiàn)顯示界面的刷新,數(shù)據(jù)解析工作。根據(jù)從 INI文件讀取的當(dāng)前界面所顯示變量的名稱,為變量標(biāo)題標(biāo)簽組賦值。根據(jù)從 INI文件讀取的當(dāng)前界面所顯示變量的 id,為變量單位標(biāo)簽組賦值,同時(shí)id也確認(rèn)了數(shù)據(jù)的解析方法。

3 設(shè)計(jì)效果

本界面可編程的機(jī)車微機(jī)顯示系統(tǒng)軟件主界面如圖5所示,在界面上半部分顯示機(jī)車工況、牽引力等基本信息和報(bào)警信息。左半部分是按機(jī)車子系統(tǒng)或功能劃分的顯示界面,這些界面顯示內(nèi)容都是固定不變的。右半部分是9個(gè)可編程界面,在沒有對(duì)其編程時(shí)顯示標(biāo)題為“未定義”。操作下面的方向按鈕可以使相應(yīng)位置的菜單光標(biāo)變亮,操作功能按鈕可以選擇固定界面與可編程界面,也可以編輯可編程界面以及刪除之前編輯的可編程界面。

圖5 主界面Fig.5 Main form

按下編輯按鈕進(jìn)入變量編輯界面如圖6所示。在該界面中可以選擇變量,同時(shí)為提高檢索效率,開發(fā)出了按變量單詞首字母檢索的功能。選擇完變量之后按保存按鈕,就可在主界面出現(xiàn)一個(gè)以編輯日期為標(biāo)題的菜單。菜單的標(biāo)題為月日時(shí)分秒,以實(shí)心點(diǎn)分隔。選擇并進(jìn)入該菜單可以看之前編輯的變量,如圖7所示,對(duì)于數(shù)字量而言其數(shù)值顯示的“開”或“關(guān)”,對(duì)于模擬量而言其數(shù)值有效位不同且數(shù)值后面需有單位跟隨。

圖6 變量編輯界面Fig.6 V ariable edit form

圖7 可編程數(shù)據(jù)顯示界面Fig.7 Pr ogrammable data form

4 結(jié)論

本文所設(shè)計(jì)的界面可編程的機(jī)車微機(jī)顯示系統(tǒng)軟件,打破以往同類型軟件的設(shè)計(jì)思路,創(chuàng)造性的提出了界面可編程的概念。目前,本軟件運(yùn)行于國(guó)產(chǎn)某和諧型內(nèi)燃機(jī)車微機(jī)顯示屏,運(yùn)行效果良好。本軟件為機(jī)車微機(jī)控制系統(tǒng)研發(fā)、出廠調(diào)試、機(jī)務(wù)運(yùn)用、故障分析和排查提供了極大的支持。下一步將結(jié)合其他操作系統(tǒng)進(jìn)行開發(fā),使本軟件成為一種跨平臺(tái)的通用性軟件。

[1] 溫陽東. 基于CAN總線的機(jī)車LCU通信系統(tǒng)設(shè)計(jì)[J]. 安徽大學(xué)學(xué)報(bào)(自然科學(xué)版), 2005, 29(4): 63-65.WEN Y D. The locomotive LCU system design based on CAN bus[J]. Journal of Anhui university natural science edition, 2005, 29(4): 63-65. (in Chinese)

[2] 張林峰, 羊四清. Visual Basic程序設(shè)計(jì)[M]. 北京: 中國(guó)鐵道出版社, 2009.ZHANG L F, YANG S Q. Visual Basic program design [M].Beijing: China Railway Press, 2009. (in Chinese)

[3] 劉玉海, 劉冰. SQLite嵌入式數(shù)據(jù)庫及圖象處理技術(shù)研究[J]. 軟件, 2012, 33(8): 102.LIU Y H, LIU B. SQLite Embedded Database and Image Processing Technology Research[J]. Software, 2012, 33(8):102. (in Chinese)

[4] 劉軍. 利用 VB 語言實(shí)現(xiàn)決策樹構(gòu)建算法的實(shí)驗(yàn)研究[J].軟件, 2013, 34(1): 175-176.LIU J. Experiment Research On using VB to Construct Decision Tree[J]. Software, 2013,34(1): 175-176. (in Chinese)

[5] MICHAEL Owens, The Definitive Guide to SQLite[M]. US:APress, 2006.

[6] 周澤云, 向陽霞. 基于SQLite數(shù)據(jù)庫的裝備數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 四川兵工學(xué)報(bào), 2014, 35(11): 61.ZHOU Z Y, XIANG Y X. Design of equipment data acquisition system based on SQLite [J]. Journal of Sichuan ordnance,2014, 35(11): 61. (in Chinese)

[7] 文奇. 基于VB與SQL的路譜管理系統(tǒng)設(shè)計(jì)與開發(fā)[J]. 包裝工程, 2012, 3(33): 81-84.WEN Q. Road spectrum system design based on VB and SQL[J]. Packaging engineering, 2012, 3(33): 81-84. (in Chinese)

[8] 李亞非. Visual Basic 程序設(shè)計(jì)教程[M]. 南京: 南京大學(xué)出版社, 2009.LI Y F. Program design course of Visual Basic [M]. Nanjing:Nanjing university press, 2009. (in Chinese)

猜你喜歡
按鈕界面數(shù)據(jù)庫
這些按鈕能隨便按嗎?
當(dāng)你面前有個(gè)按鈕
國(guó)企黨委前置研究的“四個(gè)界面”
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
數(shù)據(jù)庫
人機(jī)交互界面發(fā)展趨勢(shì)研究
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
手機(jī)界面中圖形符號(hào)的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 夜夜操国产| 国产手机在线小视频免费观看| 亚洲欧美另类日本| 99热在线只有精品| 国产精品视频系列专区| 五月婷婷激情四射| 喷潮白浆直流在线播放| 内射人妻无套中出无码| 国产精品女主播| 国产一级在线播放| 男女男免费视频网站国产| 亚洲欧美在线看片AI| 精品无码日韩国产不卡av| 国产成a人片在线播放| 国产超碰一区二区三区| 欧美精品黑人粗大| 在线观看亚洲精品福利片 | 国产成人免费视频精品一区二区| 成年人国产视频| 国产一二三区在线| 一级不卡毛片| 亚洲aaa视频| 制服丝袜国产精品| 成·人免费午夜无码视频在线观看| 国产成人久久综合一区| 国产精品浪潮Av| 女人爽到高潮免费视频大全| 丰满人妻一区二区三区视频| 国产一级无码不卡视频| 欧美三級片黃色三級片黃色1| 三级视频中文字幕| 国产精品欧美在线观看| 亚洲精品动漫在线观看| 天堂va亚洲va欧美va国产| 中国毛片网| 国产欧美日韩专区发布| 亚洲黄色视频在线观看一区| 啦啦啦网站在线观看a毛片 | 九九九国产| 日韩在线网址| 精品久久人人爽人人玩人人妻| 18禁不卡免费网站| 国产精品不卡片视频免费观看| 国产日本一区二区三区| 国产Av无码精品色午夜| 免费国产一级 片内射老| 国产精品视频999| 免费人成网站在线高清| 精品人妻一区二区三区蜜桃AⅤ| 一区二区三区四区精品视频 | 日日噜噜夜夜狠狠视频| 99草精品视频| 无遮挡国产高潮视频免费观看| 91青青在线视频| 欧美高清国产| 亚洲欧洲天堂色AV| 精品国产自| 亚洲看片网| 日本成人福利视频| 精品人妻一区无码视频| 一级香蕉人体视频| 伊人色在线视频| 国产精品欧美日本韩免费一区二区三区不卡 | 婷婷丁香在线观看| 麻豆国产在线观看一区二区| 久久狠狠色噜噜狠狠狠狠97视色| 日韩一二三区视频精品| 亚洲第一视频区| 成年网址网站在线观看| 欧美国产在线看| 精品午夜国产福利观看| 欧美人与牲动交a欧美精品| 亚洲国产成人麻豆精品| 999精品视频在线| 自拍欧美亚洲| 永久免费无码日韩视频| 国产色婷婷| 国产一级一级毛片永久| 欧美三级视频在线播放| 在线看免费无码av天堂的| 国内精品自在自线视频香蕉| 欧美特级AAAAAA视频免费观看|