diff --git a/README.md b/README.md
index 10166ef..61da68a 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,6 @@
> 基于 Electron + React + Vite 开发的传感器监测应用程序
-


diff --git a/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx b/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx
index 3d9600d..9a76014 100644
--- a/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx
+++ b/src/renderer/src/components/MeasurementPointSetting/MeasurementPointSetting.jsx
@@ -10,7 +10,7 @@ import {
} from '@ant-design/icons'
import useRectangleStore from '../../stores/rectangleStore'
import useDeviceStore from '../../stores/deviceStore'
-import { useState } from 'react'
+import { useState, useMemo } from 'react'
import { IPC_EVENT } from '../../common/ipcEvents'
function MeasurementPointSetting() {
@@ -25,10 +25,29 @@ function MeasurementPointSetting() {
const [formData, setFormData] = useState({
location: 1, // 测点位置
description: '', // 测点描述
- coefficient: 0, // 计算系数
baseTarget: 'n' // 基准标靶
})
+ // 系数计算相关状态
+ const [lensDistance, setLensDistance] = useState(50) // 镜头焦距
+ const [measureDistance, setMeasureDistance] = useState(10) // 测点距离
+
+ // 计算系数函数
+ const calculateCoefficient = (measureDist, lensDist) => {
+ if (!lensDist || lensDist <= 0) return 0
+ return Number(((measureDist / lensDist) * 2.24).toFixed(6))
+ }
+
+ // 处理镜头焦距变化
+ const handleLensDistanceChange = (value) => {
+ setLensDistance(value)
+ }
+
+ // 处理测点距离变化
+ const handleMeasureDistanceChange = (value) => {
+ setMeasureDistance(value)
+ }
+
// 测点列表状态
const [sensorList, setSensorList] = useState([])
@@ -39,6 +58,11 @@ function MeasurementPointSetting() {
const [loadingSensors, setLoadingSensors] = useState(false)
const [settingSensors, setSettingSensors] = useState(false)
+ // 使用useMemo计算系数,当镜头焦距或测点距离变化时自动重新计算
+ const calculatedCoefficient = useMemo(() => {
+ return calculateCoefficient(measureDistance, lensDistance)
+ }, [measureDistance, lensDistance])
+
// 根据选中的传感器更新矩形数据
const updateRectangleFromSensor = (sensorKey) => {
if (!sensorKey) {
@@ -110,7 +134,7 @@ function MeasurementPointSetting() {
children: [
{ key: `${newSensorKey}-1`, name: '测点位置', value: formData.location },
{ key: `${newSensorKey}-2`, name: '测点描述', value: formData.description },
- { key: `${newSensorKey}-3`, name: '计算系数', value: formData.coefficient },
+ { key: `${newSensorKey}-3`, name: '计算系数', value: calculatedCoefficient },
{
key: `${newSensorKey}-4`,
name: '基准标靶',
@@ -132,7 +156,6 @@ function MeasurementPointSetting() {
setFormData((prev) => ({
location: prev.location + 1, // 自动递增位置
description: '',
- coefficient: 0,
baseTarget: 'n'
}))
}
@@ -416,10 +439,10 @@ function MeasurementPointSetting() {
计算系数:
handleFormChange('coefficient', value)}
- precision={4}
- style={{ flex: 1 }}
+ value={calculatedCoefficient}
+ readOnly
+ precision={6}
+ style={{ flex: 1, backgroundColor: '#f5f5f5' }}
/>
@@ -486,15 +509,15 @@ function MeasurementPointSetting() {
镜头焦距:
-
@@ -502,7 +525,8 @@ function MeasurementPointSetting() {
测点距离:
diff --git a/src/renderer/src/components/SiderHeader/SiderHeader.jsx b/src/renderer/src/components/SiderHeader/SiderHeader.jsx
index 589473a..88177e9 100644
--- a/src/renderer/src/components/SiderHeader/SiderHeader.jsx
+++ b/src/renderer/src/components/SiderHeader/SiderHeader.jsx
@@ -1,6 +1,6 @@
import { useState, useEffect } from 'react'
import styles from './SiderHeader.module.css'
-import { Flex, Select, Button, Input, Spin, message } from 'antd'
+import { Flex, Button, Input, message, AutoComplete } from 'antd'
import { IPC_EVENT } from '../../common/ipcEvents.js'
import useDeviceStore from '../../stores/deviceStore'
import {
@@ -98,15 +98,27 @@ function SiderHeader({ showSystemSettings = true }) {
// 连接/断开设备
const handleConnectOrDisconnect = () => {
+ console.log('点击连接,当前selectedDevice:', selectedDevice, '端口:', devicePort)
+
if (connected) {
// 已连接,断开
window.electron.ipcRenderer.send(IPC_EVENT.DEVICE_DISCONNECT, { ip: connected })
} else {
// 未连接,连接
if (!selectedDevice || !devicePort) {
- message.error('请选择设备并填写端口')
+ message.error('请输入或选择设备IP地址并填写端口')
+ return
+ }
+
+ // IP格式验证
+ const ipPattern =
+ /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
+ if (!ipPattern.test(selectedDevice)) {
+ message.error('请输入有效的IP地址格式 (例如: 192.168.1.100)')
return
}
+
+ console.log('发送连接请求:', { ip: selectedDevice, port: devicePort })
window.electron.ipcRenderer.send(IPC_EVENT.DEVICE_CONNECT, {
ip: selectedDevice,
port: devicePort
@@ -117,9 +129,6 @@ function SiderHeader({ showSystemSettings = true }) {
// 除断开连接按钮外,其他UI是否禁用
const uiDisabled = !!connected
- // 调试信息
- console.log('connected:', connected, 'uiDisabled:', uiDisabled)
-
return (
@@ -131,21 +140,29 @@ function SiderHeader({ showSystemSettings = true }) {
设备列表:
-
+
- 设备端口:
+ 设备端口:
+