首次提交完整的python工程代码
This commit is contained in:
65
processor/telem_processor.py
Normal file
65
processor/telem_processor.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import struct
|
||||
import math
|
||||
"""
|
||||
2026/3/30 停用
|
||||
"""
|
||||
# ===================== 模型配置表 =====================
|
||||
MODEL_MAP = {
|
||||
0x00110000: "energy",
|
||||
0x00440000: "sada",
|
||||
0x00330000: "ttc",
|
||||
0x00550000: "intersat",
|
||||
}
|
||||
|
||||
# 内部实现所有拟合/公式,状态量只返回原值不处理
|
||||
def process_value(value: float, method: str, param: str, ref_cache: dict) -> float:
|
||||
try:
|
||||
x = value
|
||||
|
||||
if not method:
|
||||
return x
|
||||
|
||||
# 数值拟合 y = ax + b
|
||||
if method == "数值拟合":
|
||||
a, b = map(float, param.split(","))
|
||||
return a * x + b
|
||||
|
||||
# 电压1: V = D/255*5.1 D无符号int
|
||||
elif method == "电压1":
|
||||
D = int(x)
|
||||
return D / 255.0 * 5.1
|
||||
|
||||
# 电压6: V = D*20/65535 D有符号int
|
||||
elif method == "电压6":
|
||||
D = int(x)
|
||||
return D * 20.0 / 65535.0
|
||||
|
||||
# 电压3: V = D*0.000305185 D有符号int
|
||||
elif method == "电压3":
|
||||
D = int(x)
|
||||
return D * 0.000305185
|
||||
|
||||
# 电阻拟合1: Rr=1e4; V=D/255*5.1; R=V*Rr/(Vref-V)
|
||||
elif method == "电阻拟合1":
|
||||
D = int(x)
|
||||
V = D / 255.0 * 5.1
|
||||
ref_name = param.strip()
|
||||
Vref = ref_cache.get(ref_name, 5.1)
|
||||
if abs(Vref - V) < 1e-9:
|
||||
return 0.0
|
||||
Rr = 10000.0
|
||||
return V * Rr / (Vref - V)
|
||||
|
||||
# 特殊公式8(按你文档实现)
|
||||
elif method == "特殊公式8":
|
||||
# 简化示例:返回原值,可按需求扩展
|
||||
return x
|
||||
|
||||
# 状态量 / 10进制:不处理
|
||||
elif method in ["状态量", "10进制"]:
|
||||
return x
|
||||
|
||||
return x
|
||||
|
||||
except:
|
||||
return value
|
||||
Reference in New Issue
Block a user