當(dāng)前位置:首頁 > 測(cè)試測(cè)量 > 測(cè)試測(cè)量
[導(dǎo)讀]摘要:利用Qt提供的C++應(yīng)用程序開發(fā)框架,以單片機(jī)技術(shù)、數(shù)據(jù)庫技術(shù)為基礎(chǔ),結(jié)合學(xué)校原有的測(cè)量儀器設(shè)計(jì)了一套包括計(jì)算機(jī)分析、儲(chǔ)存數(shù)據(jù)的測(cè)量監(jiān)控系統(tǒng)。使用操作簡單,人機(jī)界面人性化,錯(cuò)誤機(jī)制的反饋信息能幫助操作

摘要:利用Qt提供的C++應(yīng)用程序開發(fā)框架,以單片機(jī)技術(shù)、數(shù)據(jù)庫技術(shù)為基礎(chǔ),結(jié)合學(xué)校原有的測(cè)量儀器設(shè)計(jì)了一套包括計(jì)算機(jī)分析、儲(chǔ)存數(shù)據(jù)的測(cè)量監(jiān)控系統(tǒng)。使用操作簡單,人機(jī)界面人性化,錯(cuò)誤機(jī)制的反饋信息能幫助操作者及時(shí)處理錯(cuò)誤操作,同時(shí)單組數(shù)據(jù)存儲(chǔ)幫助學(xué)生更好的記錄自己數(shù)據(jù),為學(xué)生提供了一個(gè)生動(dòng)有趣全面的實(shí)驗(yàn)平臺(tái)。
關(guān)鍵詞:C++;Qt;數(shù)據(jù)庫;單片機(jī);串行通信

    在應(yīng)用物理學(xué)科的“數(shù)字化壓力測(cè)量”實(shí)驗(yàn)裝置中,使用了模擬電路,數(shù)字電路,傳感器與單片機(jī)等學(xué)科技術(shù)知識(shí)。為了完成數(shù)據(jù)采集與分析,單靠單片機(jī)技術(shù)所構(gòu)成的硬件系統(tǒng)架構(gòu),雖然可以做到實(shí)時(shí)的監(jiān)控,但不利于數(shù)據(jù)處理的深化與更加深入詳細(xì)分析的表達(dá),數(shù)據(jù)的記錄也會(huì)帶來誤差,為了解決這些問題,讓學(xué)生能更好的領(lǐng)略到數(shù)字化時(shí)代的知識(shí),在完成數(shù)字化壓力測(cè)量檢測(cè)儀的基礎(chǔ)上,提出本課題的設(shè)計(jì)與實(shí)現(xiàn)。
    PC機(jī)具有強(qiáng)大數(shù)據(jù)處理,圖像顯示以及實(shí)時(shí)監(jiān)控的能力,利用PC機(jī)的這些特點(diǎn),同時(shí)編寫友好的應(yīng)用程序來實(shí)現(xiàn)數(shù)據(jù)的采集與分析,具有特殊意義——能夠提升整套測(cè)試系統(tǒng)的處理能力的上位機(jī)得以呈現(xiàn)。
    Qt提供的C++應(yīng)用程序開發(fā)框架,可以輕松實(shí)現(xiàn)“一次編寫,隨處編譯”的跨平臺(tái)解決方案,編寫的應(yīng)用程序能完美運(yùn)行于從windows 98到windows 7,從Mac OSX到Linux,從Solaris,HP-UX到其他基于X11的眾多Unix平臺(tái)上。
    這讓編寫的應(yīng)用程序可以運(yùn)行在不同的系統(tǒng),很大程度上方便移植。

1 總體架構(gòu)設(shè)計(jì)
    軟件整體架構(gòu)包括完善的菜單欄、啟動(dòng)畫面,工具欄,狀態(tài)欄和應(yīng)用程序主界面。軟件架構(gòu)如圖1所示。


    由啟動(dòng)畫面進(jìn)入程序主應(yīng)用程序,主應(yīng)用程序初始化界面提供一些必要的操作說明,單擊清除按鈕將會(huì)清除說明,然后進(jìn)入具體應(yīng)用程序配置,配置完成一些工具按鍵進(jìn)入使能狀態(tài)同時(shí)另一些按鍵進(jìn)入禁止使用狀態(tài)。
    軟件保留一個(gè)按鍵作為切換測(cè)量與監(jiān)控模式,具體的模式由單片機(jī)程序決定,默認(rèn)為測(cè)量模式。
    Qt是由C++體系實(shí)現(xiàn),采用先進(jìn)的信號(hào)槽機(jī)制,每一個(gè)類對(duì)應(yīng)一個(gè)功能,about.cpp中的about類提供軟件版本,作者和日期等信息,dis play.cpp中的Clock類提供數(shù)據(jù)回歸分析曲線擬合,fader.cpp中FaderWidget類提供對(duì)整體程序彈出窗口中淡入淡出效果,mainwindow.cpp中的MainWindow類提供應(yīng)用程序主體窗口,win_qextserialport.cpp提供的類用于串口配置底層驅(qū)動(dòng)文件。

