diff --git a/client/src/sections/wuyuanbiaoba/components/CameraView.jsx b/client/src/sections/wuyuanbiaoba/components/CameraView.jsx
index 10bd9f6..9b26fb8 100644
--- a/client/src/sections/wuyuanbiaoba/components/CameraView.jsx
+++ b/client/src/sections/wuyuanbiaoba/components/CameraView.jsx
@@ -76,10 +76,7 @@ const CameraView = ({
canvas.style.width = rect.width + "px";
canvas.style.height = rect.height + "px";
- console.log("resizeCanvas: 画布大小已调整", {
- width: rect.width,
- height: rect.height,
- });
+ // console.log("resizeCanvas: 画布大小已调整", { width: rect.width, height: rect.height });
// 延迟调用applyTransform,确保画布已经完全设置好
setTimeout(() => {
@@ -95,14 +92,12 @@ const CameraView = ({
if (img.naturalWidth && img.naturalHeight) {
setVideoNaturalWidth(img.naturalWidth);
setVideoNaturalHeight(img.naturalHeight);
- console.log(
- `handleImageLoad: 视频原始分辨率: ${img.naturalWidth}x${img.naturalHeight}`
- );
+ // console.log(`handleImageLoad: 视频原始分辨率: ${img.naturalWidth}x${img.naturalHeight}`);
}
resizeCanvas();
// 视频加载完成后,确保重新绘制矩形框
setTimeout(() => {
- console.log("handleImageLoad: 延迟重绘矩形框");
+ // console.log("handleImageLoad: 延迟重绘矩形框");
redrawAllRectangles();
}, 200);
}
@@ -229,7 +224,7 @@ const CameraView = ({
(target) => target.id === clickedRectangle.id
);
if (targetData) {
- console.log("点击矩形框,弹出标靶详情:", targetData);
+ // console.log("点击矩形框,弹出标靶详情:", targetData);
onRectangleClick(targetData);
}
}
@@ -317,13 +312,13 @@ const CameraView = ({
setRectangles((prev) => [...prev, newRect]);
- console.log("新建矩形:", newRect);
+ // console.log("新建矩形:", newRect);
if (selectedTemplate) {
- console.log("使用模板参数:", selectedTemplate);
+ // console.log("使用模板参数:", selectedTemplate);
} else {
- console.log("使用默认参数");
+ // console.log("使用默认参数");
}
- logRectangleData();
+ // logRectangleData();
}
}; // 拖拽已存在的矩形
const dragExistingRectangle = (mouseX, mouseY) => {
@@ -703,15 +698,15 @@ const CameraView = ({
const handleSave = useCallback(async () => {
// 防止重复保存
if (isSaving) {
- console.log("正在保存中,忽略重复请求");
+ // console.log("正在保存中,忽略重复请求");
return;
}
- console.log("=== 保存矩形信息 ===");
- console.log("矩形总数:", rectangles.length);
+ // console.log("=== 保存矩形信息 ===");
+ // console.log("矩形总数:", rectangles.length);
if (rectangles.length === 0) {
- console.log("没有创建任何矩形");
+ // console.log("没有创建任何矩形");
return;
}
@@ -720,7 +715,7 @@ const CameraView = ({
try {
// 组装指定格式的数据
const targets = {};
- console.log(rectangles, "当前矩形数据");
+ // console.log(rectangles, "当前矩形数据");
rectangles.forEach((rect, index) => {
targets[index.toString()] = {
@@ -758,7 +753,7 @@ const CameraView = ({
},
};
- console.log("格式化数据:");
+ // console.log("格式化数据:");
// 手动序列化以保持浮点数格式
const jsonString = JSON.stringify(outputData, null, 2).replace(
@@ -770,7 +765,7 @@ const CameraView = ({
const success = sendMessage(jsonString);
if (success) {
- console.log("数据已发送到服务器");
+ // console.log("数据已发送到服务器");
// 保存成功后刷新标靶列表数据
setTimeout(() => {
@@ -832,14 +827,14 @@ const CameraView = ({
// 监听视频尺寸变化,确保重新绘制
useEffect(() => {
if (videoNaturalWidth && videoNaturalHeight) {
- console.log("视频尺寸已更新,重新绘制矩形框");
+ // console.log("视频尺寸已更新,重新绘制矩形框");
redrawAllRectangles();
}
}, [videoNaturalWidth, videoNaturalHeight]);
// 监听矩形列表变化,自动重绘
useEffect(() => {
- console.log("矩形列表发生变化,重新绘制:", rectangles);
+ // console.log("矩形列表发生变化,重新绘制:", rectangles);
// 使用requestAnimationFrame来优化重绘性能
const rafId = requestAnimationFrame(() => {
redrawAllRectangles();
@@ -848,27 +843,22 @@ const CameraView = ({
return () => cancelAnimationFrame(rafId);
}, [rectangles]);
- // 强制刷新矩形框的函数
- const forceRefreshRectangles = useCallback(() => {
- console.log("强制刷新矩形框");
- redrawAllRectangles();
- }, []);
// 从标靶数据初始化矩形框
useEffect(() => {
- console.log("targets 或 loading 状态变化:", {
- targets,
- loading,
- targetsLength: targets?.length,
- });
+ // console.log("targets 或 loading 状态变化:", {
+ // targets,
+ // loading,
+ // targetsLength: targets?.length,
+ // });
if (!loading && targets && targets.length > 0) {
- console.log("从标靶数据初始化矩形框:", targets);
+ // console.log("从标靶数据初始化矩形框:", targets);
const initialRectangles = targets
.map((target) => {
const rectangleArea = target.rectangleArea;
- console.log("处理标靶:", target.id, "矩形区域:", rectangleArea);
+ // console.log("处理标靶:", target.id, "矩形区域:", rectangleArea);
if (
rectangleArea &&
rectangleArea.x !== undefined &&
@@ -896,17 +886,17 @@ const CameraView = ({
})
.filter((rect) => rect !== null); // 过滤掉空值
- console.log("生成的矩形框数据:", initialRectangles);
- console.log("当前矩形框数据:", rectangles);
- console.log(
- "标靶数据详情:",
- targets.map((t) => ({ id: t.id, rectangleArea: t.rectangleArea }))
- );
+ // console.log("生成的矩形框数据:", initialRectangles);
+ // console.log("当前矩形框数据:", rectangles);
+ // console.log(
+ // "标靶数据详情:",
+ // targets.map((t) => ({ id: t.id, rectangleArea: t.rectangleArea }))
+ // );
// 总是根据targets数据更新rectangles,确保数据同步
- console.log("强制更新矩形框数据以确保与targets同步");
+ // console.log("强制更新矩形框数据以确保与targets同步");
setRectangles(initialRectangles);
- console.log("已从标靶数据强制更新矩形框:", initialRectangles);
+ // console.log("已从标靶数据强制更新矩形框:", initialRectangles);
// 矩形框更新后,延迟一下确保重绘
const timeoutId = setTimeout(() => {
@@ -915,18 +905,18 @@ const CameraView = ({
return () => clearTimeout(timeoutId);
} else if (!loading && (!targets || targets.length === 0)) {
// 如果没有标靶数据,清空矩形框
- console.log(
- "标靶数据为空,准备清空矩形框,当前矩形框数量:",
- rectangles.length
- );
+ // console.log(
+ // "标靶数据为空,准备清空矩形框,当前矩形框数量:",
+ // rectangles.length
+ // );
setRectangles([]);
- console.log("标靶数据为空,已清空矩形框");
+ // console.log("标靶数据为空,已清空矩形框");
}
}, [targets, loading]); // 只依赖targets和loading状态
// 专门监听rectangles变化并重绘
useEffect(() => {
- console.log("rectangles状态变化:", rectangles);
+ // console.log("rectangles状态变化:", rectangles);
// 矩形状态改变时立即重绘
if (videoNaturalWidth && videoNaturalHeight) {
// 如果矩形数组为空,强制清除画布
@@ -935,7 +925,7 @@ const CameraView = ({
if (canvas) {
const ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
- console.log("强制清除画布,因为矩形数组为空");
+ // console.log("强制清除画布,因为矩形数组为空");
}
} else {
redrawAllRectangles();
@@ -958,7 +948,7 @@ const CameraView = ({
// 监听选中标靶变化,重新绘制高亮效果
useEffect(() => {
- console.log("选中标靶ID变化:", selectedTargetId);
+ // console.log("选中标靶ID变化:", selectedTargetId);
// 只有在有矩形框的时候才重绘,使用requestAnimationFrame优化性能
if (rectangles.length > 0) {
const rafId = requestAnimationFrame(() => {
diff --git a/client/src/sections/wuyuanbiaoba/components/RealtimeCharts.jsx b/client/src/sections/wuyuanbiaoba/components/RealtimeCharts.jsx
index 74f1e63..324e4d2 100644
--- a/client/src/sections/wuyuanbiaoba/components/RealtimeCharts.jsx
+++ b/client/src/sections/wuyuanbiaoba/components/RealtimeCharts.jsx
@@ -31,7 +31,7 @@ const RealtimeCharts = ({ tableData, lastUpdateTime }) => {
// 添加数据验证
if (!Array.isArray(tableData)) {
- console.warn('tableData is not an array:', tableData);
+ // console.warn('tableData is not an array:', tableData);
return
数据格式错误
;
}
@@ -300,11 +300,11 @@ const RealtimeCharts = ({ tableData, lastUpdateTime }) => {
};
// 添加调试信息
- useEffect(() => {
- console.log('RealtimeCharts - tableData:', tableData);
- console.log('RealtimeCharts - xChartData:', xChartData);
- console.log('RealtimeCharts - yChartData:', yChartData);
- }, [tableData, xChartData, yChartData]);
+ // useEffect(() => {
+ // console.log('RealtimeCharts - tableData:', tableData);
+ // console.log('RealtimeCharts - xChartData:', xChartData);
+ // console.log('RealtimeCharts - yChartData:', yChartData);
+ // }, [tableData, xChartData, yChartData]);
// 如果没有数据,显示空状态
if (!tableData || tableData.length === 0) {
diff --git a/client/src/sections/wuyuanbiaoba/container/index.jsx b/client/src/sections/wuyuanbiaoba/container/index.jsx
index b91b2fa..ba3de9c 100644
--- a/client/src/sections/wuyuanbiaoba/container/index.jsx
+++ b/client/src/sections/wuyuanbiaoba/container/index.jsx
@@ -86,7 +86,7 @@ const WuyuanbiaobaContent = () => {
// 初始化空的实时数据表格
setRealtimeData([]);
setTableData([]);
- console.log("数据已初始化,等待实时数据...", import.meta.env.MODE);
+ // console.log("数据已初始化,等待实时数据...", import.meta.env.MODE);
}, []);
// 模板数据加载完成后,默认选中内置模板
@@ -98,11 +98,11 @@ const WuyuanbiaobaContent = () => {
);
if (builtinTemplate) {
setSelectedTemplate("builtin_1");
- console.log("默认选中内置模板:", builtinTemplate.name);
+ // console.log("默认选中内置模板:", builtinTemplate.name);
} else {
// 如果没有内置模板,选择第一个模板
setSelectedTemplate(tempListData[0].key);
- console.log("默认选中第一个模板:", tempListData[0].name);
+ // console.log("默认选中第一个模板:", tempListData[0].name);
}
}
}, [templatesLoading, tempListData, selectedTemplate]);
@@ -110,15 +110,15 @@ const WuyuanbiaobaContent = () => {
// WebSocket连接成功后的处理
useEffect(() => {
if (isConnected) {
- console.log("WebSocket已连接,等待实时数据...");
+ // console.log("WebSocket已连接,等待实时数据...");
} else {
- console.log("WebSocket未连接");
+ // console.log("WebSocket未连接");
}
}, [isConnected]);
// 调试实时数据订阅状态
useEffect(() => {
- // console.log('实时数据订阅状态:', {
+ // console.log('实时数据订阅状态:', {
// hasData: !!realtimeDataSubscription.latest,
// dataCount: realtimeDataSubscription.data?.length || 0,
// latestTimestamp: realtimeDataSubscription.latest?.timestamp,
@@ -177,24 +177,24 @@ const WuyuanbiaobaContent = () => {
setCurrentEditTarget(target);
setTargetDetailModalMode("edit");
setTargetDetailModalVisible(true);
- console.log("编辑标靶:", target);
+ // console.log("编辑标靶:", target);
};
// 选中标靶的处理函数
const handleSelectTarget = (target) => {
setSelectedTargetId(target.id);
- console.log("选中标靶:", target);
+ // console.log("选中标靶:", target);
};
// 清除选中标靶的处理函数
const handleClearSelection = () => {
setSelectedTargetId(null);
- console.log("清除标靶选中状态");
+ // console.log("清除标靶选中状态");
};
// 处理矩形框点击事件
const handleRectangleClick = (targetData) => {
- console.log("矩形框被点击,打开标靶详情:", targetData);
+ // console.log("矩形框被点击,打开标靶详情:", targetData);
setCurrentEditTarget(targetData);
setTargetDetailModalMode("edit");
setTargetDetailModalVisible(true);
@@ -203,7 +203,7 @@ const WuyuanbiaobaContent = () => {
// 选择模板的处理函数
const handleTemplateSelect = (templateKey) => {
setSelectedTemplate(templateKey);
- console.log("选中模板:", templateKey);
+ // console.log("选中模板:", templateKey);
};
// 添加新模板的处理函数
@@ -222,7 +222,7 @@ const WuyuanbiaobaContent = () => {
// 模态框确认处理函数
const handleTemplateModalOk = (templateInfo) => {
- console.log(templateInfo, "templateInfo");
+ // console.log(templateInfo, "templateInfo");
let success = false;
if (templateModalMode === "add") {
@@ -269,7 +269,7 @@ const WuyuanbiaobaContent = () => {
if (success) {
setTargetDetailModalVisible(false);
setCurrentEditTarget(null);
- console.log("更新标靶信息:", targetInfo);
+ // console.log("更新标靶信息:", targetInfo);
} else {
console.error("更新标靶失败");
// 可以添加用户提示
@@ -284,7 +284,7 @@ const WuyuanbiaobaContent = () => {
// 删除标靶处理函数
const handleDeleteTarget = (targetKey) => {
- console.log("开始删除标靶:", targetKey);
+ // console.log("开始删除标靶:", targetKey);
const success = deleteTarget(targetKey);
if (success) {
@@ -294,7 +294,7 @@ const WuyuanbiaobaContent = () => {
if (selectedTargetId === targetKey) {
setSelectedTargetId(null);
}
- console.log("删除标靶成功:", targetKey);
+ // console.log("删除标靶成功:", targetKey);
// 强制刷新标靶数据,确保UI立即更新
setTimeout(() => {
@@ -307,7 +307,7 @@ const WuyuanbiaobaContent = () => {
};
// 标靶-一键清零
const onClickClearAll = () => {
- console.log("一键清零操作");
+ // console.log("一键清零操作");
sendMessage(
JSON.stringify({
_from: "setup",
diff --git a/server/tcpProxy/index.js b/server/tcpProxy/index.js
index cef885e..645f423 100644
--- a/server/tcpProxy/index.js
+++ b/server/tcpProxy/index.js
@@ -10,7 +10,7 @@ function setupTcpProxy(conf) {
// 从配置中获取端口,如果没有则使用默认端口
const wsPort = (conf && conf.port) ? Number(conf.port) + 1 : 5001; // WebSocket端口比HTTP端口大1
- console.log(`准备在端口 ${wsPort} 启动WebSocket服务器`);
+ // console.log(`准备在端口 ${wsPort} 启动WebSocket服务器`);
const wss = new WebSocket.Server({
port: wsPort,
@@ -19,7 +19,7 @@ function setupTcpProxy(conf) {
});
wss.on('connection', (ws, request) => {
- console.log(`WebSocket连接建立,来自: ${request.socket.remoteAddress}`);
+ // console.log(`WebSocket连接建立,来自: ${request.socket.remoteAddress}`);
// 创建TCP连接
const tcpClient = new net.Socket();
@@ -28,8 +28,8 @@ function setupTcpProxy(conf) {
// TCP连接成功
tcpClient.connect(process.env.TCP_PORT || TCP_PORT, process.env.TCP_HOST || TCP_HOST, () => {
- console.log(process.env);
- console.log(`TCP连接已建立到 ${TCP_HOST}:${TCP_PORT}`);
+ // console.log(process.env);
+ // console.log(`TCP连接已建立到 ${TCP_HOST}:${TCP_PORT}`);
});
// TCP接收数据,转发到WebSocket
@@ -40,7 +40,7 @@ function setupTcpProxy(conf) {
textData = data.toString('utf8');
// console.log('收到TCP数据片段:', textData.length, '字节');
} catch (e) {
- console.log('TCP数据无法解析为文本');
+ // console.log('TCP数据无法解析为文本');
return;
}
@@ -55,7 +55,7 @@ function setupTcpProxy(conf) {
// 从缓冲区移除已处理的消息
tcpDataBuffer = tcpDataBuffer.substring(endIndex + 2);
- console.log('提取到完整消息:', completeMessage.length, '字节');
+ // console.log('提取到完整消息:', completeMessage.length, '字节');
// 转发完整消息到WebSocket
if (ws.readyState === WebSocket.OPEN) {
@@ -65,13 +65,13 @@ function setupTcpProxy(conf) {
if (err) {
console.error('WebSocket发送数据错误:', err);
} else {
- console.log('完整消息已转发到WebSocket客户端');
+ // console.log('完整消息已转发到WebSocket客户端');
}
});
}
}
- console.log('缓冲区剩余数据:', tcpDataBuffer.length, '字节');
+ // console.log('缓冲区剩余数据:', tcpDataBuffer.length, '字节');
});
// WebSocket接收数据,转发到TCP
@@ -86,28 +86,28 @@ function setupTcpProxy(conf) {
messageStr = data;
// console.log('WebSocket数据(字符串):', messageStr);
} else {
- console.warn('收到未知类型数据,已忽略:', typeof data);
+ // console.warn('收到未知类型数据,已忽略:', typeof data);
return;
}
// 转发字符串数据到TCP服务器
if (tcpClient.writable) {
- console.log('准备发送数据到TCP服务器:', messageStr);
+ // console.log('准备发送数据到TCP服务器:', messageStr);
// 检查数据大小
const dataSize = Buffer.byteLength(messageStr, 'utf8');
- console.log(`数据大小: ${dataSize} bytes`);
+ // console.log(`数据大小: ${dataSize} bytes`);
// 直接发送完整数据
tcpClient.write(messageStr + '\n\n', (err) => {
if (err) {
console.error('TCP发送数据错误:', err);
} else {
- console.log('数据已发送到TCP服务器');
+ // console.log('数据已发送到TCP服务器');
}
});
} else {
- console.warn('TCP连接不可写,无法发送数据');
+ // console.warn('TCP连接不可写,无法发送数据');
}
});
@@ -122,7 +122,7 @@ function setupTcpProxy(conf) {
// TCP连接关闭
tcpClient.on('close', () => {
- console.log('TCP连接已关闭');
+ // console.log('TCP连接已关闭');
tcpDataBuffer = ''; // 清理缓冲区
if (ws.readyState === WebSocket.OPEN) {
ws.close();
@@ -131,7 +131,7 @@ function setupTcpProxy(conf) {
// WebSocket连接关闭
ws.on('close', () => {
- console.log('WebSocket连接已关闭');
+ // console.log('WebSocket连接已关闭');
tcpDataBuffer = ''; // 清理缓冲区
if (tcpClient.writable) {
tcpClient.destroy();
@@ -148,10 +148,10 @@ function setupTcpProxy(conf) {
});
wss.on('listening', () => {
- console.log(`TCP代理WebSocket服务器已启动在端口 ${wsPort},路径: /tcp-proxy`);
- console.log(`局域网连接地址: ws://[本机IP]:${wsPort}/tcp-proxy`);
- console.log(`本地连接地址: ws://localhost:${wsPort}/tcp-proxy`);
- console.log(`注意:请确保防火墙允许端口 ${wsPort} 的访问`);
+ // console.log(`TCP代理WebSocket服务器已启动在端口 ${wsPort},路径: /tcp-proxy`);
+ // console.log(`局域网连接地址: ws://[本机IP]:${wsPort}/tcp-proxy`);
+ // console.log(`本地连接地址: ws://localhost:${wsPort}/tcp-proxy`);
+ // console.log(`注意:请确保防火墙允许端口 ${wsPort} 的访问`);
});
wss.on('error', (err) => {