dataclasss rewrite

server
esea_info 2 years ago
parent c8852edcb8
commit 4acefa36e2
  1. 169
      app.py
  2. 726
      awrams.py
  3. BIN
      data/2/37/info.bin
  4. BIN
      data/2/37/sensor.bin
  5. 789
      myRamses.py
  6. 57
      receive.py

169
app.py

@ -7,70 +7,137 @@ from myconfig import MyConfig,DeviceType
from myconfig import DEVICE_ID ,FILE_MARK,YAML_FILE_NAME,CURRENT_DIR,DATA_DIR,CAL_DIR
from myconfig import BEGIN_WAVELENGTH,END_WAVELENGTH,INTERVAL,ROWFACTOR
from Ramses import Ramses
from awrams import AwramsHandle,HandheldHandle
IP = ""
PORT = 7887
ADDRESS = (IP, PORT) # 绑定地址
if __name__ == "__main__":
log.info(f"******** HandHeld server initiate.... *********", __name__, "", "")
class MyApp(object):
def __init__(self,):
log.info(f"******** Awarms server initiate.... *********", __name__, "", "")
self.device_type = DeviceType.AWRAMS.name
self.mycfg = MyConfig() # 传入 cfg retrieve 的yml文件
# 配置反演需要的参数 波长 间隔 , rowFactor
self.retrieve = self.mycfg.get_retrieve() # 读retrieve.yml
log.info(f"Retrieve: {self.retrieve}", __name__, "", "")
# log.info(f"syscfg: {device}", __name__, "", "")
self.mycfg.setDeviceType( DeviceType.AWRAMS )
self.sensor_cfg = self.mycfg.read_yaml() # 读config.yml, 多个device_id 配置
log.info(f"Current Device: {self.device_type} ", __name__, "", "")
log.info(f"Sensor cfg: {self.sensor_cfg}", __name__, "", "")
self.cal_cfg = {}
cfgr = Configuration( )
cfgr.setDeviceType(self.device_type)
cfgr.setSystemCfgDict(self.sensor_cfg)
for k,v in self.sensor_cfg.items():
cfgr.setSystemCfgDict(v)
try:
cfgr.getCalConfiguration()
except Exception as e:
log.error(f"读取配置文件失败. \n {e}",__name__, "", "" )
raise
log.info(f"v: {cfgr.configuration}", __name__, "", "")
self.cal_cfg.update({k:cfgr.cal_configuration})
log.debug(f"cal_cfg: {self.cal_cfg}", __name__, "", "")
log.warning(f"cal_cfg 2: {self.cal_cfg[2].keys()}", __name__, "", "")
# log.warning(f"cal_cfg 3: {self.cal_cfg[3].keys()}", __name__, "", "")
log.info(f"传感器配置文件读取成功", __name__, "", "")
pass
def init_data_process(self, mode = 0):
''' 多个handle '''
self.handheld_handle = { }
for k,v in self.cal_cfg.items():
ah = HandheldHandle( deviceid=k, cfg=self.sensor_cfg[k], calcfg=v, rtv=self.retrieve)
self.handheld_handle.update( {k:ah } )
def run_server(self,):
# 启动接受服务器
log.info(f"启动接受服务器, IP: {IP} , Port:{PORT} ", __name__, "", "")
#######################################
device_id = DEVICE_ID # 多个设备
device_type = DeviceType.AWRAMS.name
mycfg = MyConfig()
server_ = MyThreadingTCPServer(ADDRESS, MyServer, cfg=self.cal_cfg, retrieve = self.retrieve ,handheld_handle=self.handheld_handle )
# 配置反演需要的参数 波长 间隔
retrieve = mycfg.get_retrieve()
log.info(f"Retrieve: {retrieve}", __name__, "", "")
try:
server_.serve_forever()
except KeyboardInterrupt:
log.warning(" Ctrl+C 退出主程序 ",__name__, "", "")
server_.server_close()
except Exception as e:
log.info(" 系统异常, 如下: \n ",__name__, "", "")
log.info(e)
# log.info(f"syscfg: {device}", __name__, "", "")
mycfg.setDeviceType(DeviceType.AWRAMS)
init_para = mycfg.read_yaml()
log.info(f"Current Device: {device_type} ", __name__, "", "")
log.info(f"Sensor: {init_para}", __name__, "", "")
pass
cal_cfg = {}
if __name__ == "__main__":
log.info(f"******** Yiwin Handheld server initiate.... *********", __name__, "", "")
app = MyApp()
app.init_data_process( )
app.run_server()
# #######################################
# device_id = DEVICE_ID # 多个设备
# device_type = DeviceType.AWRAMS.name
# mycfg = MyConfig()
# # 配置反演需要的参数 波长 间隔
# retrieve = mycfg.get_retrieve()
# log.info(f"Retrieve: {retrieve}", __name__, "", "")
# # log.info(f"syscfg: {device}", __name__, "", "")
# mycfg.setDeviceType(DeviceType.AWRAMS)
# init_para = mycfg.read_yaml()
# log.info(f"Current Device: {device_type} ", __name__, "", "")
# log.info(f"Sensor: {init_para}", __name__, "", "")
# cal_cfg = {}
cfgr = Configuration( )
cfgr.setDeviceType(device_type)
cfgr.setSystemCfgDict(init_para)
# cfgr = Configuration( )
# cfgr.setDeviceType(device_type)
# cfgr.setSystemCfgDict(init_para)
for k,v in init_para.items():
cfgr.setSystemCfgDict(v)
try:
cfgr.getCalConfiguration()
except Exception as e:
log.error(f"读取配置文件失败. \n {e}",__name__, "", "" )
raise
log.info(f"v: {cfgr.configuration}", __name__, "", "")
cal_cfg.update({k:cfgr.cal_configuration})
# log.warning(f"cal_cfg: {cal_cfg}", __name__, "", "")
log.warning(f"cal_cfg 2: {cal_cfg[2].keys()}", __name__, "", "")
log.warning(f"cal_cfg 3: {cal_cfg[3].keys()}", __name__, "", "")
log.info(f"传感器配置文件读取成功", __name__, "", "")
# for k,v in init_para.items():
# cfgr.setSystemCfgDict(v)
# try:
# cfgr.getCalConfiguration()
# except Exception as e:
# log.error(f"读取配置文件失败. \n {e}",__name__, "", "" )
# raise
# log.info(f"v: {cfgr.configuration}", __name__, "", "")
# cal_cfg.update({k:cfgr.cal_configuration})
# # log.warning(f"cal_cfg: {cal_cfg}", __name__, "", "")
# log.warning(f"cal_cfg 2: {cal_cfg[2].keys()}", __name__, "", "")
# log.warning(f"cal_cfg 3: {cal_cfg[3].keys()}", __name__, "", "")
# log.info(f"传感器配置文件读取成功", __name__, "", "")
# ????????????
# 不同设备类型接收不同,修改receive.py
# 不同数据裂隙数据处理不同,修改AWRAMS.py
# 分支:服务器:处理不同的文件夹 awramse surface profile c
# 桌面: 服务器的, 读取标准trios文件处理的 -- 暂不考虑
# # ????????????
# # 不同设备类型接收不同,修改receive.py
# # 不同数据裂隙数据处理不同,修改AWRAMS.py
# # 分支:服务器:处理不同的文件夹 awramse surface profile c
# # 桌面: 服务器的, 读取标准trios文件处理的 -- 暂不考虑
# 启动接受服务器
log.info(f"启动接受服务器, IP: {IP} , Port:{PORT} ", __name__, "", "")
server_ = MyThreadingTCPServer(ADDRESS, MyServer, cfg=cal_cfg, retrieve = retrieve )
try:
server_.serve_forever()
except KeyboardInterrupt:
log.warning(" Ctrl+C 退出主程序 ",__name__, "", "")
server_.server_close()
except Exception as e:
log.info(" 系统异常, 如下: \n ",__name__, "", "")
log.info(e)
# # 启动接受服务器
# log.info(f"启动接受服务器, IP: {IP} , Port:{PORT} ", __name__, "", "")
# server_ = MyThreadingTCPServer(ADDRESS, MyServer, cfg=cal_cfg, retrieve = retrieve )
# try:
# server_.serve_forever()
# except KeyboardInterrupt:
# log.warning(" Ctrl+C 退出主程序 ",__name__, "", "")
# server_.server_close()
# except Exception as e:
# log.info(" 系统异常, 如下: \n ",__name__, "", "")
# log.info(e)

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

