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

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

Loading…
Cancel
Save