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

基于Qt5開發的面向工業設備的狀態監視及控制軟件

2023-08-26 04:13:24劉佳梁
電腦知識與技術 2023年20期
關鍵詞:網絡通信數據庫

劉佳梁

關鍵詞:Qt Creator;C++;狀態監視;網絡通信;數據庫

中圖分類號:TP311 文獻標識碼:A

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

21世紀以來,我國工業化進程快速發展,工業自動化設備呈現高精度、高集成的發展趨勢,與此同時,由于電子系統故障引發的災難性事故時有發生,也因此造成大量的人力、物力損失,針對現代設備故障狀態監控、設備管理及遠程控制,研發一款設備狀態監視及控制軟件,提供設備健康監視平臺,實現設備遠程管理及控制,符合當前設備管理的發展方向[1]。因此,提出了一種基于Qt Creator開發環境,使用C++編程語言開發的設備狀態監視及管理軟件,軟件編寫過程中使用的Qt Creator 版本為5.9.1,MinGw 版本為5.3.0,運行平臺為X86架構計算機,操作系統為Win?dows 10專業版。

1 軟件工作流程

軟件基于UDP/IP協議并采用組播的方式與系統內各設備進行通信,將接收到的來自各設備數據包解碼后分發給數據管理線程和界面管理線程,數據管理線程負責對數據進行分類、提取并存儲,便于事后數據回放及分析[2]。界面管理線程實時更新設備狀態顯示,對于異常狀態進行告警提示,同時響應界面用戶操作,實現對設備遠程控制。軟件工作流程圖如圖1 所示。

2 軟件界面

Qt Designer(界面設計師)提供了非常豐富的界面控件,使用鼠標簡單拖拽控件即可創建出程序界面框架,同時運用Qt布局管理系統可以對程序界面實現布局、美化。軟件主界面如圖2所示。

Qt提供了信號與槽的機制,其中信號會在特定情況下被觸發,槽函數則可以理解為與信號相對應的響應函數,使用connect函數將信號與槽函數進行連接,也可以通過disconnect函數斷開信號與槽函數之間的連接關系,當界面中控件狀態發生變化時,系統會自動發射相應信號,只需將處理函數與信號連接,便可實現界面操作響應。

信號與槽函數有三個特點:1) 信號之間可以互相連接;2) 一個信號可以連接多個槽函數;3) 多個信號可以連接同一個槽函數。這三個特點決定了信號與槽函數的應用非常靈活、便利,同時能夠極大降低對象之間的耦合度[3]。

當界面中存在較多同類型控件需要響應點擊操作時,可以通過findChildren函數遍歷界面中同類型控件,在for循環中執connect操作,減少重復代碼并且易于維護[4],如圖3所示。

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

3 網絡通信

系統采用udp組播的方式進行網絡數據收發。Qt 提供QUdpSocket類用于實現udp通信,進行udp通信前需要通過以下步驟對套接字進行初始化[6]。

3.1 指定網卡

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

3.2 生存時間

設置組播數據的生存時間TTL(Time-To-Live)。TTL指一個數據報到達目的地址之前跳過網絡的最大次數,可以理解為數據報每跨1個路由生存時間就會減1,程序中將生存時間設置為1,表示數據報只能在同一路由下的局域網內傳播。

3.3 禁止回環

通過setSocketOption(QAbstractSocket:: Multicast?LoopbackOption,0)函數,設置禁止回環,表示本機不能接收自身發出的數據。

3.4 綁定IP地址及端口

通過bind函數綁定IP地址和端口,從而進行網絡數據報收發。當有數據報傳入時會自動發射ready?Read()信號,通過connect()函數將readyRead()信號與ReceiveData()槽函數連接,即可在ReceiveData()函數中讀取并處理接收到的數據報。

3.5 加入組播組

使用joinMulticastGroup()函數加入指定組播組地址,便可以接受該組播組中的數據報。網絡初始化函數代碼如圖5所示。

網絡數據接收函數代碼如圖7所示,當套接字中存在未讀取數據時,hasPendingDatagrams()函數返回true。pendingDatagramSize()的值表示第一個數據報的長度,同時初始化一個對應長度的QbyteArray變量,將readDatagram()讀取的數據報內容存入變量中,在processData()函數中對讀取的數據報進行解碼等處理[7]。網絡數據接收函數代碼如圖6所示。

網絡數據發送函數代碼如圖7所示。

4 數據庫

本軟件包含歷史狀態信息查詢及事后分析功能,選擇使用數據庫實現歷史信息存儲及查詢操作。Qt 為數據庫操作提供了QtSql模塊,其中包含一套無關于開發平臺和數據庫類型的調用接口,通過運用該模塊,實現數據庫和應用程序的無縫銜接。開發人員只需掌握基本的SQL語句,即可實現數據庫應用程序開發。結合本軟件對數據庫的性能需求,最終選擇使用QSQLite數據庫[8]。

