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

基于QT 的太陽能充電顯示界面的設計

2019-10-09 05:25:56郭迎慶李永博
自動化與儀表 2019年9期
關鍵詞:按鈕界面設計

周 敏,郭迎慶,李永博

(南京林業(yè)大學 機械電子工程學院,南京210037)

太陽能作為一種新能源,以其清潔、無污染、取之不盡等優(yōu)點,被寄予了厚望。 對太陽能的利用主要是通過太陽能的光伏作用來收集能源。

20 世紀80年代以前,光伏發(fā)電應用得并不多,與光伏發(fā)電相關的監(jiān)控儀表也很少,主要通過人工的方式對系統(tǒng)進行監(jiān)控。 操作人員手工操作發(fā)電系統(tǒng),使用檢測儀表對系統(tǒng)進行檢測、記錄,誤差較大。 這種傳統(tǒng)方法很明顯已經不適合現今高速發(fā)展的時代。 如今,光伏發(fā)電已經得到了大力發(fā)展,國外在光伏發(fā)電的監(jiān)控技術方面已經較為成熟,但由于人們比較關注光伏發(fā)電的產業(yè)化,監(jiān)控系統(tǒng)主要為提高光伏發(fā)電的效率,研究重點放在了系統(tǒng)的控制方面,對于系統(tǒng)的監(jiān)測和維護考慮得很少[1-3]。 故在此基于Linux 操作系統(tǒng)的Qt 模塊設計了太陽能充電顯示界面。

該太陽能充電顯示界面可以將太陽能充電過程產生的電壓數據實時顯示,并且以折線圖的形式動態(tài)呈現,因此可以獲得太陽能充電過程的原始數據,為太陽能充電系統(tǒng)的改進與優(yōu)化以及科學研究提供有用的數據,它的設計對光伏發(fā)電技術的進一步推廣和應用具有十分重要的意義。

1 Qt 技術

Qt 是一個跨平臺的C++圖形用戶界面應用程序開發(fā)框架,由挪威TrollTech 公司出品。 Qt 具有優(yōu)良的跨平臺特性、可移植性、面向對象、海量幫助文檔、開源等優(yōu)點。Linux 下的Qt Designer 簡化了用戶界面設計過程, 提供了大量封裝好的工具和接口,用戶可以輕而易舉地通過拖拽的方式布控Qt 界面控件。 布局完成后,可以通過簡單的方式對各個窗口控件以及界面風格進行相應的參數設置。 總之,Qt Designer 為太陽能充電過程監(jiān)測的顯示界面設計提供了便捷的方式。

2 界面設計及程序實現

文中設計的圖形顯示界面是用于監(jiān)測太陽能充電過程中電壓的變化的。 首先需要對整個顯示界面中的控件進行合理布局,然后編程實現各個控件的功能以及控件間的關系,最后實現繪制實時動態(tài)曲線圖。

2.1 界面布局

在Qt 程序開發(fā)中,除了可以手寫代碼實現軟件開發(fā)外, 還可以通過Qt 的GUI 界面設計器Qt Designer 進行界面的繪制和布局。 通過鼠標直接拖拽窗口部件,便能高效、快速地實現GUI 界面的設計。根據設計要求,顯示界面的設計主要包括數據顯示模塊、按鍵控制模塊、圖形顯示模塊,如圖1 所示。

圖1 圖形顯示界面布局Fig.1 Graphic display interface layout

1)數據顯示模塊 該模塊用于顯示實時數據。進入Qt 設計器主界面后,在頂層窗口部件中劃分一塊區(qū)域作為數據顯示模塊,再將其用網格布局劃分為4 部分,分別為最大值、最小值、平均值和當前值。

2)按鍵控制模塊 在實際工程中,顯示界面往往需要一個啟停的控制按鈕。 在界面上拖拽2 個QPushButton 部件作為啟停控制按鈕和保存按鈕,通過點擊“啟動”按鈕即可控制數據動態(tài)顯示的開始和暫停。 點擊“保存”按鈕,實現對監(jiān)測數據的保存,以便后期用于數據分析。

3)圖形顯示模塊 最終的數據以折線圖的形式顯示在圖形顯示模塊,橫坐標為時間,縱坐標為數值。 在此界面圖形的繪制主要依賴Qt Charts 模塊。 在Qt Charts 發(fā)布之前,Qt 比較著名的2 個畫圖插件是Qwt 和Qcustom,其中Qcustom 較輕量,只需要在project 中包含qcustomplot.h 和qcustomplot.cpp幾乎就可以使用。 相比Qcustom,Qwt 的功能更為強大,但其安裝不便,且僅是對靜態(tài)圖表的表示非常出色,動態(tài)曲線表現性能并不突出。

2.2 控件實現

