Browse Source

feat: [仪器对接] 天平

luojie
memorylkf 1 week ago
parent
commit
a80b1ecc6b
2 changed files with 57 additions and 31 deletions
  1. +55
    -29
      src/utils/tpph.js
  2. +2
    -2
      src/views/login.vue

+ 55
- 29
src/utils/tpph.js View File

@ -10,14 +10,22 @@ export async function getBalance(obj) {
originalValue: '1000', originalValue: '1000',
originalUnit: 'g', originalUnit: 'g',
value: '1000',
value: convertUnit('1000', 'g', obj.dw || 'g'),
unit: obj.dw || 'g', unit: obj.dw || 'g',
message: '' message: ''
} }
let yq = obj.yq let yq = obj.yq
let dw = obj.dw let dw = obj.dw
let val = {}
let val = {
success: false,
originalValue: '',
originalUnit: '',
value: '',
unit: '',
message: '未获取到天平数据'
}
let url = `/tpphurl/api/v1/balance/value?cmd=12&format=hex&comPort=COM1&baudRate=9600&byteSize=8&parity=N` let url = `/tpphurl/api/v1/balance/value?cmd=12&format=hex&comPort=COM1&baudRate=9600&byteSize=8&parity=N`
// let url = `http://127.0.0.1:${localStorage.getItem('sb_port')}/api/v1/balance/value?cmd=${yq.cmd}&format=${yq.format}&comPort=${yq.comPort}&baudRate=${yq.baudRate}&byteSize=${yq.byteSize}&parity=${yq.parity}` // let url = `http://127.0.0.1:${localStorage.getItem('sb_port')}/api/v1/balance/value?cmd=${yq.cmd}&format=${yq.format}&comPort=${yq.comPort}&baudRate=${yq.baudRate}&byteSize=${yq.byteSize}&parity=${yq.parity}`
await axios await axios
@ -33,15 +41,17 @@ export async function getBalance(obj) {
.then((res) => { .then((res) => {
if (res.status !== 200) { if (res.status !== 200) {
Message.error('获取天平失败') Message.error('获取天平失败')
return
}
let data = res.data
if (data.code !== 200) {
Message.error(data.msg || '获取天平数据失败')
return
val.message = '获取天平失败'
} else {
let data = res.data
if (data.code !== 200) {
Message.error(data.msg || '获取天平数据失败')
val.message = data.msg || '获取天平数据失败'
} else {
val = parseBalanceData(data.data, dw)
debugger
}
} }
val = parseBalanceData(data.data)
debugger
}) })
debugger debugger
return await val return await val
@ -55,7 +65,7 @@ export async function getPh(obj) {
} }
let yq = obj.yq let yq = obj.yq
let val = {}
let val = { success: false, value: '', message: '未获取到PH数据' }
let url = `/tpphurl/api/v1/ph/value?cmd=12&format=hex&comPort=COM1&baudRate=9600&byteSize=8&parity=N` let url = `/tpphurl/api/v1/ph/value?cmd=12&format=hex&comPort=COM1&baudRate=9600&byteSize=8&parity=N`
// let url = `http://127.0.0.1:${localStorage.getItem('sb_port')}/api/v1/ph/value?cmd=${yq.cmd}&format=${yq.format}&comPort=${yq.comPort}&baudRate=${yq.baudRate}&byteSize=${yq.byteSize}&parity=${yq.parity}` // let url = `http://127.0.0.1:${localStorage.getItem('sb_port')}/api/v1/ph/value?cmd=${yq.cmd}&format=${yq.format}&comPort=${yq.comPort}&baudRate=${yq.baudRate}&byteSize=${yq.byteSize}&parity=${yq.parity}`
await axios await axios
@ -72,28 +82,30 @@ export async function getPh(obj) {
debugger debugger
if (res.status !== 200) { if (res.status !== 200) {
Message.error('获取PH失败') Message.error('获取PH失败')
return
}
let data = res.data
if (data.code !== 200) {
Message.error(data.msg || '获取PH数据失败')
return
val.message = '获取PH失败'
} else {
let data = res.data
if (data.code !== 200) {
Message.error(data.msg || '获取PH数据失败')
val.message = data.msg || '获取PH数据失败'
} else {
val = extractPHValue(data.data)
debugger
}
} }
val = extractPHValue(data.data)
debugger
}) })
debugger debugger
return await val return await val
} }
export function parseBalanceData(rawData, targetUnit = 'g', precision) {
export function parseBalanceData(rawData, unit, precision) {
// 初始化返回结果,固定字段结构 // 初始化返回结果,固定字段结构
const result = { const result = {
success: false, success: false,
value: '',
originalValue: '', originalValue: '',
originalUnit: '', originalUnit: '',
targetUnit: targetUnit.toLowerCase(),
value: '',
unit: '',
message: '' message: ''
} }
@ -157,6 +169,7 @@ export function parseBalanceData(rawData, targetUnit = 'g', precision) {
// 赋值到结果对象 // 赋值到结果对象
result.originalValue = originalValue result.originalValue = originalValue
result.originalUnit = originalUnit result.originalUnit = originalUnit
result.unit = unit || originalUnit
result.message = `【解析成功】匹配到${matchedFormat.desc},提取数值:${originalValue},单位:${originalUnit}` result.message = `【解析成功】匹配到${matchedFormat.desc},提取数值:${originalValue},单位:${originalUnit}`
// 7. 数值有效性校验 // 7. 数值有效性校验
@ -167,10 +180,8 @@ export function parseBalanceData(rawData, targetUnit = 'g', precision) {
} }
// 8. 单位换算核心逻辑 // 8. 单位换算核心逻辑
const unitToGram = { g: 1, kg: 1000 }
const originalCoeff = unitToGram[result.originalUnit] || 1
const targetCoeff = unitToGram[result.targetUnit] || 1
let convertedValue = (num * originalCoeff) / targetCoeff
let convertedValue =
unit === originalUnit ? num : convertUnit(num, originalUnit, unit)
// 9. 数值格式化:保留原始精度(仅当传入precision时,按指定位数截取,不四舍五入) // 9. 数值格式化:保留原始精度(仅当传入precision时,按指定位数截取,不四舍五入)
if (typeof precision === 'number' && precision >= 0) { if (typeof precision === 'number' && precision >= 0) {
@ -192,10 +203,10 @@ export function parseBalanceData(rawData, targetUnit = 'g', precision) {
// 11. 优化提示信息 // 11. 优化提示信息
const baseMsg = result.message.replace('【解析成功】', '【成功】') const baseMsg = result.message.replace('【解析成功】', '【成功】')
if (result.originalUnit === result.targetUnit) {
result.message = `${baseMsg} → 最终值:${result.value} ${result.targetUnit}`
if (result.originalUnit === result.unit) {
result.message = `${baseMsg} → 最终值:${result.value} ${result.unit}`
} else { } else {
result.message = `${baseMsg} → 换算至${result.targetUnit}${result.value} ${result.targetUnit}`
result.message = `${baseMsg} → 换算至${result.unit}${result.value} ${result.unit}`
} }
} catch (error) { } catch (error) {
result.message = `【系统错误】解析换算失败:${error.message}` result.message = `【系统错误】解析换算失败:${error.message}`
@ -205,6 +216,21 @@ export function parseBalanceData(rawData, targetUnit = 'g', precision) {
return result return result
} }
export function convertUnit(num, originalUnit, targetUnit) {
// 8. 单位换算核心逻辑
const unitToGram = {
pg: 1,
ug: 1000,
ng: 1000000,
mg: 1000000000,
g: 1000000000000,
kg: 1000000000000000
}
const originalCoeff = unitToGram[originalUnit] || 1
const targetCoeff = unitToGram[targetUnit] || 1
return (num * originalCoeff) / targetCoeff
}
export function extractPHValue(rawData) { export function extractPHValue(rawData) {
const result = { const result = {
success: false, success: false,

+ 2
- 2
src/views/login.vue View File

@ -150,9 +150,9 @@ export default {
}; };
}, },
async testGetTpph() { async testGetTpph() {
let x = await getBalance()
let x = await getBalance({yq:{},dw:'kg'})
debugger debugger
let y = await getPh()
let y = await getPh({yq:{}})
debugger debugger
}, },
handleLogin() { handleLogin() {

Loading…
Cancel
Save