From 5b9bb35775e6abc28174f106f00ca7197d4ddedd Mon Sep 17 00:00:00 2001 From: jinchao <383321154@qq.com> Date: Thu, 12 Jun 2025 17:04:01 +0800 Subject: [PATCH] =?UTF-8?q?V0.21.17.250612=5Falpha:=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E7=9A=84CSV=E6=96=87=E4=BB=B6=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E5=B7=B2=E8=83=BD=E8=87=AA=E5=8A=A8=E5=81=9C=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Release/database/XNSim.db | Bin 1224704 -> 1224704 bytes XNMonitorServer/CSVDataInjectThread.cpp | 5 +++++ XNMonitorServer/CSVDataInjectThread.h | 2 ++ XNMonitorServer/XNMonitorInterface.cpp | 15 +++++++++++++++ XNSimHtml/components/data-monitor.js | 18 ++++++++++++++++++ XNSimHtml/routes/DataMonitor.js | 14 ++++++++++++++ XNSimHtml/utils/xnCoreService.js | 24 ++++++++++++++++++++++-- 7 files changed, 76 insertions(+), 2 deletions(-) diff --git a/Release/database/XNSim.db b/Release/database/XNSim.db index a0d80ed7311229ae09c21d5f97b2290c5811f0d8..7167d3baa6eb267b27d710a28baa92f243b0d1f4 100644 GIT binary patch delta 325 zcmZp8;MMTJYl1Z6w23m#jMEwuS`!$zCNM2|&uqcFcslzBCRZlj#oK*8Fop6?U;meh zi^<$#JCF`#VrJw|+se+I#Lx8Ic={PWW@}Y*Lkn{=Q!_&Yy`21XBLgE-T>~>+L!%G_ z3oBDgD4n_P^3!FxnYr4(@G}E33lOscF&hxG12G2>b58%l&n3Xe%5#%} z?=D{z9|vzD&&|z>3deag8(A$lq!qK}5DRWklogsk2>^rSc*_6) delta 203 zcmZp8;MMTJYl1Z6l!-FVj8hsDS`!$zCNM2|&uq@SemeUHCfDtLADBXUCkF6sU;mdW zl!=)^fMF{;a}qz(Bh~3=_?WF#%?-`W&5aE#EcJ5o(~S&_Omz*+bPbI{3@ogS%&ZJe z^bCy*qox;fGs{nx 0) { + strncpy(infoMsg, "CSV 注入线程已不存在", infoMsgSize - 1); + infoMsg[infoMsgSize - 1] = '\0'; + } + return -1; + } + if (g_csvDataInjectThread->isRunning()) { + return 1; + } + return 0; +} + int XN_StopCsvDataInject(char *infoMsg, int infoMsgSize) { if (g_csvDataInjectThread == nullptr) { diff --git a/XNSimHtml/components/data-monitor.js b/XNSimHtml/components/data-monitor.js index 8fdb351..1b1eab1 100644 --- a/XNSimHtml/components/data-monitor.js +++ b/XNSimHtml/components/data-monitor.js @@ -412,6 +412,24 @@ class DataMonitor extends HTMLElement { this.dataUpdateTimer = setInterval(async () => { try { + // 检查CSV注入状态 + if (this.csvState.isInjecting) { + const csvStatusResponse = await fetch('/api/data-monitor/csv-inject-status'); + if (!csvStatusResponse.ok) { + throw new Error(`获取CSV注入状态失败: ${csvStatusResponse.status} ${csvStatusResponse.statusText}`); + } + const csvStatusData = await csvStatusResponse.json(); + console.log('CSV注入状态:', csvStatusData.data); + // 如果状态为0,触发停止注入 + if (csvStatusData.data === 0) { + // 模拟点击停止CSV注入按钮 + const csvInjectButton = this.shadowRoot.getElementById('csvInjectButton'); + if (csvInjectButton) { + csvInjectButton.click(); + } + } + } + // 检查DDS监控状态 const statusResponse = await fetch('/api/dds-monitor/status'); if (!statusResponse.ok) { diff --git a/XNSimHtml/routes/DataMonitor.js b/XNSimHtml/routes/DataMonitor.js index 59552db..5201415 100644 --- a/XNSimHtml/routes/DataMonitor.js +++ b/XNSimHtml/routes/DataMonitor.js @@ -367,4 +367,18 @@ router.post('/stop-csv-inject', async (req, res) => { } }); +/** + * @brief 获取CSV数据注入状态 + * @route GET /api/data-monitor/csv-inject-status + * @returns {Object} 返回CSV数据注入状态 + */ +router.get('/csv-inject-status', async (req, res) => { + try { + const result = systemMonitor.getCsvDataInjectStatus(); + res.json({ success: true, data: result }); + } catch (error) { + res.status(500).json({ success: false, message: `获取CSV数据注入状态失败: ${error.message}` }); + } +}); + module.exports = router; diff --git a/XNSimHtml/utils/xnCoreService.js b/XNSimHtml/utils/xnCoreService.js index 8567c71..b6d361a 100644 --- a/XNSimHtml/utils/xnCoreService.js +++ b/XNSimHtml/utils/xnCoreService.js @@ -61,7 +61,8 @@ try { 'XN_StartInjectContinuous': ['int', [StringType, 'int', StringType, 'int', 'double', StringType, 'int']], 'XN_StopInjectContinuous': ['int', [StringType, 'int', StringType, 'int']], 'XN_InjectDataInterfaceFromCsv': ['int', [StringType, 'int', StringType, 'int', StringType, 'int']], - 'XN_StopCsvDataInject': ['int', [StringType, 'int']] + 'XN_StopCsvDataInject': ['int', [StringType, 'int']], + 'XN_GetCsvDataInjectStatus': ['int', [StringType, 'int']] }); } catch (error) { console.error(`加载 ${monitorLibName} 失败:`, error); @@ -482,6 +483,24 @@ function stopCsvDataInject() { } } +// 获取CSV数据注入状态 +function getCsvDataInjectStatus() { + if (!monitorLib) { + return '监控服务器库未加载'; + } + try { + const infoMsg = Buffer.alloc(1024); + const result = monitorLib.XN_GetCsvDataInjectStatus(infoMsg, infoMsg.length); + + if (result === -1) { + return `获取状态失败: ${infoMsg.toString('utf8').replace(/\0/g, '')}`; + } + return result; // 直接返回result值 + } catch (error) { + return `获取状态失败: ${error.message}`; + } +} + module.exports = { loginLib, monitorLib, @@ -507,5 +526,6 @@ module.exports = { startInjectContinuous, stopInjectContinuous, injectDataInterfaceFromCsv, - stopCsvDataInject + stopCsvDataInject, + getCsvDataInjectStatus }; \ No newline at end of file