From 172af4976515286bca4a125aadf6e81fd87e9404 Mon Sep 17 00:00:00 2001 From: wangfq Date: Tue, 9 Jun 2026 08:38:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=85=8D=E7=BD=AE=E9=A1=B5=E9=A2=91?= =?UTF-8?q?=E7=8E=87/=E5=B3=B0=E5=B3=B0=E5=80=BC=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8EDB=E5=8E=9F=E5=A7=8B=E5=80=BC?= =?UTF-8?q?=E5=8F=8C=E5=90=91=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据 DPG430 串口协议: - 频率 f(Hz) = 10 * X, X 为 DB/设备原始值 - 峰峰值 V = ((X*3.3)/4095)*4, X 为正整数 前端 fixture.js 和 vehicle_base_test.js 增加转换层: - 显示: raw X → f(Hz) / V(V)(fillFormFromParam、renderTable、openModal) - 保存: f(Hz)/V(V) → raw X(getFormParams、saveRecord) DB 已存原始值无需迁移,后端 build_4b_packet 透传原始值无需改。 --- edc-web/app/static/js/fixture.js | 39 ++++++++++++++-------- edc-web/app/static/js/vehicle_base_test.js | 31 +++++++++++------ 2 files changed, 46 insertions(+), 24 deletions(-) diff --git a/edc-web/app/static/js/fixture.js b/edc-web/app/static/js/fixture.js index a93ff14..20221a3 100644 --- a/edc-web/app/static/js/fixture.js +++ b/edc-web/app/static/js/fixture.js @@ -1,5 +1,16 @@ // 工装配置页 +// ─── 频率/峰峰值转换常量 ───────────────────── +// 协议: 工作频率 f(Hz) = 10 * X, X 为 DB/设备中存储和传输的原始值 +// 协议: 峰峰值 V = ((X * 3.3) / 4095) * 4, X 为 DB/设备中存储和传输的原始值(正整数) +const FREQ_SCALE = 10; +const PEAK_SCALE = 4095 / (4 * 3.3); // ≈ 310.227 + +function rawFreqToHz(x) { return x * FREQ_SCALE; } +function hzToRawFreq(hz) { return Math.round(hz / FREQ_SCALE); } +function rawPeakToV(x) { return parseFloat(((x * 3.3) / 4095 * 4).toFixed(2)); } +function vToRawPeak(v) { return Math.round(v * PEAK_SCALE); } + let baseTests = []; // 所有车检器基准参数 let selectedBaseTest = null; let pollTimer4C = null; // 0x4C 参数查询轮询 @@ -82,8 +93,8 @@ function renderBaseTestTable() { ${t.type_num} ${esc(t.dev_name)} ${t.SensMin}~${t.SensMax} - ${t.FreMin}~${t.FreMax} - ${t.PeakMin}~${t.PeakMax} + ${rawFreqToHz(t.FreMin)}~${rawFreqToHz(t.FreMax)} + ${rawPeakToV(t.PeakMin)}~${rawPeakToV(t.PeakMax)} `).join(""); } @@ -108,10 +119,10 @@ function fillFromBaseTest(t) { document.getElementById("param-dev-type").value = t.type_num; document.getElementById("param-sens-min").value = t.SensMin; document.getElementById("param-sens-max").value = t.SensMax; - document.getElementById("param-fre-min").value = t.FreMin; - document.getElementById("param-fre-max").value = t.FreMax; - document.getElementById("param-peak-min").value = t.PeakMin; - document.getElementById("param-peak-max").value = t.PeakMax; + document.getElementById("param-fre-min").value = rawFreqToHz(t.FreMin); + document.getElementById("param-fre-max").value = rawFreqToHz(t.FreMax); + document.getElementById("param-peak-min").value = rawPeakToV(t.PeakMin); + document.getElementById("param-peak-max").value = rawPeakToV(t.PeakMax); } function onDevTypeChange() { @@ -202,10 +213,10 @@ function fillFormFromParam(param) { document.getElementById("param-dev-type").value = param.DevType || 0; document.getElementById("param-sens-min").value = param.SensMin || 0; document.getElementById("param-sens-max").value = param.SensMax || 0; - document.getElementById("param-fre-min").value = param.FreMin || 0; - document.getElementById("param-fre-max").value = param.FreMax || 0; - document.getElementById("param-peak-min").value = param.PeakMin || 0; - document.getElementById("param-peak-max").value = param.PeakMax || 0; + document.getElementById("param-fre-min").value = rawFreqToHz(param.FreMin || 0); + document.getElementById("param-fre-max").value = rawFreqToHz(param.FreMax || 0); + document.getElementById("param-peak-min").value = rawPeakToV(param.PeakMin || 0); + document.getElementById("param-peak-max").value = rawPeakToV(param.PeakMax || 0); document.getElementById("param-far-tol").value = (param.FarTol || 0) * 10; document.getElementById("param-near-tol").value = (param.NearTol || 0) * 10; document.getElementById("param-step-tol").value = (param.StepTol || 0) * 10; @@ -299,10 +310,10 @@ function getFormParams() { minus_dis: Math.round((parseInt(document.getElementById("param-minus-dis").value) || 0) / 10), sens_min: parseInt(document.getElementById("param-sens-min").value) || 0, sens_max: parseInt(document.getElementById("param-sens-max").value) || 0, - fre_min: parseInt(document.getElementById("param-fre-min").value) || 0, - fre_max: parseInt(document.getElementById("param-fre-max").value) || 0, - peak_min: parseInt(document.getElementById("param-peak-min").value) || 0, - peak_max: parseInt(document.getElementById("param-peak-max").value) || 0, + fre_min: hzToRawFreq(parseFloat(document.getElementById("param-fre-min").value) || 0), + fre_max: hzToRawFreq(parseFloat(document.getElementById("param-fre-max").value) || 0), + peak_min: vToRawPeak(parseFloat(document.getElementById("param-peak-min").value) || 0), + peak_max: vToRawPeak(parseFloat(document.getElementById("param-peak-max").value) || 0), far_tol: Math.round((parseInt(document.getElementById("param-far-tol").value) || 0) / 10), near_tol: Math.round((parseInt(document.getElementById("param-near-tol").value) || 0) / 10), step_tol: Math.round((parseInt(document.getElementById("param-step-tol").value) || 0) / 10), diff --git a/edc-web/app/static/js/vehicle_base_test.js b/edc-web/app/static/js/vehicle_base_test.js index 66449d3..98cfd5f 100644 --- a/edc-web/app/static/js/vehicle_base_test.js +++ b/edc-web/app/static/js/vehicle_base_test.js @@ -1,5 +1,16 @@ // 车检器测试基准参数管理 +// ─── 频率/峰峰值转换常量 ───────────────────── +// 协议: 工作频率 f(Hz) = 10 * X, X 为 DB/设备中存储和传输的原始值 +// 协议: 峰峰值 V = ((X * 3.3) / 4095) * 4, X 为 DB/设备中存储和传输的原始值(正整数) +const FREQ_SCALE = 10; +const PEAK_SCALE = 4095 / (4 * 3.3); // ≈ 310.227 + +function rawFreqToHz(x) { return x * FREQ_SCALE; } +function hzToRawFreq(hz) { return Math.round(hz / FREQ_SCALE); } +function rawPeakToV(x) { return parseFloat(((x * 3.3) / 4095 * 4).toFixed(2)); } +function vToRawPeak(v) { return Math.round(v * PEAK_SCALE); } + let editId = null; // null=新增, number=编辑 // ─── Toast ─────────────────────────────────── @@ -36,8 +47,8 @@ function renderTable(data) { ${t.type_num} ${esc(t.dev_name)} ${t.SensMin} ~ ${t.SensMax} - ${t.FreMin} ~ ${t.FreMax} - ${t.PeakMin} ~ ${t.PeakMax} + ${rawFreqToHz(t.FreMin)} ~ ${rawFreqToHz(t.FreMax)} + ${rawPeakToV(t.PeakMin)} ~ ${rawPeakToV(t.PeakMax)} ${esc(t.remark || '-')} @@ -63,10 +74,10 @@ function openModal(id = null) { document.getElementById("edit-dev-name").value = data.dev_name; document.getElementById("edit-sens-min").value = data.SensMin; document.getElementById("edit-sens-max").value = data.SensMax; - document.getElementById("edit-fre-min").value = data.FreMin; - document.getElementById("edit-fre-max").value = data.FreMax; - document.getElementById("edit-peak-min").value = data.PeakMin; - document.getElementById("edit-peak-max").value = data.PeakMax; + document.getElementById("edit-fre-min").value = rawFreqToHz(data.FreMin); + document.getElementById("edit-fre-max").value = rawFreqToHz(data.FreMax); + document.getElementById("edit-peak-min").value = rawPeakToV(data.PeakMin); + document.getElementById("edit-peak-max").value = rawPeakToV(data.PeakMax); document.getElementById("edit-remark").value = data.remark || ""; }); } else { @@ -96,10 +107,10 @@ async function saveRecord() { dev_name: document.getElementById("edit-dev-name").value.trim(), SensMin: parseInt(document.getElementById("edit-sens-min").value) || 0, SensMax: parseInt(document.getElementById("edit-sens-max").value) || 0, - FreMin: parseInt(document.getElementById("edit-fre-min").value) || 0, - FreMax: parseInt(document.getElementById("edit-fre-max").value) || 0, - PeakMin: parseInt(document.getElementById("edit-peak-min").value) || 0, - PeakMax: parseInt(document.getElementById("edit-peak-max").value) || 0, + FreMin: hzToRawFreq(parseFloat(document.getElementById("edit-fre-min").value) || 0), + FreMax: hzToRawFreq(parseFloat(document.getElementById("edit-fre-max").value) || 0), + PeakMin: vToRawPeak(parseFloat(document.getElementById("edit-peak-min").value) || 0), + PeakMax: vToRawPeak(parseFloat(document.getElementById("edit-peak-max").value) || 0), remark: document.getElementById("edit-remark").value.trim(), };