profiler desktop second

desktop
esea_info 2 years ago
parent 5a22a4b130
commit 9df4b523e8
  1. 9
      app.py
  2. 2
      app.spec
  3. 0
      calfile/profiler/Back_SAM_852F.dat
  4. 0
      calfile/profiler/Back_SAM_859F.dat
  5. 0
      calfile/profiler/Back_SAM_85B5.dat
  6. 0
      calfile/profiler/CalAQ_SAM_852F.dat
  7. 0
      calfile/profiler/CalAQ_SAM_859F.dat
  8. 0
      calfile/profiler/CalAQ_SAM_85B5.dat
  9. 0
      calfile/profiler/Cal_SAM_852F.dat
  10. 0
      calfile/profiler/Cal_SAM_859F.dat
  11. 0
      calfile/profiler/Cal_SAM_85B5.dat
  12. 0
      calfile/profiler/SAMIP_50ED_ALL.ini
  13. 0
      calfile/profiler/SAM_852F.ini
  14. 0
      calfile/profiler/SAM_859F.ini
  15. 0
      calfile/profiler/SAM_85B5.ini
  16. 20
      config.yml
  17. 7
      configuration.py
  18. BIN
      data/2023_07/07/info/12_22_14
  19. BIN
      data/2023_07/07/sensor/12_22_14
  20. 0
      data/2023_07/10/info/13_27_47
  21. 0
      data/2023_07/10/info/13_46_36
  22. BIN
      data/2023_07/10/info/14_13_01
  23. BIN
      data/2023_07/10/info/14_15_22
  24. BIN
      data/2023_07/10/info/14_19_36
  25. 0
      data/2023_07/10/sensor/13_46_36
  26. BIN
      data/2023_07/10/sensor/14_13_01
  27. BIN
      data/2023_07/10/sensor/14_15_22
  28. BIN
      data/2023_07/10/sensor/14_19_36
  29. 68
      myRamses.py
  30. 37
      myconfig.py
  31. 3
      mythread.py
  32. 784
      profiler.py
  33. 3
      retrieve.yml
  34. 77
      yiwinframe.py