整個顯示界面中控件的布局完成后,需要在“.h”和“.cpp”文件中對所選擇的控件進行定義和聲明,然后這些控件才能實現其功能。

2.2.1 數據顯示的實現

實時獲得最大值和最小值的算法主要用到了QList 和QSort 類。QList<T>是最常用的容器,在此用于存儲得到的數據。Qsort<T>是Qt 中自帶的快速排序函數。 將列表的數據按照升序形式進行排序,然后將排序的結果輸出,第1 個值即為最小值,最后一個值即為最大值。 程序如下:

實時獲得平均值同樣用到了QList 類。首先使用QList 的“int QList::count(const T &value) const”,不斷對產生的數據個數進行計數。 然后使用“const T &QList::at(int i) const”,執(zhí)行將前面數據的總和加上一個新數據作為新的總和,再將新的總和與數據個數相除得到當前數組的平均值,如此不斷循環(huán)進行。 程序如下:

實時輸出當前值則是直接將新增的數輸出,程序如下:

2.2.2 按鍵控制實現

Qt 提供了信號和槽機制用于完成界面操作的響應,是完成任意2 個Qt 對象之間的通信機制。 其中, 信號會在某個特定情況下或動作下被觸發(fā),槽是等同于接受并處理信號的函數。

啟動和暫停按鈕使用的是QTimer 類的槽“[slot]void QTimer::stop( )”和“[slot]void QTimer::start( )”。 當點擊按鈕控件時,按鈕控件會發(fā)出單擊信號,相應的QTimer 的槽函數接收到這個信號,開始調用停止/開始的函數。 程序如下:

2.2.3 圖形顯示實現

文中界面圖形的繪制主要依賴Qt Charts 模塊。 在安裝Qt 的時候,如果選擇了Qt charts 部分,那么在Qt 中使用charts 時,只需要在“.pro”文件中添加語句“QT += charts”,并且在程序的開頭加上一句“using namespace Qtcharts”或者一個宏“QT_CHARTS_USE_NAMESPACE?”。

繪制折線圖時, 最先考慮其坐標軸。 縱坐標Y軸固定不變,所以可通過“chart->createDefaultAxes( )”語句設置。 對于二維坐標軸的設定,定義maxY為100,滿足所有數據不超過該值。 通過“axisY()->setRange (a,b)” 來設定Y 軸 (其中a,b 為任意常數),將Y 軸設定為0~maxY。 程序如下:

對圖形顯示的命名使用setTitle()函數,默認居中顯示。將圖標命名為“Dynamic display”。使用語句chart->setTitle("Dynamic display");

由于所設計的顯示界面用于實時動態(tài)顯示數據, 即折線圖要隨著橫坐標X 軸的增長而實時變化。 當數據還未填充整個顯示區(qū)時,曲線從右到左逐漸出現,當充滿顯示區(qū)后,舊數據用新數據來替代,核心算法就是收到一個新的數據時添加到List的后面,并把List 的第1 個數據刪除,看上去就是曲線向前滑動了一步。X 軸獲取系統(tǒng)當前時間,并且隨時間滾動。 程序如下:

當數據個數超額,則刪除最前面的數據,程序如下:

在實際太陽能充電過程中,用于繪制折現圖形的數據通過電壓傳感器獲得。 為了便于界面設計,在此使用任意樣本數據來代替。 將樣本數據保存于config.txt 文本中,用<QFile>來讀取config.txt 文件中的數據。 程序如下:

將產生的數據用折線圖表示出來, 如圖2a 所示,圖中所顯示的折線帶有很明顯的鋸齒狀。 為了使所顯示的線更光滑平整,且消除鋸齒,通過語句:

chartView->setRenderHint (QPainter::Antialiasing)來提高抗鋸齒渲染的能力。 經過抗鋸齒處理,顯示的線條更加光滑,如圖2b 所示。

圖2 抗鋸齒處理前后的數據折線圖Fig.2 Data line diagram before and after anti-aliasing treatment

最后,為了界面的美觀,需要對圖標的位置進行必要的布局。 常用的布局方式有3 種:水平布局、垂直布局、網格布局。

在“.cpp”文件的開始定義#include<QHboxLayout>類,QhboxLayout 便是水平布局, 可以設置整個圖形距離窗口的邊距。通過“setContentsMargins(a,b,c,d)”,調整圖形顯示框的上下左右與頂層窗口的距離,這樣使圖形界面顯得更整齊。 該設計將邊距全部調整為0,整個圖標填充滿整個窗口。 程序如下:

Qchartview 類是為了顯示曲線,“ui->chartView->setChart(chart);”的作用是將圖形和窗口建立聯系,使圖形放在窗口中顯示。 沒有這2 條語句,繪制的圖形就不會顯示,僅有一個空白的窗口而已。

3 界面測試

為了驗證所設計界面的有效性和準確性,采用了2 組不同的數據在該界面中進行顯示。