2 界面布局設(shè)計(jì)
2.1 菜單欄、工具欄以及狀態(tài)欄的實(shí)現(xiàn)
    菜單可以讓用戶瀏覽應(yīng)用程序并且可以學(xué)會(huì)如何處理一些新的事情;上下文菜單和工具欄則提供了對(duì)那些常使用的功能進(jìn)行快速訪問的方法;狀態(tài)欄用于顯示狀態(tài)提示和其他一些臨時(shí)消息。
    在Q1中實(shí)現(xiàn)這3個(gè)子窗口是相通的,原理一樣,實(shí)現(xiàn)手法一樣,只是對(duì)用戶而言看上去不一樣。Qt里面有一個(gè)類,叫做QAction,QAction保存有關(guān)于這個(gè)動(dòng)作,也就是action的信息,神奇的是,QAction能夠根據(jù)添加的位置來改變自己的樣子,如果添加到菜單中,它就會(huì)顯示成一個(gè)菜單項(xiàng);如果添加到工具欄,它就會(huì)顯示成一個(gè)按鈕,QAction有一個(gè)屬性適用于狀態(tài)欄顯示setStatusTip。通過這個(gè)屬性可以設(shè)置狀態(tài)欄顯示信息。
    example=new QAction(tr(“”),this);
    example->setIcon(QIcon(“”));example->setStatusTip(tr(“”));
    最后給動(dòng)作添加一個(gè)槽,以便實(shí)現(xiàn)了信號(hào)槽connect(example,SIGNAL(triggered()),this,SLOT())。
2.2 添加控件的實(shí)現(xiàn)
    在Qt中每一個(gè)控件對(duì)應(yīng)于一個(gè)類,向窗口或控件添加其他控件只需指定相關(guān)類就完成了添加窗口的操作。
2.3 布局組件的實(shí)現(xiàn)
    在Qt中使用布局機(jī)制來實(shí)現(xiàn)控件的位置定位。只要把組件放入某一種布局之中,當(dāng)需要調(diào)整大小或位置的時(shí)候,Qt就知道該怎樣進(jìn)行調(diào)整。


    Qt一共有3種主要的Layout,分別是:QHBoxLayout水平方向從左到右布局;QVBoxLayout垂直方向從上到下布局;OGridLayout在一個(gè)網(wǎng)格中進(jìn)行布局。圖2是整體效果。

3 數(shù)據(jù)采集存儲(chǔ)顯示設(shè)計(jì)
3.1 數(shù)據(jù)存儲(chǔ)
    在測(cè)量模式下通過單擊獲取數(shù)據(jù)按鈕會(huì)獲得來自單片機(jī)系統(tǒng)發(fā)送過來的實(shí)時(shí)測(cè)量數(shù)據(jù)。從數(shù)據(jù)顯示獲取系統(tǒng)采集的時(shí)間來精確記錄數(shù)據(jù)信息。如果不需要在應(yīng)用程序界面上顯示,可以通過單擊寫入文件按鈕,此時(shí)數(shù)據(jù)將會(huì)寫入到具體文件中去,操作者可以保存以自己姓名學(xué)號(hào)為文件名的文件。Qt中通過QFile類訪問本地文件系統(tǒng)或者嵌入資源,同時(shí)還要使用QTextStream類來操縱文本文件,QTextStream會(huì)自動(dòng)將Unicode編碼同操作系統(tǒng)編碼進(jìn)行轉(zhuǎn)化。
3.2 數(shù)據(jù)分析與擬合
    為了方便學(xué)生實(shí)驗(yàn),通過獲取每個(gè)學(xué)生實(shí)驗(yàn)數(shù)據(jù)進(jìn)行回歸分析以及擬合曲線,對(duì)應(yīng)于每個(gè)button是由數(shù)據(jù)增和數(shù)據(jù)減求得平均值;學(xué)生由于誤操作導(dǎo)致獲取的數(shù)據(jù)不正確,可以通過單擊刪除按鈕刪除該數(shù)據(jù),然后重新獲取數(shù)據(jù)。學(xué)生可以通過原始數(shù)據(jù)擬合曲線和回歸分析后的擬合曲線進(jìn)行對(duì)比。在Qt中沒有具體數(shù)據(jù)圖表控件,因此需要自定義控件。
