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

基于Qt5開(kāi)發(fā)的面向工業(yè)設(shè)備的狀態(tài)監(jiān)視及控制軟件

2023-08-26 04:13:24劉佳梁
電腦知識(shí)與技術(shù) 2023年20期
關(guān)鍵詞:網(wǎng)絡(luò)通信數(shù)據(jù)庫(kù)

劉佳梁

關(guān)鍵詞:Qt Creator;C++;狀態(tài)監(jiān)視;網(wǎng)絡(luò)通信;數(shù)據(jù)庫(kù)

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2023)20-0070-03

21世紀(jì)以來(lái),我國(guó)工業(yè)化進(jìn)程快速發(fā)展,工業(yè)自動(dòng)化設(shè)備呈現(xiàn)高精度、高集成的發(fā)展趨勢(shì),與此同時(shí),由于電子系統(tǒng)故障引發(fā)的災(zāi)難性事故時(shí)有發(fā)生,也因此造成大量的人力、物力損失,針對(duì)現(xiàn)代設(shè)備故障狀態(tài)監(jiān)控、設(shè)備管理及遠(yuǎn)程控制,研發(fā)一款設(shè)備狀態(tài)監(jiān)視及控制軟件,提供設(shè)備健康監(jiān)視平臺(tái),實(shí)現(xiàn)設(shè)備遠(yuǎn)程管理及控制,符合當(dāng)前設(shè)備管理的發(fā)展方向[1]。因此,提出了一種基于Qt Creator開(kāi)發(fā)環(huán)境,使用C++編程語(yǔ)言開(kāi)發(fā)的設(shè)備狀態(tài)監(jiān)視及管理軟件,軟件編寫過(guò)程中使用的Qt Creator 版本為5.9.1,MinGw 版本為5.3.0,運(yùn)行平臺(tái)為X86架構(gòu)計(jì)算機(jī),操作系統(tǒng)為Win?dows 10專業(yè)版。

1 軟件工作流程

軟件基于UDP/IP協(xié)議并采用組播的方式與系統(tǒng)內(nèi)各設(shè)備進(jìn)行通信,將接收到的來(lái)自各設(shè)備數(shù)據(jù)包解碼后分發(fā)給數(shù)據(jù)管理線程和界面管理線程,數(shù)據(jù)管理線程負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行分類、提取并存儲(chǔ),便于事后數(shù)據(jù)回放及分析[2]。界面管理線程實(shí)時(shí)更新設(shè)備狀態(tài)顯示,對(duì)于異常狀態(tài)進(jìn)行告警提示,同時(shí)響應(yīng)界面用戶操作,實(shí)現(xiàn)對(duì)設(shè)備遠(yuǎn)程控制。軟件工作流程圖如圖1 所示。

2 軟件界面

Qt Designer(界面設(shè)計(jì)師)提供了非常豐富的界面控件,使用鼠標(biāo)簡(jiǎn)單拖拽控件即可創(chuàng)建出程序界面框架,同時(shí)運(yùn)用Qt布局管理系統(tǒng)可以對(duì)程序界面實(shí)現(xiàn)布局、美化。軟件主界面如圖2所示。

Qt提供了信號(hào)與槽的機(jī)制,其中信號(hào)會(huì)在特定情況下被觸發(fā),槽函數(shù)則可以理解為與信號(hào)相對(duì)應(yīng)的響應(yīng)函數(shù),使用connect函數(shù)將信號(hào)與槽函數(shù)進(jìn)行連接,也可以通過(guò)disconnect函數(shù)斷開(kāi)信號(hào)與槽函數(shù)之間的連接關(guān)系,當(dāng)界面中控件狀態(tài)發(fā)生變化時(shí),系統(tǒng)會(huì)自動(dòng)發(fā)射相應(yīng)信號(hào),只需將處理函數(shù)與信號(hào)連接,便可實(shí)現(xiàn)界面操作響應(yīng)。