第1 組數據由正弦函數產生,即

式中:t 為時間變量。 該函數在所設計界面上的實時顯示如圖3 所示。 界面測試之正弦信號顯示可見,該界面能準確地顯示正弦信號。

圖3 界面測試之正弦信號顯示Fig.3 Sinusoidal signal display for interface testing

第2 組測試數據采用實時采集的太陽能充電過程中蓄電池端電壓的電壓值。 數據采集當天所用的太陽能電池板開路電壓, 為20.1 V; 工作電壓為11.33~11.44 V。 要求充電測試當天光照充足, 溫度28 ℃。所采集的具體數值見表1。運行后界面顯示效果如圖4 所示。

表1 太陽能充電電壓Tab.1 Solar charging voltage

圖4 界面測試之充電電流顯示Fig.4 Interface test charging current display

將太陽能充電的數據用Excel 繪制,如圖5 所示。通過對比可見,該顯示界面能夠準確顯示數據組。

圖5 蓄電池端電壓隨時間的變化Fig.5 Variation of battery terminal voltage with time

以上2 組數據測試表明, 在此基于Linux 操作系統(tǒng)中Qt 模塊所設計的太陽能充電顯示界面,能夠實現太陽能充電過程的數據實時動態(tài)的監(jiān)測功能。

4 結語

基于Linux 的Qt 模塊設計的圖形界面,能夠滿足太陽能充電過程的數據監(jiān)控。 其中,界面設計在Linux 操作系統(tǒng)下開發(fā),主要包括顯示界面的設計、數據的動態(tài)顯示以及橫軸的實時滾動。 通過界面測試,表明設計的該圖形界面準確地實現了實時采集數據的實時動態(tài)顯示功能。

猜你喜歡
按鈕界面設計
這些按鈕能隨便按嗎?
當你面前有個按鈕
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
基于FANUC PICTURE的虛擬軸坐標顯示界面開發(fā)方法研究
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
人機交互界面發(fā)展趨勢研究
手機界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
內心不能碰的按鈕
主站蜘蛛池模板: 99在线视频网站| 国产91熟女高潮一区二区| 亚洲天堂免费在线视频| 在线免费看片a| aaa国产一级毛片| 久久视精品| 米奇精品一区二区三区| 亚洲第一黄色网址| 国产在线啪| 99久久精品久久久久久婷婷| 日韩精品少妇无码受不了| 精品超清无码视频在线观看| 2021亚洲精品不卡a| 亚洲av色吊丝无码| 啪啪免费视频一区二区| 亚洲成AV人手机在线观看网站| 日本精品αv中文字幕| 亚洲人成色在线观看| 国产亚洲男人的天堂在线观看 | 国产乱子伦精品视频| 日本精品视频| 色综合天天综合| 日本一区二区三区精品视频| 欧美色综合网站| 亚洲成aⅴ人在线观看| 久久精品国产精品一区二区| 亚洲成综合人影院在院播放| 欧美另类视频一区二区三区| 天天躁日日躁狠狠躁中文字幕| 国产一区二区免费播放| 亚洲aaa视频| a色毛片免费视频| 天天摸天天操免费播放小视频| 一本一道波多野结衣一区二区| 午夜国产理论| 香蕉久久永久视频| 亚洲欧美一区在线| 999在线免费视频| 欧美在线国产| 好紧好深好大乳无码中文字幕| 国产呦视频免费视频在线观看| 欧美综合区自拍亚洲综合绿色 | 992tv国产人成在线观看| 国产欧美日本在线观看| 成人韩免费网站| 激情六月丁香婷婷四房播| 亚洲精品视频网| 国产激情国语对白普通话| 国产美女精品在线| 色婷婷在线影院| 亚洲精品手机在线| 国产精品福利社| 999精品色在线观看| 啦啦啦网站在线观看a毛片| 国产H片无码不卡在线视频| 99久久精品视香蕉蕉| 高清欧美性猛交XXXX黑人猛交 | 国产精品不卡永久免费| 伊人久久大香线蕉aⅴ色| 天堂网亚洲系列亚洲系列| 永久免费无码成人网站| 国产偷国产偷在线高清| 中日韩欧亚无码视频| 97影院午夜在线观看视频| 成年女人18毛片毛片免费| 毛片网站免费在线观看| 小说 亚洲 无码 精品| 久久精品午夜视频| 91视频99| 久久午夜夜伦鲁鲁片无码免费| 3p叠罗汉国产精品久久| 亚洲精选无码久久久| 97成人在线观看| 青青草原偷拍视频| 日本一区高清| 白浆免费视频国产精品视频| 亚洲日本www| 久久免费成人| 欧美成人aⅴ| 国产一区二区精品福利| 精品久久久久久成人AV| 无码福利日韩神码福利片|