@ -2,10 +2,9 @@
# -*- encoding: utf-8 -*- # -*- encoding: utf-8 -*-
''' '''
@File : app.py @File : app.py
@Time : 2021/09/12 12:38:46 @Time : 2022/09/12 12:38:46
@Author : Jim @Author : Jim
@Version : 1.0 @Version : 1.0
''' '''
# 在设备上的数据文件格式 # 在设备上的数据文件格式
import wx import wx
@ -16,15 +15,15 @@ from myconfig import VERSION,LASTDATE,COMPANY
class YiwinApp(wx.App): class YiwinApp(wx.App):
def OnInit(self): def OnInit(self):
self.myframe = YiwinFrame( u'Handheld Offline Software', parent=None) self.myframe = YiwinFrame( u'奕枫仪器剖面光谱测量分析软件 Ver1.0', parent=None)
self.myframe.statusBar.SetStatusText( u" 版权所有 " + COMPANY self.myframe.statusBar.SetStatusText( u" 版权所有 " + COMPANY
+" Version "+ VERSION +" Ver "+ VERSION
+ " "+ LASTDATE, 1 ) #给状态栏设文字 + " "+ LASTDATE, 1 ) #给状态栏设文字
self.myframe.Show(True) self.myframe.Show(True)
return True return True
if __name__ == "__main__": if __name__ == "__main__":
log.info(f"******** Shanghai Yiwin Instrument@Equipment Company *********", __name__, "", "") log.info(f"******** Shanghai Yiwin Instrument@Equipment Company *********", __name__, "", "")
log.info(f"******** Handheld Software for Dealing RAMSES Raw data *********", __name__, "", "") log.info(f"******** Profiler Software for Dealing RAMSES Raw data *********", __name__, "", "")
app = YiwinApp( ) app = YiwinApp( )
app.MainLoop() app.MainLoop()

@ -1,9 +1,7 @@
# -*- mode: python ; coding: utf-8 -*- # -*- mode: python ; coding: utf-8 -*-
block_cipher = None block_cipher = None
a = Analysis( a = Analysis(
['app.py'], ['app.py'],
pathex=[], pathex=[],

@ -1,20 +1,10 @@
2: 2:
1: 1:
FUNC: Lsky FUNC: Ed
SN: 85B5 SN: '50ED'
2: 2:
FUNC: Esky FUNC: Esky
SN: 50ED SN: '85B5'
3: 3:
FUNC: Lwater FUNC: Lu
SN: 852F SN: '852F'
3:
1:
FUNC: Lsky
SN: 85B5
2:
FUNC: Esky
SN: 50ED
3:
FUNC: Lwater
SN: 852F

@ -1,8 +1,6 @@
from pathlib import Path, PurePath from pathlib import Path, PurePath
from tools.mylogger import log from tools.mylogger import log
from readcal import ReadCal from readcal import ReadCal
from myconfig import CAL_DIR, DATA_DIR, FILE_MARK, DeviceType, RamsesFunc from myconfig import CAL_DIR, DATA_DIR, FILE_MARK, DeviceType, RamsesFunc
@ -14,15 +12,13 @@ class Configuration:
self.cal_configuration = {} self.cal_configuration = {}
pass pass
def setDeviceType(self, device_type:str) -> None: def setDeviceType(self, device_type:str) -> None:
self.device_type = device_type.lower() self.device_type = device_type.lower()
pass pass
def setSystemCfgDict(self, cfg:dict) -> None: def setSystemCfgDict(self, cfg:dict) -> None:
self.configuration = cfg self.configuration = cfg
log.info(f"self.configuration : {self.configuration} ", __name__, "", "") log.info(f"self.configuration : {self.configuration} ", __name__, "setSystemCfgDict", "")
pass pass
def getCalConfiguration(self) -> None: def getCalConfiguration(self) -> None:
@ -46,7 +42,6 @@ class Configuration:
pass pass
def __init_configuration_basic(self ) -> None: def __init_configuration_basic(self ) -> None:
# self.cfgtool = Config()
for k in self.cal_configuration.keys(): for k in self.cal_configuration.keys():
sn = self.cal_configuration[k]["SN"] sn = self.cal_configuration[k]["SN"]
if self.__isSamIniExisted(sn): if self.__isSamIniExisted(sn):

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -157,8 +157,10 @@ class RamsesCal(object):
self.b1: List[float] = [float(i) for i in ramsescal['b1'] ] self.b1: List[float] = [float(i) for i in ramsescal['b1'] ]
self.cal: List[float] = [float(i) for i in ramsescal['cal'] ] self.cal: List[float] = [float(i) for i in ramsescal['cal'] ]
self.calaq: List[float] = [float(i) for i in ramsescal['calaq'] ] self.calaq: List[float] = [float(i) for i in ramsescal['calaq'] ]
# 设置sam_cal
self.samcal: SamCal = SamCal( SAMSN=self.samsn ) self.samcal: SamCal = SamCal( SAMSN=self.samsn )
self.samcal.set_samcal(ramsescal ) self.samcal.set_samcal(ramsescal )
# 设置ip_cal
if self.typ == RamsesType.SAMIP: if self.typ == RamsesType.SAMIP:
self.ipcal: IPCal = IPCal( ) self.ipcal: IPCal = IPCal( )
self.ipcal.set_ipcal_from_dict( ramsescal ) self.ipcal.set_ipcal_from_dict( ramsescal )
@ -266,7 +268,7 @@ class RamsesFactory(object):
def set_data_raw_ip_raw(self, byt: bytes ): def set_data_raw_ip_raw(self, byt: bytes ):
''' byt 含 data_raw ip_raw ''' ''' byt 含 data_raw ip_raw '''
assert isinstance(byt, bytes) assert isinstance(byt, bytes), f"arg byt is not byte type"
num = 0 num = 0
buf = byt buf = byt
for i in range(50): for i in range(50):
@ -282,7 +284,7 @@ class RamsesFactory(object):
兼容 传入前分不出byte ip 兼容 传入前分不出byte ip
ip_byt: 判断是否含IP数据 ip_byt: 判断是否含IP数据
''' '''
assert isinstance(byt, bytes) assert isinstance(byt, bytes), f"arg byt is not byte type"
self.data_raw = byt self.data_raw = byt
def set_ip_raw(self, byt: bytes ): def set_ip_raw(self, byt: bytes ):
@ -290,7 +292,7 @@ class RamsesFactory(object):
兼容 传入前分不出byte ip 兼容 传入前分不出byte ip
ip_byt: 判断是否含IP数据 ip_byt: 判断是否含IP数据
''' '''
assert isinstance(byt, bytes) assert isinstance(byt, bytes), f"arg byt is not byte type"
self.ip_raw = byt self.ip_raw = byt
def set_ip_buf(self, byt: bytes ): def set_ip_buf(self, byt: bytes ):
@ -315,10 +317,12 @@ class RamsesFactory(object):
''' 兼容 SAM 576, SAMIP 的IP数据单独传进来 ''' 兼容 SAM 576, SAMIP 的IP数据单独传进来
去掉 23 00 00 00 00 00 00 ...... 01 去掉 23 00 00 00 00 00 00 ...... 01
''' '''
assert self.data_after_remove_mask != None, "please remove mask in advance" assert (self.data_after_remove_mask != None), "please remove mask in advance"
res = {} res = {}
buf = self.data_after_remove_mask buf = self.data_after_remove_mask
len_ = len(buf) len_ = len(buf)
# log.warning( f"valid buf: {buf.hex()}")
# log.warning( f"len: {len_}")
# print( f" head tail, {len_}") # print( f" head tail, {len_}")
# print( self.data_after_remove_mask) # print( self.data_after_remove_mask)
@ -329,7 +333,7 @@ class RamsesFactory(object):
# # self.ip = self.decode_ip_buf(self.buf_ip, self.cal_cfg) # # self.ip = self.decode_ip_buf(self.buf_ip, self.cal_cfg)
# # self.buf = self.buf[26:] # # self.buf = self.buf[26:]
# len_ = len_ - 26 # len_ = len_ - 26
assert len_ == 576, "SAM sensor , wrong the num of bytes" assert (len_ == 576), "SAM sensor , wrong the num of bytes"
for i in range(576): for i in range(576):
res.update({i+1: {}}) res.update({i+1: {}})
@ -350,7 +354,7 @@ class RamsesFactory(object):
assert self.data_valid_buf != None, "please remove frame head and tail" assert self.data_valid_buf != None, "please remove frame head and tail"
# print( f" == {len(self.data_valid_buf)}= {self.data_valid_buf} ") # print( f" == {len(self.data_valid_buf)}= {self.data_valid_buf} ")
# log.warning( f"valid buf: {self.data_valid_buf.hex()}")
self.integratedTime = 2 << int(self.data_valid_buf[0]) # integrated time self.integratedTime = 2 << int(self.data_valid_buf[0]) # integrated time
# print(f"===============it {self.integratedTime}") # print(f"===============it {self.integratedTime}")
@ -428,10 +432,6 @@ class RamsesFactory(object):
# offset: {Offset} \r\n\ # offset: {Offset} \r\n\
# ") # ")
def getOffset(self, data: np.ndarray, start: int, stop: int): def getOffset(self, data: np.ndarray, start: int, stop: int):
''' 计算光谱时候的 offset ''' ''' 计算光谱时候的 offset '''
ret = 0.0 ret = 0.0
@ -488,29 +488,24 @@ class RamsesFactory(object):
pass pass
def decode_ip_buf(self, buf): def decode_ip_buf(self, buf):
assert self.typ == RamsesType.SAMIP assert self.typ == RamsesType.SAMIP ,f"no samip sensor!"
tmpbuf = buf tmpbuf = buf
if len(tmpbuf) == 26 and tmpbuf[0] == 0x13: if len(tmpbuf) == 26 and tmpbuf[0] == 0x13:
tmpbuf = tmpbuf[2:] tmpbuf = tmpbuf[2:]
# Incl_XGain = float(ip_cal['Incl_XOffset'] ) Incl_XGain = self.RamsesCalData.ipcal.Incl_Xgain
# Incl_XOffset = float(ip_cal['Incl_XOffset'] ) Incl_XOffset = self.RamsesCalData.ipcal.Incl_Xoffset
# Incl_YGain = float(ip_cal['Incl_YGain'] ) Incl_YGain = self.RamsesCalData.ipcal.Incl_Ygain
# Incl_YOffset = float(ip_cal['Incl_YOffset'] ) Incl_YOffset = self.RamsesCalData.ipcal.Incl_Yoffset
Incl_XGain = self.ipcal.Incl_XGain Incl_KRef = self.RamsesCalData.ipcal.Incl_Kref
Incl_XOffset = self.ipcal.Incl_XOffset Press_Sens_mV_bar_1mA = self.RamsesCalData.ipcal.Press_Sens_mV_bar_1mA
Incl_YGain = self.ipcal.Incl_YGain Incl_KBG = self.RamsesCalData.ipcal.Incl_KBG
Incl_YOffset = self.ipcal.Incl_YOffset Press_Sens_mV_bar_4mA = self.RamsesCalData.ipcal.Press_Sens_mV_bar_4mA
Press_Gain = self.RamsesCalData.ipcal.Press_Gain
Press_Surface_bar = self.RamsesCalData.ipcal.Press_Surface_bar
Incl_KRef = self.ipcal.Incl_KRef ip_info = struct.unpack("<BBBBBBBBBBBBBBBBBBBBBBBB", tmpbuf)
Press_Sens_mV_bar_1mA = self.ipcal.Press_Sens_mV_bar_1mA
Incl_KBG = self.ipcal.Incl_KBG
Press_Sens_mV_bar_4mA = self.ipcal.Press_Sens_mV_bar_4mA
Press_Gain = self.ipcal.Press_Gain
Press_Surface_bar = self.ipcal.Press_Surface_bar
ip_info = struct.unpack("<BBBBBBBBBBBBBBBBBBBBBBBB", buf)
byte11 = ip_info[11] byte11 = ip_info[11]
byte12 = ip_info[12] byte12 = ip_info[12]
byte13 = ip_info[13] byte13 = ip_info[13]
@ -538,7 +533,7 @@ class RamsesFactory(object):
p_bar = 1000 * VPress / (press_sens * Press_Gain) p_bar = 1000 * VPress / (press_sens * Press_Gain)
press_delta = p_bar - 1.021 press_delta = p_bar - 1.021
depth_m = press_delta * 10 depth_m = press_delta * 10
return [depth_m, X, Y] return depth_m, X, Y
pass pass
pass pass
@ -630,10 +625,15 @@ class RamsesFactoryHandle(object):
def set_air_water(self, airwater = AirWater.Air): def set_air_water(self, airwater = AirWater.Air):
self.rf.airwater = airwater self.rf.airwater = airwater
def deal_raw_data(self, data:bytes) -> np.ndarray: def deal_raw_data(self, data:bytes, mode:int=1) -> np.ndarray:
''' ( 26 +3*sensor) removeMask get_valid_buf''' '''处理raw 数据 8*72 = 576
mode =0, 无需remmoveMask
'''
self.rf.set_data_raw(data) # 同时传入 IPbuf self.rf.set_data_raw(data) # 同时传入 IPbuf
self.rf.removeMask() if mode == 1:
self.rf.removeMask()
else:
self.rf.data_after_remove_mask = self.rf.data_raw
self.rf.get_data_valid_buf( ) self.rf.get_data_valid_buf( )
self.rf.process_from_hex_2_int() self.rf.process_from_hex_2_int()
self.rf.calibrate_data() self.rf.calibrate_data()
@ -663,6 +663,12 @@ class RamsesFactoryHandle(object):
log.info(" 处理 ip_data:list ",__name__, "deal_raw_ip_list") log.info(" 处理 ip_data:list ",__name__, "deal_raw_ip_list")
pass pass
def deal_raw_ip_buf(self, ip_buf:bytes) -> tuple:
''' ip_raw'''
log.debug(" args: ip_buf ",__class__, "deal_raw_ip_buf")
return self.rf.decode_ip_buf(ip_buf)
pass
def deal_data_valid_buf(self, data:bytes): def deal_data_valid_buf(self, data:bytes):
''' 去 23 00 00 00 .....01后的数据, 64*8=512 ''' ''' 去 23 00 00 00 .....01后的数据, 64*8=512 '''
self.rf.set_data_valid_buf(data) self.rf.set_data_valid_buf(data)

@ -12,31 +12,32 @@
import yaml import yaml
from enum import Enum from enum import Enum
from pathlib import Path from pathlib import Path
VERSION = "3.3.5" VERSION = "1.0"
LASTDATE = "2023-03-09" LASTDATE = "2023-07-09"
COMPANY = u"奕枫仪器" COMPANY = u"奕枫仪器"
DEVICE_ID = [2] DEVICE_ID = [2]
CURRENT_DIR = Path() CURRENT_DIR = Path()
DATA_DIR = Path("data") DATA_DIR = Path("data")
CAL_DIR = Path("calfile") CAL_DIR = Path("calfile")
OUTPUT_DIR = Path("data", "output") OUTPUT_DIR = Path("data", "output")
YAML_FILE_NAME = "config.yml" YAML_FILE_NAME = "config.yml"
RETRIEVE_CFG_FILE = "retrieve.yml" RETRIEVE_CFG_FILE = "retrieve.yml"
FILE_MARK = ['Spectrum', 'DATA'] FILE_MARK = ['Spectrum', 'DATA']
BEGIN_WAVELENGTH = 350 BEGIN_WAVELENGTH = 350
END_WAVELENGTH = 950 END_WAVELENGTH = 950
SAVE_EXT_NAME = ".csv" SAVE_EXT_NAME = ".csv"
INTERVAL = 1.0 INTERVAL = 1.0
SEPARATOR = ";" SEPARATOR = ";"
TOKEN = ";" TOKEN = ";"
NEWLINE = "\n" NEWLINE = "\n"
ROWFACTOR = 0.026 ROWFACTOR = 0.026
NT2FACTOR = 0.543
class DeviceType(Enum) : class DeviceType(Enum) :
AWRAMS = 1 AWRAMS = 1
SURFACE = 2 SURFACE = 2
PROFILE = 3 PROFILER = 3
class RamsesFunc(Enum): class RamsesFunc(Enum):
Lsky = 1 Lsky = 1

@ -19,8 +19,7 @@ class Mythead(threading.Thread):
self.func( ) self.func( )
class Multithread(threading.Thread): class Multithread(threading.Thread):
''' ''' 多线程
多线程
子线程.join() -> ( 设置在start之后, 等所有阻塞线程运行完, 再运行主线程 ) 子线程.join() -> ( 设置在start之后, 等所有阻塞线程运行完, 再运行主线程 )
子线程.setDaemon(True) -> 设置子线程A为守护线程, 主线程所在的进程内所有非守护线程统统运行完毕, 子线程.setDaemon(True) -> 设置子线程A为守护线程, 主线程所在的进程内所有非守护线程统统运行完毕,
无论子线程A有没有结束, 程序都结束 无论子线程A有没有结束, 程序都结束

File diff suppressed because one or more lines are too long

@ -1,6 +1,5 @@
LineBegin: 1
LineInterval: 1
beginWL: 350 beginWL: 350
endWL: 950 endWL: 950
interval: 1 interval: 1
rowFactor: 0.026 rowFactor: 0.026
n_t_square: 0.543

@ -27,6 +27,7 @@ from tools.myexception import MyException
from tools.mylogger import log from tools.mylogger import log
from awrams import AwramsHandle,HandheldHandle from awrams import AwramsHandle,HandheldHandle
from profiler import ProfilerHandle
# -定义菜单ID,关联Event------------------------- # -定义菜单ID,关联Event-------------------------
ID_MEASURE = 1 ID_MEASURE = 1
@ -172,7 +173,7 @@ class YiwinFrame(wx.Frame):
pass pass
def updateDisplay(self, msg): def updateDisplay(self, msg):
log.warning(f" updateDisplay 。。 {msg['data']}") log.warning(f" updateDisplay .. {msg['data']}",__name__,"updateDisplay","")
if msg['flag'] == "notice": if msg['flag'] == "notice":
self.__update_notice(msg['data']) self.__update_notice(msg['data'])
pass pass
@ -223,17 +224,17 @@ class YiwinFrame(wx.Frame):
self.mycfg.setDeviceType(DeviceType.SURFACE) self.mycfg.setDeviceType(DeviceType.SURFACE)
self.sensor_cfg = self.mycfg.read_yaml() self.sensor_cfg = self.mycfg.read_yaml()
def OnDealData(self, e)-> None: def OnDealData(self, e) -> None:
''' SD卡的文件结构 ''' ''' SD卡的文件结构 '''
log.info(f"OnDealData: 处理测量数据", __name__, "", "") log.info(f"OnDealData: 处理测量数据", __name__, "OnDealData", "")
if not self.calinfo_is_ok: if not self.calinfo_is_ok:
self.onNotify("Pls get the cal info, and try again" ) self.onNotify("Pls get the cal info, and try again" )
log.warning(f"Pls get the cal info, and try again", __name__, "OnDealData") log.warning(f"Pls get the cal info, and try again", __name__, "OnDealData")
self.statusBar.SetStatusText("Pls get the cal info, and try again",0) self.statusBar.SetStatusText("Pls get the cal info, and try again",0)
pass pass
## 调用 AwramsHandle 的函数 # 调用 ProfilerHandle 的函数
self.myhandle:HandheldHandle = self.handheld_handle[self.device_id] self.myhandle:ProfilerHandle = self.profiler_handle.get(self.device_id )
# 处理数据 # 处理数据
self.alterStatus_0(" 正在处理数据...." ) self.alterStatus_0(" 正在处理数据...." )
@ -241,7 +242,7 @@ class YiwinFrame(wx.Frame):
self.mythread.set_task( self.read_folders_from_sd ) self.mythread.set_task( self.read_folders_from_sd )
self.mythread.start() self.mythread.start()
except Exception as e: except Exception as e:
log.error(e) log.error(e,__name__,"OnDealData")
pass pass
def read_folders_from_sd(self,): def read_folders_from_sd(self,):
@ -250,84 +251,58 @@ class YiwinFrame(wx.Frame):
pass pass
# def OnDealData2(self, e)-> None:
# log.info(f"OnDealData: 处理测量数据", __name__, "", "")
# if not self.calinfo_is_ok:
# self.onNotify("Pls get the cal info, and try again" )
# log.warning(f"Pls get the cal info, and try again", __name__, "OnDealData")
# self.statusBar.SetStatusText("Pls get the cal info, and try again",0)
# pass
# self.hh.getDataFileList()
# self.hh.setDeviceID(self.device_id)
# self.hh.setRetrieve(self.retrieve)
# if self.syscfg != {}:
# self.hh.setSyscfg(self.syscfg)
# else:
# log.warning(f"Pls get the cal info, and try again", __name__, "OnDealData","setCfg")
# MyException( f"System Configuration is empty." )
# pass
# # 处理数据
# self.alterStatus_0(" 正在处理数据...." )
# try:
# self.mythread.set_task( self.hh.dealAllMeasurements )
# self.mythread.start()
# except Exception as e:
# log.error(e)
# pass
def OnCalInfo(self,e): def OnCalInfo(self,e):
'''依据传感器获取标定文件信息''' '''依据传感器获取标定文件信息'''
####################################### #######################################
self.onNotify("正在获取标定信息") self.onNotify("正在获取标定信息")
self.device_type = DeviceType.SURFACE.name self.device_type = DeviceType.PROFILER.name
self.mycfg = MyConfig() # 传入 cfg retrieve 的yml文件 self.mycfg = MyConfig() # 传入 cfg retrieve 的yml文件
# 配置反演需要的参数 波长 间隔 , rowFactor # 配置反演需要的参数 波长 间隔 , rowFactor
self.retrieve = self.mycfg.get_retrieve() # 读retrieve.yml self.retrieve = self.mycfg.read_rtv_yaml() # 读retrieve.yml
log.info(f"Retrieve: {self.retrieve}", __name__, "", "") log.info(f"Retrieve: {self.retrieve}", __name__, "", "")
# log.info(f"syscfg: {device}", __name__, "", "") # log.info(f"syscfg: {device}", __name__, "", "")
self.mycfg.setDeviceType( DeviceType.SURFACE ) self.mycfg.setDeviceType( DeviceType.PROFILER )
self.sensor_cfg = self.mycfg.read_yaml() # 读config.yml, 多个device_id 配置 self.sensor_cfg = self.mycfg.read_yaml() # 读config.yml, 多个device_id 配置
log.info(f"Current Device: {self.device_type} ", __name__, "", "") log.info(f"Current Device: {self.device_type} ", __name__, "OnCalInfo", "")
log.info(f"Sensor cfg: {self.sensor_cfg}", __name__, "", "") log.info(f"Sensor cfg: {self.sensor_cfg}", __name__, "OnCalInfo", "")
self.cal_cfg = {} self.cal_cfg = {}
cfgr = Configuration( ) cfgr = Configuration( )
cfgr.setDeviceType(self.device_type) cfgr.setDeviceType(self.device_type)
cfgr.setSystemCfgDict(self.sensor_cfg) # cfgr.setSystemCfgDict(self.sensor_cfg)
for k,v in self.sensor_cfg.items(): for k,v in self.sensor_cfg.items():
cfgr.setSystemCfgDict(v) cfgr.setSystemCfgDict(v)
try: try:
cfgr.getCalConfiguration() cfgr.getCalConfiguration()
except Exception as e: except Exception as e:
log.error(f"读取配置文件失败. \n {e}",__name__, "", "" ) log.error(f"读取配置文件失败. \n {e}",__name__, "OnCalInfo", "" )
raise raise
log.info(f"v: {cfgr.configuration}", __name__, "", "") log.info(f"v: {cfgr.configuration}", __name__, "OnCalInfo", "")
self.cal_cfg.update({k:cfgr.cal_configuration}) self.cal_cfg.update({k:cfgr.cal_configuration})
log.debug(f"cal_cfg: {self.cal_cfg}", __name__, "", "") log.debug(f"cal_cfg: {self.cal_cfg}", __name__, "OnCalInfo", "")
log.warning(f"cal_cfg 2: {self.cal_cfg[2].keys()}", __name__, "", "") log.warning(f"cal_cfg 2: {self.cal_cfg[2].keys()}", __name__, "OnCalInfo", "")
# log.warning(f"cal_cfg 3: {self.cal_cfg[3].keys()}", __name__, "", "") # log.warning(f"cal_cfg 3: {self.cal_cfg[3].keys()}", __name__, "", "")
self.init_data_process()
log.info(f"传感器配置文件读取成功", __name__, "", "") log.info(f"传感器配置文件读取成功", __name__, "", "")
# 配置初始化 ProfilerHandle
self.init_data_process()
self.calinfo_is_ok =True
pass pass
def init_data_process(self, mode = 0): def init_data_process(self, mode = 0):
''' 多个handle ''' ''' 多个handle '''
self.handheld_handle = { } log.info(f" 配置设备处理数据... ", __name__, "init_data_process", "")
self.profiler_handle = { }
for k,v in self.cal_cfg.items(): for k,v in self.cal_cfg.items():
ah = HandheldHandle( deviceid=k, cfg=self.sensor_cfg[k], calcfg=v, rtv=self.retrieve) cal_cfg = v
self.handheld_handle.update( {k:ah } ) ph = ProfilerHandle( deviceid=k, cfg=self.sensor_cfg, calcfg=cal_cfg, rtv=self.retrieve )
self.profiler_handle.update( {k:ph} )
def alterStatus_0(self,msg): def alterStatus_0(self,msg):
self.statusBar.SetStatusText( msg, 0 ) self.statusBar.SetStatusText( msg, 0 )

Loading…
Cancel
Save