信號(hào)與槽函數(shù)有三個(gè)特點(diǎn):1) 信號(hào)之間可以互相連接;2) 一個(gè)信號(hào)可以連接多個(gè)槽函數(shù);3) 多個(gè)信號(hào)可以連接同一個(gè)槽函數(shù)。這三個(gè)特點(diǎn)決定了信號(hào)與槽函數(shù)的應(yīng)用非常靈活、便利,同時(shí)能夠極大降低對(duì)象之間的耦合度[3]。

當(dāng)界面中存在較多同類型控件需要響應(yīng)點(diǎn)擊操作時(shí),可以通過(guò)findChildren函數(shù)遍歷界面中同類型控件,在for循環(huán)中執(zhí)connect操作,減少重復(fù)代碼并且易于維護(hù)[4],如圖3所示。

findChildren 函數(shù)找到了MainWindow 下的所有QPushButton類型按鈕。然后給每一個(gè)按鈕設(shè)置圖標(biāo)和尺寸,通過(guò)connect 函數(shù)連接到buttonClick()槽函數(shù)[5]。槽函數(shù)代碼如圖4所示。

3 網(wǎng)絡(luò)通信

系統(tǒng)采用udp組播的方式進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)收發(fā)。Qt 提供QUdpSocket類用于實(shí)現(xiàn)udp通信,進(jìn)行udp通信前需要通過(guò)以下步驟對(duì)套接字進(jìn)行初始化[6]。

3.1 指定網(wǎng)卡

通常計(jì)算機(jī)中存在多塊網(wǎng)卡,QNetworkInterface::allInterfaces()可以獲得計(jì)算機(jī)中所有網(wǎng)卡,通過(guò)MAC 地址識(shí)別出指定網(wǎng)卡,使用setMulticastInterface函數(shù)指定用該網(wǎng)卡用于組播通信。

3.2 生存時(shí)間

設(shè)置組播數(shù)據(jù)的生存時(shí)間TTL(Time-To-Live)。TTL指一個(gè)數(shù)據(jù)報(bào)到達(dá)目的地址之前跳過(guò)網(wǎng)絡(luò)的最大次數(shù),可以理解為數(shù)據(jù)報(bào)每跨1個(gè)路由生存時(shí)間就會(huì)減1,程序中將生存時(shí)間設(shè)置為1,表示數(shù)據(jù)報(bào)只能在同一路由下的局域網(wǎng)內(nèi)傳播。

3.3 禁止回環(huán)

通過(guò)setSocketOption(QAbstractSocket:: Multicast?LoopbackOption,0)函數(shù),設(shè)置禁止回環(huán),表示本機(jī)不能接收自身發(fā)出的數(shù)據(jù)。

3.4 綁定IP地址及端口

通過(guò)bind函數(shù)綁定IP地址和端口,從而進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)報(bào)收發(fā)。當(dāng)有數(shù)據(jù)報(bào)傳入時(shí)會(huì)自動(dòng)發(fā)射ready?Read()信號(hào),通過(guò)connect()函數(shù)將readyRead()信號(hào)與ReceiveData()槽函數(shù)連接,即可在ReceiveData()函數(shù)中讀取并處理接收到的數(shù)據(jù)報(bào)。

3.5 加入組播組

使用joinMulticastGroup()函數(shù)加入指定組播組地址,便可以接受該組播組中的數(shù)據(jù)報(bào)。網(wǎng)絡(luò)初始化函數(shù)代碼如圖5所示。

網(wǎng)絡(luò)數(shù)據(jù)接收函數(shù)代碼如圖7所示,當(dāng)套接字中存在未讀取數(shù)據(jù)時(shí),hasPendingDatagrams()函數(shù)返回true。pendingDatagramSize()的值表示第一個(gè)數(shù)據(jù)報(bào)的長(zhǎng)度,同時(shí)初始化一個(gè)對(duì)應(yīng)長(zhǎng)度的QbyteArray變量,將readDatagram()讀取的數(shù)據(jù)報(bào)內(nèi)容存入變量中,在processData()函數(shù)中對(duì)讀取的數(shù)據(jù)報(bào)進(jìn)行解碼等處理[7]。網(wǎng)絡(luò)數(shù)據(jù)接收函數(shù)代碼如圖6所示。