@ -18,8 +18,9 @@ from tools.mypath import MyDir
from tools.mylogger import log
from pathlib import Path,PurePath
from myconfig import DATA_DIR,DeviceType
from handheld import Handheld
from handheld import Handheld
from awrams import AwramsHandle,HandheldHandle
IP = ""
PORT = 7887
@ -42,9 +43,10 @@ conn_pool = []
# save_path = Path
class MyTCPServer(TCPServer):
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, cfg=None, retrieve=None):
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, cfg=None, retrieve=None,handheld_handle:HandheldHandle=None):
self.cfg = cfg
self.retrieve = retrieve
self.handheld_handle = handheld_handle
TCPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate=True )
class MyThreadingTCPServer(ThreadingMixIn, MyTCPServer): pass
@ -191,27 +193,30 @@ class DealData:
self.awrams = None
pass
def deal(self, id: int, con: int, cfg:dict , retrieve) -> None: # 取字典中的 payload
log.info(f" 接收到数据开始处理数据 device_id {id} ")
self.device_id = id
self.measure_id = con
if self.device_id is None:
self.device_id = id
if self.cfg == {}:
self.cfg = cfg
# self.cfg = cfg.get(self.device_id)
if self.awrams is None:
self.awrams = Handheld() ##处理数据
self.awrams.setSyscfg(self.cfg)
self.awrams.setRetrieve(retrieve)
self.awrams.setDeviceID(self.device_id)
self.awrams.setMeasureID(self.measure_id)
path_tuple = ( "data", str(id), str(con) )
self.awrams.setOldFolder( path_tuple )
self.awrams.getInfoDict( )
self.awrams.transferFromOldFolder()
self.awrams.deleteOldFolder()
self.awrams.dealOneMeasurement_Handheld(self.awrams.new_folder)
# def deal(self, id: int, con: int, cfg:dict , retrieve) -> None: # 取字典中的 payload
def deal(self, pth: Path, cfg: dict, retrieve, handheld_handle):
log.info(f" Handheld 到数据开始处理数据 device_id {id} ")
self.old_folder = pth
self.base_folder = self.old_folder.parent
deviceid = int(self.base_folder.parts[-1]) ## 索引为数字
my_handle:HandheldHandle = handheld_handle[deviceid]
info_path = self.old_folder.joinpath("info.bin")
info_byte = self.read_bin(info_path)
my_handle.aw.data.set_info_frame(info_byte)
# 对应的手持式,处理sensor.bin
sensor_path = self.old_folder.joinpath('sensor.bin')
my_handle.deal_sensor_bin( sensor_path )
# self.awrams.setSyscfg(self.cfg)
# self.awrams.setRetrieve(retrieve)
# self.awrams.setDeviceID(self.device_id)
# self.awrams.setMeasureID(self.measure_id)
# path_tuple = ( "data", str(id), str(con) )
# self.awrams.setOldFolder( path_tuple )
# self.awrams.getInfoDict( )
# self.awrams.transferFromOldFolder()
# self.awrams.deleteOldFolder()
# self.awrams.dealOneMeasurement_Handheld(self.awrams.new_folder)
log.info(f" Complete Dealing one group.")
# self.awrams.readOneFolder( )
@ -369,6 +374,7 @@ class MyServer(socketserver.BaseRequestHandler):
log.debug(f"retrieve {self.server.retrieve}",__name__, "", "" )
self.cfg =self.server.cfg
self.retrieve =self.server.retrieve
self.handheld_handle =self.server.handheld_handle
self.sk: socket.socket = self.request
self.sensor = illumination_sensor(self.request)
self.dealData = DealData()
@ -436,7 +442,10 @@ class MyServer(socketserver.BaseRequestHandler):
if data_["packet_con"] == data_["packet_all"]:
log.info(f'最后一帧数据已经收到并保存')
# id 为传感器测量id ,con 测量序号
self.dealData.deal(data_['id'], data_["con"], self.cfg, self.retrieve)
# self.dealData.deal(data_['id'], data_["con"], self.cfg, self.retrieve)
pth = DATA_DIR.joinpath(str(data_['id']),str(data_['con']))
self.dealData.deal(pth, self.cfg, self.retrieve, self.handheld_handle)
pass
if time.time() - self.begin_time > TIMEOUT_SECOND:

Loading…
Cancel
Save