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

JSON和Websocket在顯控軟件前后端數據交互中的應用

2025-04-11 00:00:00劉泉晶霍鵬舉
電腦知識與技術 2025年8期

摘要:在某顯控平臺顯控軟件中,采用的是前后端分離的開發模式,前端為基于jQuery EasyUI的Web開發,主要用于界面顯示;后端為Qt開發,主要用于網絡報文的接收、解析與操控命令報文的發送等。文章旨在實現Qt后端與Web前端通過JSON和WebSocket相結合的數據交互方法,并在實際顯控平臺中得以應用。

關鍵詞:Web;Qt;JSON;Websocket;數據交互

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

文章編號:1009-3044(2025)08-0048-03

開放科學(資源服務) 標識碼(OSID)

0 引言

軍工某型號顯控平臺主要由數據處理組合、顯控一體機及操控模塊組成,數據處理組合采用VxWorks操作系統,內嵌數據處理軟件用于數據處理、模型算法解算等,并將數據組合成各種報文形式,通過UDP傳輸給顯控一體機顯示,顯控一體機采用銀河麒麟操作系統,顯控軟件運行在顯控一體機上。為了給用戶帶來更好的顯控界面視覺體驗,前端采用基于jQuery EasyUI的Web開發,后端采用技術成熟的Qt開發,因此,Qt后端與Web前端的數據交互方法成為本文研究的重點。鑒于Qt具有豐富的JSON庫,此外WebSocket為Web開發中最為常見的網絡通信方式,因此,本文采用JSON和WebSocket相結合的數據交互方法解決顯控軟件前后端數據交互問題。目前,該方法已在該顯控平臺上得到應用,經驗證,該方法有效可行。

1 研究背景

數據交互是指主體之間以數據的形式進行交流和協作的過程[1-3],在應用軟件開發過程中,常用的數據交互方式有TCP/UDP傳輸協議的socket方式、FTP文件共享服務器方式、數據庫共享方式、message方式以及基于Web的WebSocket網絡通信方式[4]。在某顯控平臺顯控軟件中,采用的是前后端分離的開發模式,前端為基于jQuery EasyUI的Web開發,后端為Qt開發,因此采用能夠進行實時雙向數據傳輸的WebSocket網絡通信方式[5]。在Qt開發中,JSON是常用的輕量級數據交互格式[6],具有語法簡單、數據量小、網絡傳輸效率高和良好的跨平臺能力等特點[7-9],尤其在JavaScript環境中,JSON源自JavaScript,因此常通過內置的JSON.parse()和JSON.stringify()方法進行數據解析和生成,處理JSON數據特別方便。基于以上考慮,本文采用JSON和WebSocket相結合的數據交互方法解決顯控軟件前后端數據交互問題。

2 JSON和WebSocket在顯控軟件前后端數據交互中的應用

本文采用的是JSON與WebSocket相結合的數據交互方法進行Qt后端與Web前端之間的數據交互,主要通過Qt后端和Web前端的網絡建立,Qt后端通過UDP接收數據處理軟件各類網絡報文,經解析將數據轉換為JSON字符串格式,通過WebSocket發送給Web前端接收顯示。同時,Web前端響應相關操控命令,并將數據轉換為JSON字符串格式,通過WebSocket發送給Qt后端接收處理,最終組織相應操控命令報文經UDP發送給數據處理軟件,下面對具體軟件實施步驟進行介紹。

2.1 Qt后端網絡初始化

在Qt后端主線程MainWindow的initWebServer()函數中初始化用于向Web端發送數據的WebSocketServer服務,當有新的WebSocket連接時,QWebSocketServer會觸發信號newConnection的處理方法onConnectWeb(),在onConnectWeb槽函數中創建WebSocket連接,將Qt后端顯示內容轉換為JSON字符串,發送信號sig_sendMsgToWeb將數據傳遞給Web前端。同時,創建接收Web前端JSON字符串數據的信號-槽連接,槽函數slot_MessageRecvFromWeb()用于解析Web前端JSON字符串內容,并組織相關報文經UDP發送給數據處理軟件。最后,創建MainWindow的UI界面,讀取UI界面上設置的地址和端口號,啟動WebSocket網絡監聽機制,若返回值為true,則說明WebSocket連接成功,可進行Qt后端與Web前端的數據交互。Qt后端WebSocket初始化流程圖如圖1所示,主線程MainWindow的UI界面如圖2所示。

2.2 Web前端網絡初始化

首先設置WebSocket的LocalIP為本地地址127.0.0.1,端口號WebSocketPort為9652,與Qt后端端口號對應。然后在Web前端WebSocketClient.js中,創建WebSocket對象,指定服務器的URL,處理連接事件,若連接成功,在onopen事件中處理連接成功后的邏輯,接收消息,在onmessage事件中處理接收到的服務器消息。最后,若連接關閉,在onclose事件中對網絡進行定時重連。Web前端網絡初始化流程圖如圖3所示。