網(wǎng)絡(luò)數(shù)據(jù)發(fā)送函數(shù)代碼如圖7所示。

4 數(shù)據(jù)庫(kù)

本軟件包含歷史狀態(tài)信息查詢及事后分析功能,選擇使用數(shù)據(jù)庫(kù)實(shí)現(xiàn)歷史信息存儲(chǔ)及查詢操作。Qt 為數(shù)據(jù)庫(kù)操作提供了QtSql模塊,其中包含一套無(wú)關(guān)于開(kāi)發(fā)平臺(tái)和數(shù)據(jù)庫(kù)類型的調(diào)用接口,通過(guò)運(yùn)用該模塊,實(shí)現(xiàn)數(shù)據(jù)庫(kù)和應(yīng)用程序的無(wú)縫銜接。開(kāi)發(fā)人員只需掌握基本的SQL語(yǔ)句,即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)。結(jié)合本軟件對(duì)數(shù)據(jù)庫(kù)的性能需求,最終選擇使用QSQLite數(shù)據(jù)庫(kù)[8]。

qt_sql_default_connection為數(shù)據(jù)庫(kù)的默認(rèn)連接名稱,實(shí)際應(yīng)用中,可以通過(guò)QSqlDatabase::addDatabase()函數(shù)的第二個(gè)參數(shù)指定連接名稱。第一個(gè)參數(shù)QSQLite表示使用SQLite數(shù)據(jù)庫(kù)。如果默認(rèn)連接不存在,則創(chuàng)建連接并添加數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)打開(kāi)函數(shù)代碼如圖8所示。

SQLite的創(chuàng)建表語(yǔ)句為CREATE TABLE,同時(shí)還可以判斷表是否已經(jīng)存在。創(chuàng)建表函數(shù)代碼如圖9所示,創(chuàng)建了一個(gè)名為temp_data的數(shù)據(jù)表,包含7列,第一列是id,類型是整型,設(shè)置為主鍵且自增長(zhǎng)。第二列是TIME,類型是可變字符串,最長(zhǎng)20個(gè)字符,五至六列為info,數(shù)據(jù)類型是浮點(diǎn)值。第七列為STATUS,數(shù)據(jù)類型是帶符號(hào)的整數(shù)[9]。

SQLite的插入語(yǔ)句是INSERT INTO,插入函數(shù)代碼如圖10所示。

QSqlQueryModel 類為SQL 結(jié)果集提供了一個(gè)只讀數(shù)據(jù)模型,是用于執(zhí)行 SQL 語(yǔ)句和遍歷結(jié)果集的高級(jí)接口,可用于為 QTableView 等視圖類提供數(shù)據(jù)。從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)操作如圖11 所示,通過(guò)can?FetchMore()、fetchMore()函數(shù),提取數(shù)據(jù)庫(kù)中整個(gè)結(jié)果集[10]。數(shù)據(jù)庫(kù)數(shù)據(jù)獲取函數(shù)代碼如圖11所示。

5 結(jié)束語(yǔ)

Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架,提供給應(yīng)用程序開(kāi)發(fā)者建立圖形用戶界面所需的所用功能,同時(shí),Qt還具有優(yōu)良的跨平臺(tái)特性,并提供豐富的API。在工程項(xiàng)目開(kāi)發(fā)中,使用Qt進(jìn)行程序開(kāi)發(fā)極大降低了使用者的學(xué)習(xí)成本。

主要介紹了使用Qt軟件進(jìn)行界面搭建、網(wǎng)絡(luò)數(shù)據(jù)通信模塊以及數(shù)據(jù)庫(kù)的建立和使用,在實(shí)際應(yīng)用過(guò)程中,軟件同時(shí)接收20余個(gè)分系統(tǒng)的實(shí)時(shí)狀態(tài)信息,對(duì)故障狀態(tài)進(jìn)行提示告警,同時(shí)將關(guān)鍵信息納入數(shù)據(jù)庫(kù),并對(duì)設(shè)備關(guān)鍵節(jié)點(diǎn)進(jìn)行控制。基于文中介紹的程序模型,可快速開(kāi)發(fā)出適用于類似場(chǎng)景的狀態(tài)監(jiān)視及控制軟件。

