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

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

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

周 敏,郭迎慶,李永博

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

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

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

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

1 Qt 技術

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

2 界面設計及程序實現

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

2.1 界面布局

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

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

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

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

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

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”,執行將前面數據的總和加上一個新數據作為新的總和,再將新的總和與數據個數相除得到當前數組的平均值,如此不斷循環進行。 程序如下:

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

2.2.2 按鍵控制實現

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

啟動和暫停按鈕使用的是QTimer 類的槽“[slot]void QTimer::stop( )”和“[slot]void QTimer::start( )”。 當點擊按鈕控件時,按鈕控件會發出單擊信號,相應的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");

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

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

在實際太陽能充電過程中,用于繪制折現圖形的數據通過電壓傳感器獲得。 為了便于界面設計,在此使用任意樣本數據來代替。 將樣本數據保存于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 操作系統中Qt 模塊所設計的太陽能充電顯示界面,能夠實現太陽能充電過程的數據實時動態的監測功能。

4 結語

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

猜你喜歡
按鈕界面設計
這些按鈕能隨便按嗎?
當你面前有個按鈕
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
內心不能碰的按鈕
商業評論(2014年9期)2015-02-28 04:32:41
主站蜘蛛池模板: 青青热久麻豆精品视频在线观看| 爽爽影院十八禁在线观看| AV色爱天堂网| 五月六月伊人狠狠丁香网| 精品视频免费在线| 香蕉伊思人视频| 亚洲成人一区二区| 少妇人妻无码首页| 国产女人在线观看| 久久综合色88| 自拍偷拍欧美日韩| 青青操国产| 亚洲AV人人澡人人双人| 亚洲精品少妇熟女| 国产男女免费视频| 国产在线观看99| 婷婷伊人久久| 欧美激情视频在线观看一区| 青草视频网站在线观看| 亚洲毛片一级带毛片基地 | 激情五月婷婷综合网| 尤物在线观看乱码| 波多野结衣第一页| 欧美精品亚洲精品日韩专区| 国产成人区在线观看视频| 亚洲天堂伊人| 岛国精品一区免费视频在线观看| 免费无码在线观看| 国产麻豆精品久久一二三| 香蕉视频在线观看www| 伊人大杳蕉中文无码| 久久精品欧美一区二区| 国产主播喷水| 成人国产小视频| 亚洲天堂久久| 亚洲综合九九| 久久国产精品麻豆系列| 麻豆精品久久久久久久99蜜桃| 色吊丝av中文字幕| 色综合久久88| 国产综合网站| 波多野结衣无码中文字幕在线观看一区二区| 天天做天天爱夜夜爽毛片毛片| 囯产av无码片毛片一级| 97视频免费在线观看| 日韩亚洲综合在线| 午夜国产理论| 这里只有精品在线播放| 国产精品久久自在自线观看| 91精品啪在线观看国产91| 一级片免费网站| 四虎亚洲国产成人久久精品| 一区二区欧美日韩高清免费| 亚洲男人的天堂久久香蕉 | 亚洲va视频| 激情在线网| 国产成年女人特黄特色大片免费| 国产精品妖精视频| 亚洲欧洲AV一区二区三区| 免费A∨中文乱码专区| 天天摸夜夜操| 国产成人一区免费观看| 亚洲国产成人在线| 日韩小视频网站hq| 国内精品免费| 久久国产精品无码hdav| 欧美有码在线| 国产99精品久久| 国产精欧美一区二区三区| 免费xxxxx在线观看网站| 国产毛片一区| 99资源在线| 91尤物国产尤物福利在线| 久久精品国产电影| 精品国产一二三区| 91毛片网| 久久无码av一区二区三区| 婷婷五月在线视频| 55夜色66夜色国产精品视频| 黄色网址手机国内免费在线观看| 69免费在线视频| 制服丝袜在线视频香蕉|