2.3 數據接收、顯示過程

數據的接收、顯示過程主要分為4個步驟,分別為Qt后端網絡接收數據,解析數據并轉換為JSON字符串格式發送給Web前端,Web前端接收JSON字符串數據,對數據進行解析和顯示。下面通過舉例介紹空情顯示報文22H的整個實現過程。

2.3.1 Qt后端網絡接收數據

Qt后端通過UDP通信方式接收數據處理軟件22H空情顯示報文,readDatagram將22H空情顯示報文數據存儲在QByteArray變量datagram中,判斷報頭報文標識ID,若值為0x22,則將datagram數據memcpy到空情顯示結構體變量skyShow中,并觸發信號-槽,在主進程MainWindow中創建信號-槽連接,在槽函數slot_NetMsgCome22H中對結構體數據進行解析處理。

2.3.2 向Web前端發送JSON字符串數據

在槽函數slot_NetMsgCome22H中,創建QJsonObject對象JSON,并插入鍵值對JSON.insert(\"cmd\", \"recvData22H\"),此處用于標識網絡報文的報文標識ID,用于區分該JSON字符串顯示類型,以便于Web前端進行解析和顯示處理。創建QJsonArray對象jsTgtTable,用于存儲多目標數據,在for循環中對單個目標數據進行添加,具體為聲明QJsonObject對象subJSON,將Web前端需要顯示的參數插入subJSON中,如目標批號、距離、方位等,對應鍵名分別為“targetPH”“targetR”“tartgetA”,然后在for循環結束位置將subJSON添加到QJsonArray數組中,jsTgtTable.insert(t++, subJSON),最后插入JSON對象中JSON.insert(\"rows\", QJsonValue(jsTgtTable)),并構建JSON文檔QJsonDocument對象document,將JSON對象設置到QJsonDocument,然后將QJsonDocument轉換為QByteArray,最后將QByteArray轉換為QString格式,并發送信號sig_sendMsgToWeb,經WebSocket連接傳送給Web前端。

2.3.3 Web前端接收數據并顯示

Web收到數據后在onmessage事件中處理接收到的服務器消息,調用handleMessage(data)處理函數,通過JSON.parse(data)進行解析,根據JSON字符串鍵名cmd獲取鍵值,判斷鍵值是否為\"recvData22H\",若是,則該數據為Qt后端發過來的目標顯示報文內容,然后獲取多目標數據let datas = obj.rows,在datas.length個for循環中提取單個目標數據,如目標批號let batch = datas[i].targetPH,Web前端根據解析后的數據在Web地圖上進行目標顯示,如圖4所示。

2.4 操控命令發送過程

Web操控命令的發送主要分為4個步驟,分別為Web前端進行操控,組織相關操控命令JSON內容并發送給Qt后端,Qt后端接收JSON字符串內容并解析,組織相關操控命令報文通過UDP發送給數據處理軟件處理。下面通過舉例介紹目標請求報文51H的整個實現過程。

2.4.1 Web前端操控并發送操控命令內容

操作人員在Web前端地圖上使用鼠標左鍵選擇一批目標,例如批號為1002的目標,選中后該目標批號標牌內容展開顯示,如圖5所示,選中后通過目標按下事件 that.target.on 獲取目標批號 selectedTgt = that.options.batch,組織數據內容 var msgSend = { \"webCmd\": 0x51, \"pihao\": selectedTgt },調用webSocketClient.js的網絡發送任務函數sendMsg(msgSend),將msgSend內容通過JSON.stringify()轉換為JSON字符串形式,并經WebSocket服務器發送給Qt后端。

2.4.2 Qt后端接收JSON字符串數據

Qt后端收到WebSocket數據后觸發槽函數slot_MessageRecvFromWeb,在槽函數中,通過QJsonDocument::fromJson方法將JSON字符串數據轉換為JSON文檔,并存儲在doc變量中,然后封裝JSON對象 QJsonObject object = doc.object(),若對象中包含\"webCmd\",則獲取\"webCmd\"鍵值 int cmdNo = object.take(\"webCmd\").toInt(),然后判斷鍵值是否為0x51,若是,則該數據為目標請求51H內容,在發送函數sendNetMsg中,獲取目標批號并賦值給目標請求結構體變量 skyRequst.pihao = object.take(\"pihao\").toInt(),最后將skyRequst數據轉換為QByteArray,通過UDP的方式發送給IP地址為serverIP、端口號為serverPort的數據處理軟件,udpS-gt;writeDatagram(sendbuf, QHostAddress(serverIP), serverPort)。

3 結束語

本文詳細介紹了Qt后端與Web前端的數據交互過程,具體為Qt后端網絡初始化過程,Web前端網絡初始化過程,并舉例介紹目標顯示報文從UDP數據接收、解析,組織JSON字符串內容發送給Web前端,到Web前端接收JSON字符串內容、解析并顯示的過程,舉例介紹目標請求報文從Web前端操控,組織JSON字符串內容發送給Qt后端,到Qt后端接收JSON字符串內容、解析并組織相應操控命令報文發送給數據處理軟件的過程。目前,該方法已在某顯控平臺顯控軟件中得到應用,經驗證,該方法有效可行。不過,該方法還存在不足之處,對于數據量大、頻率高的應用環境下,存在卡頓現象,如何解決卡頓問題成為未來研究重點,例如可通過搭建多條WebSocket連接,更好地保證數據量大、頻率高的應用環境下數據交互的實時性和可靠性。

參考文獻:

[1] 劉平.Android手機訪問服務器的一種數據交互方法[J].電子設計工程,2010,18(9):96-102.

[2] 付保川,王中杰,班建民,等.基于CGI嵌入式監控系統動態數據交互的實現[J].計算機工程,2005,31(24):196-198.

[3] 胡振華,周斌,冷文浩.AJAX在J2EE中數據交互的應用研究[J].計算機工程與設計,2008,29(12):3102-3105.

[4] 陳曉玲,張世彤,孫伯貽.基于產業專題庫的科技大數據融合應用平臺設計與研發[J].無線互聯科技,2023(24):69-73.

[5] 李樂蒙.電力基建現場違章識別系統設計與實現[D].濟南:山東大學,2023.

[6] 周夢禹.基于雙向流量的Web攻擊檢測算法研究與實現[D].北京:北京郵電大學,2021.

[7] 陳業恩.跨平臺移動Web開發框架與數據交互[J].電子制作,2015(16):41.

[8] 李張永,陳和平,顧進廣.跨平臺移動Web開發框架與數據交互方法[J].計算機工程與設計,2014,35(5):335-340.

[9] 沈楠,范凌.基于Web自動化理念實現跨平臺數據交互[J].電信工程技術與標準化,2024(2):77-82.

【通聯編輯:謝媛媛】

主站蜘蛛池模板: 欧美色伊人| 亚洲AV无码乱码在线观看裸奔| 国产欧美日韩一区二区视频在线| 欧美啪啪一区| 精品综合久久久久久97超人| 欧美激情视频在线观看一区| 2019国产在线| 亚洲全网成人资源在线观看| 亚洲免费成人网| 国产精品专区第1页| 免费 国产 无码久久久| 久久这里只精品热免费99 | 尤物成AV人片在线观看| 色呦呦手机在线精品| 国产一级妓女av网站| 午夜性刺激在线观看免费| 亚洲自拍另类| 综1合AV在线播放| 秋霞国产在线| 色综合天天综合中文网| 老司国产精品视频| 奇米影视狠狠精品7777| 久久久久人妻精品一区三寸蜜桃| 高清色本在线www| 国产精品人人做人人爽人人添| 国产在线精品香蕉麻豆| 蝌蚪国产精品视频第一页| 国产自在线播放| 欧美全免费aaaaaa特黄在线| 久久婷婷综合色一区二区| 欧美一级夜夜爽| 在线观看视频一区二区| 色网站免费在线观看| 亚洲视频一区| 亚洲国产看片基地久久1024| 久久亚洲国产视频| 久久国产精品77777| 一级黄色欧美| 国产精品林美惠子在线观看| 综合五月天网| 91久久青青草原精品国产| 日日碰狠狠添天天爽| 欧美伦理一区| 亚洲国产中文欧美在线人成大黄瓜 | 久久精品aⅴ无码中文字幕 | 国产在线日本| 18禁影院亚洲专区| 亚洲精品无码抽插日韩| 视频国产精品丝袜第一页| 国产欧美另类| 国产美女无遮挡免费视频| 三级毛片在线播放| 国产亚洲欧美在线中文bt天堂| 午夜日韩久久影院| 国产精品女熟高潮视频| 国产黄视频网站| 久久久久无码国产精品不卡| 国产成人综合久久精品尤物| 国产色网站| 欧美国产中文| 依依成人精品无v国产| 亚洲色图欧美在线| 欧美三级不卡在线观看视频| 国产在线自乱拍播放| 国内自拍久第一页| 国产美女丝袜高潮| 国产精品尤物铁牛tv| 91精品综合| 亚洲最新地址| 久久 午夜福利 张柏芝| 潮喷在线无码白浆| 成人国产小视频| 欧美一区国产| 97国产在线视频| 午夜福利视频一区| 国产波多野结衣中文在线播放| 久草视频中文| 亚洲视频无码| 精品国产电影久久九九| 四虎国产精品永久在线网址| 欧美精品另类| 亚洲无码高清一区二区|