猜你喜歡
網(wǎng)絡(luò)通信數(shù)據(jù)庫(kù)
海上軍用網(wǎng)絡(luò)通信的安全控制技術(shù)
基于網(wǎng)絡(luò)通信的智能照明系統(tǒng)設(shè)計(jì)
電子制作(2019年15期)2019-08-27 01:11:48
計(jì)算機(jī)網(wǎng)絡(luò)通信常見(jiàn)問(wèn)題與技術(shù)發(fā)展研究
電子制作(2018年10期)2018-08-04 03:24:46
網(wǎng)絡(luò)通信中信息隱藏技術(shù)的應(yīng)用
基于網(wǎng)絡(luò)通信的校園智能音箱設(shè)計(jì)
電子制作(2018年1期)2018-04-04 01:48:30
談?dòng)?jì)算機(jī)網(wǎng)絡(luò)通信常見(jiàn)問(wèn)題及技術(shù)發(fā)展
電子制作(2017年17期)2017-12-18 06:41:06
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 免费jizz在线播放| 国产精品欧美激情| 国产极品粉嫩小泬免费看| 欧美亚洲国产视频| 亚洲高清无在码在线无弹窗| 亚洲色大成网站www国产| 免费无码又爽又黄又刺激网站 | a毛片在线免费观看| 成人午夜视频免费看欧美| 国产欧美日本在线观看| 欧美日韩精品在线播放| 欧美黄网站免费观看| 成人综合在线观看| 日韩专区欧美| 99re在线视频观看| 四虎成人在线视频| 四虎影视永久在线精品| 中文字幕啪啪| 久草视频中文| 国产凹凸视频在线观看| 中文字幕在线不卡视频| 色婷婷久久| 99精品高清在线播放| 色婷婷电影网| 久久成人18免费| 亚洲看片网| 中文纯内无码H| 日本欧美成人免费| 青草视频免费在线观看| 国产白丝av| 国产91熟女高潮一区二区| 最新国产麻豆aⅴ精品无| 欧美日韩在线第一页| 午夜在线不卡| 国产国模一区二区三区四区| jizz亚洲高清在线观看| 国产特级毛片aaaaaa| 玩两个丰满老熟女久久网| 少妇露出福利视频| 久久久久人妻一区精品色奶水| 91精品国产一区| 欧美日韩激情| 欧美精品v欧洲精品| 久久国产高潮流白浆免费观看| 天天躁夜夜躁狠狠躁图片| 国产h视频免费观看| 91高清在线视频| 色婷婷在线影院| 亚洲国产成人久久精品软件 | 成人日韩欧美| 久久这里只有精品23| 无码精品国产VA在线观看DVD| JIZZ亚洲国产| 亚洲欧美自拍一区| 久久久久无码精品| 五月天丁香婷婷综合久久| 999福利激情视频| 国产爽爽视频| 国产精品乱偷免费视频| 免费一级毛片在线播放傲雪网| 国产91麻豆免费观看| 国产一在线观看| 国产女主播一区| 国产精品永久不卡免费视频| 精品国产美女福到在线不卡f| 第一区免费在线观看| 欧美翘臀一区二区三区| 色精品视频| 99久久精品国产综合婷婷| 一级毛片免费观看不卡视频| 性69交片免费看| 丁香婷婷综合激情| 成年网址网站在线观看| 在线五月婷婷| 日韩专区欧美| 亚洲男人的天堂久久精品| 日韩一区二区三免费高清| 亚洲色成人www在线观看| 香蕉eeww99国产精选播放| 凹凸精品免费精品视频| 国产视频一区二区在线观看| 欧美一级专区免费大片|