幾年前基于stm32平臺(tái)做過一套簡(jiǎn)單的組態(tài)程序,基本上能滿足公司項(xiàng)目的需求,但是對(duì)于一些復(fù)雜的功能需求,這套軟硬件就顯得愛莫能助了,并且stm32是在全裸機(jī)的條件下開發(fā),整套工程導(dǎo)出需要借助上位機(jī)開發(fā)的界面編輯軟件通過USB讀寫,很是麻煩。一個(gè)看似簡(jiǎn)單的控件繪圖,可能需要編寫大量的程序。一直想著嘗試在QT環(huán)境下來做一套功能升級(jí)的替代。直到看到這款OK3399-C,不管是硬件資源還是性能,都很合適。大致羅列一下我想到的一些基礎(chǔ)控件:
1、 按鍵(分普通按鍵和帶狀態(tài)鎖的)
2、 動(dòng)態(tài)數(shù)據(jù)顯示控件
3、 靜態(tài)文本顯示控件
4、 儀表
5、 柱狀圖
6、 曲線圖
7、 狀態(tài)顯示
8、 表格
9、 腳本執(zhí)行器
10、…
本次時(shí)間有限,先實(shí)現(xiàn)了三個(gè)控件的顯示:1、兩態(tài)按鍵(能綁定圖片和報(bào)警信號(hào),區(qū)分點(diǎn)擊狀態(tài),釋放狀態(tài)和報(bào)警狀態(tài))2、儀表(能設(shè)置儀表盤的角度區(qū)間和量程區(qū)間,表盤顏色,指針顏色等)3、曲線圖,能設(shè)置圖標(biāo)顏色,曲線顏色,X軸測(cè)量周期和Y軸測(cè)量值范圍等。
按鍵和儀表均通過QPainter實(shí)現(xiàn),曲線圖表初次嘗試使用QT的可視化視圖實(shí)現(xiàn)(貌似做動(dòng)態(tài)曲線不太方便,X軸刻度想做成自定義格式比較麻煩,先湊合用吧,后面再改),使用QT的可視化試圖需要安裝QtCharts包,OK3399-C提供的QT是不包含此包的。安裝QtCharts的方式如下
1、從github克隆源碼包
git clone https://github.com/qtproject/qtcharts.git
2、檢出版本分支
git checkout 5.7(一定要做這一步)
3、執(zhí)行qmake
4、執(zhí)行make
5、執(zhí)行安裝
make install
打開QtCreator
新建工程,ui界面類型選widget和mainwindow均可,名字隨意
QT工程中用Qtcharts需要對(duì)pro文件進(jìn)行設(shè)置
添加 QT +=??chart
我的ui是mainwindow,尺寸選擇1024x600,在mainwindow窗體添加QLable作為所有控件的父控件。
按鍵,儀表,曲線圖控件分別以三個(gè)類的方式實(shí)現(xiàn),代碼結(jié)構(gòu)如下:
控件在窗體中的拖動(dòng)通過捕獲鼠標(biāo)事件實(shí)現(xiàn),控件最終運(yùn)行效果如下:
本次項(xiàng)目最終實(shí)現(xiàn)的三個(gè)控件功能只是組態(tài)功能中最基本的顯示,曲線圖的拖動(dòng)效果還存在問題,后期功能開發(fā)還包括在頁面編輯中通過添加不同控件并編輯相關(guān)功能,保存數(shù)據(jù)庫(kù)或配置文件,這里暫定用json來存儲(chǔ)頁面的控件配置信息。至于數(shù)據(jù)交互,暫定使用RabbitMq和共享內(nèi)存的方式,通過RabbitMq可以將網(wǎng)絡(luò)中的數(shù)據(jù)匯集到本機(jī),本機(jī)將原始數(shù)據(jù)幀解析寫入共享內(nèi)存,方便應(yīng)用程序的本地快速讀寫。
fqj
電子發(fā)燒友App












































































評(píng)論