qt_sql_default_connection為數據庫的默認連接名稱,實際應用中,可以通過QSqlDatabase::addDatabase()函數的第二個參數指定連接名稱。第一個參數QSQLite表示使用SQLite數據庫。如果默認連接不存在,則創建連接并添加數據庫。數據庫打開函數代碼如圖8所示。

SQLite的創建表語句為CREATE TABLE,同時還可以判斷表是否已經存在。創建表函數代碼如圖9所示,創建了一個名為temp_data的數據表,包含7列,第一列是id,類型是整型,設置為主鍵且自增長。第二列是TIME,類型是可變字符串,最長20個字符,五至六列為info,數據類型是浮點值。第七列為STATUS,數據類型是帶符號的整數[9]。

SQLite的插入語句是INSERT INTO,插入函數代碼如圖10所示。

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

5 結束語

Qt是一個跨平臺的C++圖形用戶界面應用程序框架,提供給應用程序開發者建立圖形用戶界面所需的所用功能,同時,Qt還具有優良的跨平臺特性,并提供豐富的API。在工程項目開發中,使用Qt進行程序開發極大降低了使用者的學習成本。

主要介紹了使用Qt軟件進行界面搭建、網絡數據通信模塊以及數據庫的建立和使用,在實際應用過程中,軟件同時接收20余個分系統的實時狀態信息,對故障狀態進行提示告警,同時將關鍵信息納入數據庫,并對設備關鍵節點進行控制。基于文中介紹的程序模型,可快速開發出適用于類似場景的狀態監視及控制軟件。

猜你喜歡
網絡通信數據庫
海上軍用網絡通信的安全控制技術
基于網絡通信的智能照明系統設計
電子制作(2019年15期)2019-08-27 01:11:48
計算機網絡通信常見問題與技術發展研究
電子制作(2018年10期)2018-08-04 03:24:46
網絡通信中信息隱藏技術的應用
基于網絡通信的校園智能音箱設計
電子制作(2018年1期)2018-04-04 01:48:30
談計算機網絡通信常見問題及技術發展
電子制作(2017年17期)2017-12-18 06:41:06
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 2021国产精品自拍| 亚洲人成网站日本片| 国产AV无码专区亚洲A∨毛片| 欧美视频在线播放观看免费福利资源 | 高潮毛片无遮挡高清视频播放| 亚洲综合一区国产精品| 婷婷激情亚洲| 欧洲高清无码在线| 国产一区二区三区日韩精品| 亚洲AV无码不卡无码| 亚洲综合一区国产精品| 精品久久久久久久久久久| 91色在线观看| 中文无码精品a∨在线观看| 国产成人亚洲精品无码电影| 三上悠亚在线精品二区| 四虎影视无码永久免费观看| 亚洲人成网站18禁动漫无码| 国产午夜无码片在线观看网站| 永久免费av网站可以直接看的| 无码中文AⅤ在线观看| 青青青视频91在线 | 国产精品一区二区无码免费看片| 亚洲精选高清无码| 国产福利2021最新在线观看| 91久久偷偷做嫩草影院电| 久久人与动人物A级毛片| 国产成在线观看免费视频 | 成人韩免费网站| 国产成人综合久久精品尤物| 国内精自视频品线一二区| 亚洲精品片911| 在线国产三级| 日韩欧美中文| 国产全黄a一级毛片| 无码视频国产精品一区二区 | 亚洲人妖在线| www中文字幕在线观看| 久久久久夜色精品波多野结衣| 一级毛片基地| 亚洲第一色视频| 乱人伦视频中文字幕在线| 欧美一区中文字幕| 国产精品蜜臀| 国产69精品久久久久孕妇大杂乱| 91麻豆精品视频| 色一情一乱一伦一区二区三区小说 | 少妇极品熟妇人妻专区视频| 久青草免费视频| 人人艹人人爽| 精品国产成人国产在线| 国产一级在线观看www色| 国产成年无码AⅤ片在线| 91精品国产一区自在线拍| 久久精品国产精品国产一区| 在线亚洲小视频| 亚洲码在线中文在线观看| 国产成人无码Av在线播放无广告| 黄色网页在线观看| 色婷婷啪啪| 激情五月婷婷综合网| www.youjizz.com久久| 国产麻豆另类AV| 久久免费观看视频| 亚洲中文在线看视频一区| 在线观看视频99| 午夜欧美理论2019理论| 大香伊人久久| 色综合中文| 国产精品视频久| 欧美另类第一页| 热久久国产| 久久久久国产精品熟女影院| 亚洲系列中文字幕一区二区| 亚洲色欲色欲www网| 日韩欧美国产三级| 黄色不卡视频| 伊人狠狠丁香婷婷综合色| 国产尤物jk自慰制服喷水| 亚洲日韩每日更新| 亚洲黄网在线| 日韩欧美网址|