V0.21.17.250612_alpha:数据监控的CSV文件注入已能自动停止
This commit is contained in:
parent
cdb3c18361
commit
5b9bb35775
Binary file not shown.
@ -118,6 +118,11 @@ void CSVDataInjectThread::updateData()
|
||||
}
|
||||
}
|
||||
|
||||
bool CSVDataInjectThread::isRunning() const
|
||||
{
|
||||
return m_running;
|
||||
}
|
||||
|
||||
void CSVDataInjectThread::threadFunc()
|
||||
{
|
||||
// 读取第一行数据
|
||||
|
@ -42,6 +42,8 @@ public:
|
||||
*/
|
||||
void updateData();
|
||||
|
||||
bool isRunning() const;
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief 线程执行函数
|
||||
|
@ -651,6 +651,21 @@ int XNMONITORSERVER_EXPORT XN_InjectDataInterfaceFromCsv(const char *structName,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int XN_GetCsvDataInjectStatus(char *infoMsg, int infoMsgSize)
|
||||
{
|
||||
if (g_csvDataInjectThread == nullptr) {
|
||||
if (infoMsg && infoMsgSize > 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) {
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user