3.3 解決方案
    利用Qt中繪圖控件QPainter當(dāng)獲取每個(gè)數(shù)據(jù)時(shí),在屏幕上打印出相對(duì)應(yīng)的點(diǎn),這樣就能擬合出曲線如圖3所示。同時(shí)利用坐標(biāo)變換trans late方法重新定義原點(diǎn),這樣更有利于坐標(biāo)的繪制。


    如圖3所示,首先畫出網(wǎng)格坐標(biāo)軸,然后將獲取到的數(shù)據(jù)轉(zhuǎn)化為相對(duì)應(yīng)的具體左邊打印出該點(diǎn):
    paint,drawEllipse(((i+1)*24)+2,-(share[i]/10/5*24)+4,-6,-6);/畫點(diǎn),最后由回歸分析擬合出數(shù)據(jù)表達(dá)式。

4 數(shù)據(jù)庫設(shè)計(jì)
    QtSql模塊提供了與平臺(tái)以及數(shù)據(jù)庫種類無關(guān)的訪問SQL數(shù)據(jù)庫接口。這個(gè)接口由利用Qt的模型/視圖結(jié)構(gòu)將數(shù)據(jù)庫與用戶界面集成的一套類來集成。
    本應(yīng)用程序采用微軟開發(fā)的SQL Setwer2005作為數(shù)據(jù)庫引擎,用戶界面采用Qt編寫,當(dāng)系統(tǒng)處于監(jiān)控模式時(shí),需要數(shù)據(jù)的實(shí)時(shí)監(jiān)控和存儲(chǔ),數(shù)據(jù)量將非常大使用文件存儲(chǔ)不適合,同時(shí)利用數(shù)據(jù)庫提供的查詢語句Select、修改update、刪除delete等語句,可以方便地管理數(shù)據(jù)庫。

5 軟件美化
5.1 國際化
    Qt中國際化的方式有很多種,常使用的QTextCodec類和使用tr()函數(shù),前者將編碼名稱寫到代碼里面,除非使用Unicode編碼,否者編碼依然是一個(gè)問題,本軟件系統(tǒng)設(shè)計(jì)時(shí)使用tr()函數(shù)實(shí)現(xiàn)應(yīng)用程序的國際化。同時(shí)在main函數(shù)中增加一個(gè)QTranslator對(duì)象,這樣應(yīng)用程序就變成了中文。
5.2 淡入淡出效果
    當(dāng)窗體進(jìn)行頁面切換時(shí),原頁面的消失和新頁面的顯示并不是瞬間切換的,而是逐漸消隱和逐漸顯現(xiàn)的過程。


    本應(yīng)用程序中實(shí)現(xiàn)的fader類就是用于實(shí)現(xiàn)這種效果,在響應(yīng)頁面切換時(shí),新建一個(gè)窗體,此窗體是一個(gè)與對(duì)話框等尺寸的空白窗體,此窗體由透明逐漸變成不透明就完成了淡入淡出的效果,如圖4所示。

6 Qt串口通信
    在Qt中沒有特定的串口控制類,采用第三方寫的qextserialport類如圖5,文件中包含QextSerialBase類,Win_QextSerialPort類,Pos ix_QextSerialPort類,QextSeralPort是所有類的子類,是最高的抽象,它屏蔽了平臺(tái)特征,使得在任何平臺(tái)上都可以使用。


    對(duì)于串口的讀取方式有Polling模式即查詢模式還有EventDriven事件驅(qū)動(dòng)模式。
    事件驅(qū)動(dòng)方式就是使用處理串口的讀取,一旦有數(shù)據(jù)到來就會(huì)發(fā)出readyRead()信號(hào),設(shè)計(jì)者可以關(guān)聯(lián)該信號(hào)來讀取串口數(shù)據(jù)。在事件驅(qū)動(dòng)的方式下,串口的讀寫是異步的調(diào)用讀寫函數(shù)會(huì)立即返回,它們不會(huì)凍結(jié)調(diào)用線程。
    而查詢方式則不同,讀寫函數(shù)是同步執(zhí)行,信號(hào)不能工作在這種模式下,但這種模式下開銷小,需要自己建立定時(shí)器來讀取串口數(shù)據(jù)。
    Windows下可以使用兩種方式而在Linux下只能使用查詢Polling方式。

7 結(jié)束語
    本軟件測(cè)試系統(tǒng)界面直觀、友好,數(shù)據(jù)存儲(chǔ)方便,分組存儲(chǔ)更能方便學(xué)生記錄數(shù)據(jù)。軟件能后滿足實(shí)驗(yàn)室的測(cè)量要求,并且省去了繁瑣的數(shù)據(jù)記錄、處理的過程。學(xué)生可以更直觀地觀測(cè)壓力的變化。在通信協(xié)議不變的條件下,軟件和硬件平臺(tái)可以分別進(jìn)行改進(jìn)、擴(kuò)展,使其更加完善。應(yīng)用程序的跨平臺(tái)性,可以完美運(yùn)行于各種操作系統(tǒng),從Windows到Mac OS,從Linux到Unix及一些嵌入式系統(tǒng)上。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