server
esea_info 3 years ago
parent 22a3d76048
commit d45df33b25
  1. 1419
      AWRAMS0.py
  2. 104
      README.md
  3. 200
      Ramses.py
  4. 116
      app.py
  5. 132
      atest.py
  6. 1000
      awrams.py
  7. 297
      calfile/awrams/Back_SAM_852F.dat
  8. 297
      calfile/awrams/Back_SAM_859F.dat
  9. 297
      calfile/awrams/Back_SAM_85B5.dat
  10. 297
      calfile/awrams/CalAQ_SAM_852F.dat
  11. 297
      calfile/awrams/CalAQ_SAM_859F.dat
  12. 297
      calfile/awrams/CalAQ_SAM_85B5.dat
  13. 297
      calfile/awrams/Cal_SAM_852F.dat
  14. 297
      calfile/awrams/Cal_SAM_859F.dat
  15. 297
      calfile/awrams/Cal_SAM_85B5.dat
  16. 81
      calfile/awrams/SAMIP_50ED_ALL.ini
  17. 32
      calfile/awrams/SAM_852F.ini
  18. 30
      calfile/awrams/SAM_859F.ini
  19. 30
      calfile/awrams/SAM_85B5.ini
  20. 20
      config.yml
  21. 237
      configuration.py
  22. 322
      myconfig.py
  23. 1008
      readcal.py
  24. 526
      receive.py
  25. 4
      retrieve.yml
  26. 0
      tools/__init__.py
  27. 11
      tools/myexception.py
  28. 285
      tools/mylogger.py
  29. 265
      tools/mypath.py
  30. 66
      tools/mytime.py

File diff suppressed because it is too large Load Diff

@ -1,2 +1,102 @@
AWRAMS 数据接收处理
分支: server desktop
# AWRAMS 相关的服务器端处理文件
系统通过config.py 配置测量类型,awrams surface profiler
并得到配置文件
系统从网络获得数据存为文件后,依据获得的配置文件然后处理文件。
## 实施流程
### 服务器配置
python >3.8
numpy > 1.21.4
### 标定文件
calfile/awrams
直接拷贝在这个目录下
### 设备ID config.py
可以定义多个ID, 后面为每个id定义传感器的序列号
```python
DEVICE_ID = [ 2 ]
```
### 设备配置文件
```python
CURRENT_DIR =Path()
DATA_DIR = Path("data")
CAL_DIR = Path("calfile")
OUTPUT_DIR = Path("data","output")
YAML_FILE_NAME = "config.yml"
FILE_MARK = ['Spectrum','DATA']
BEGIN_WAVELENGTH = 350
END_WAVELENGTH = 950
SAVE_EXT_NAME = ".csv"
INTERVAL = 1.0
SEPARATOR = ";"
NEWLINE = "\n"
```
### 设置应用类型 config.py
```python
class Device(Enum) :
AWRAMS = 1
SURFACE = 2
PROFILE = 3
[label](myserver.py)class RamsesFunc(Enum):
Lsky = 1
Lwater = 2
Esky = 3
class RamsesSURFACE(Enum):
Lsky = 1
Lwater = 2
Esky = 3
class RAMSESPROFILE(Enum):
Lu = 1 #upwelling
Ed = 2
Esky = 3
```
### 设置传感器序列号 config.py
依据系统类型,配置传感器的序列号。 传感器序列号见出厂设置的序列号
如果存在不同组,需要为不同组设置 传感器序列号
如下设置了两组AWRAMS ID: 2 and 3
```python
class Config(object):
def __init__(self) -> None:
self.AWRAMS = { # 每个ID对应一组
"2" : {
"1":{"SN":"85B5","FUNC":RamsesFunc.Lsky.name},
"2":{"SN":"852F","FUNC":RamsesFunc.Lwater.name},
"3":{"SN":"50ED","FUNC":RamsesFunc.Esky.name},
},
"3" : {
"1":{"SN":"85B5","FUNC":RamsesFunc.Lsky.name},
"2":{"SN":"852F","FUNC":RamsesFunc.Lwater.name},
"3":{"SN":"50ED","FUNC":RamsesFunc.Esky.name},
}
}
self.SURFACE = {
"1":{"SN":"854D","FUNC":RamsesSURFACE.Lsky.name},
"2":{"SN":"8536","FUNC":RamsesSURFACE.Lwater.name},
"3":{"SN":"50D3","FUNC":RamsesSURFACE.Esky.name},
}
self.PROFILE = {
"1":{"SN":"85B5","FUNC":RAMSESPROFILE.Lu.name},
"2":{"SN":"859F","FUNC":RAMSESPROFILE.Ed.name},
"3":{"SN":"852F","FUNC":RAMSESPROFILE.Esky.name},
}
```
### 获得传感器的标定参数
将以上获得传感器配置,传递给configAWRAMS.py, 从标定文件获取正确的配置参数
### 数据文件夹
data目录
data目录依据设备类型进行分类
### 定义服务器设置
app.py 定义端口, 参数传给了myserver
### 处理数据
将数据储存在特定目录,调用处理该目录的函数处理

@ -0,0 +1,200 @@
#! python3
# -*- encoding: utf-8 -*-
'''
@File : Ramses.py
@Time : 2023/03/03 11:09:50
@Author : Jim @ Yiwin
@Version : 1.0
@Contact : jim@yi-win.com
@Desc :
@para : 23 ..07 .... 06 05 04 03 02 01 00
ip信息不包含
'''
import struct
import numpy as np
from pathlib import Path
from tools.mylogger import log
from myconfig import RamsesAWRAMS, RamsesSURFACE, RamsesPROFILE, DeviceType
class Ramses(object):
def __init__(self,):
"""
@description :处理Ramses的数据标定 Hex -- realWavelength Intensity
@param : 23 ..07 .... 06 05 04 03 02 01 00
ip信息不包含
@Returns : realWavelength Intensity
"""
self.buf = b''
self.it = None
self.light_int = None # 未标定的整数值
self.spectrum = None # 光谱强度
# self.current_buf = ""
# self.current_buf_seq = 0
# self.current_it_int = {"it": 0, "light_int": []} # 积分时间及换算的整数值
# self.res = {"wavelength": [], "light": []}
self.cal_cfg = {}
# self.current_cal = {} # 当前传感器的序列号
pass
def setBuf(self, buf: bytes):
self.buf = buf
pass
def setCalCfg(self, d: dict):
self.cal_cfg = d
pass
def getRealWavelength(self, d: dict):
self.cal_cfg = d
pass
def getSpectrum(self):
return self.spectrum
def resetPara(self, ):
self.buf = b''
self.it = None
self.light_int = None
self.spectrum = None # 光谱强度
self.cal_cfg = {}
pass
def resetItSpectrum(self, ):
self.it = None
self.spectrum = None # 光谱强度
pass
def printPara(self, ):
print(f"**************Ramses printPara*******************")
print(f"{self.buf}")
print(f"{self.cal_cfg}")
print(f"{self.it}")
print(f"{self.light_int}")
print(f"{self.spectrum}")
print(f"**************Ramses printPara*******************")
pass
def dealBuf(self, ip_included:bool=False):
"""多个传感器的数据处理, 头部是否包含Ip帧的信息"""
log.info(f" dealBuf ", __name__)
res = {}
len_ = len(self.buf)
if len_ < 576:
return
if ip_included:
self.buf = self.buf[26:]
len_ = len_ - 26
if len_ % 576 != 0:
return
for i in range(int(len_/576)):
res.update({i+1: {}})
temp_buf = self.buf[7:71] + self.buf[79:143] + \
self.buf[151:215] + self.buf[223:287] + \
self.buf[295:359] + self.buf[367:431] + \
self.buf[439:503] + self.buf[511:575]
self.ConvertAndCalibrate( temp_buf )
# print(len(temp_buf))
temp = self.__ConvertBytesToInt(temp_buf)
res.update( { i+1: temp } )
# print(res)
pass
def ConvertAndCalibrate(self,) -> None:
log.debug(f" ConvertAndCalibrate ", __name__)
temp = self.__ConvertBytesToInt( )
self.__CalibrateSpectrumData( )
pass
# 转换一个传感器的部分
def __ConvertBytesToInt(self ) -> None:
res = {}
d = [] # List [ Tuple[ it:int, sing_set:tuple[int] ] ]
self.it = 2 << int(self.buf[1]) # integrated time
self.light_int = struct.unpack(
"<HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", self.buf[2:])
def __CalibrateSpectrumData(self ,) :
t0 = 8092
log.debug(f" __CalibrateSpectrumData ..... ", __name__)
raw = np.asarray(self.light_int, dtype=float)
B0 = np.asarray(self.cal_cfg["b0"], dtype=float)
B1 = np.asarray(self.cal_cfg["b1"], dtype=float)
Mn = raw/65535
Bn = B0 + B1 * (self.it/t0)
Cn = Mn-Bn
Offset = self.getOffset(
Cn, int(self.cal_cfg['DarkPixelStart']), int(self.cal_cfg['DarkPixelStop']))
Dn = Cn-Offset
En = Dn * (t0/self.it)
Fn = En/np.asarray(self.cal_cfg["cal"], dtype=float) # 空气或水中的标定文件
self.spectrum = Fn
def getOffset(self, data: np.ndarray, start: int, stop: int):
ret = 0.0
for i in range(start-1, stop, 1):
ret = ret + data[i]
return ret / (stop - start + 1)
pass
# def read_bin(self,fpath: Path):
# log.debug(f" readbin: ", __name__, "", "" )
# ret = None
# if not fpath.exists() :
# log.info(f"not find file: {fpath} ")
# return ret
# with open(fpath, 'rb') as file:
# ret = file.read()
# return ret
# log.debug(f" readbin: {ret} ", __name__, "", "" )
# return ret
# pass
if __name__ == "__main__":
log.info(f"******** Awarms server initiate *********", __name__, "", "")
r = Ramses()
buf_str = "\
23a0000007fefe0a0781067d067d068e0693069c069c06b006b506cb06e40619076607e1076c081509cd09bb0a7d0bee0b1d0c6d0cca0ca40ddc0f30135b18b4224d320e43f852c8\
23a0000006fefe17639c71c97c9484bb89358be98e5d98b1a37eadccb66abd26be31b97db124aa18a3f29c0499349735968e93a48eea8a028bc28cec8d048f1c92c096de9ab99d43\
23a0000005fefee0a157a9ecb1b1b97dc034c507c741c7d2c65ec550c20dbde9b535ae56a60a9e2296cd8ee887278129798170c669b16503632e61605f3a5def5a8e5862561154be\
23a0000004fefe3c51f54dda4a0c48634595426a3f5a3cc539903767362b36cc351f356634b633fc32c4310630fb2ec32fe63199349037e03ac03dc03eae3c303a9639d13a413da7\
23a0000003fefe97412746bc49404caa4dc54d374ca646d63bde326b332739e43c503d2b3c363aca37ef342d32c22f782d1d2bd328ec250222101e691b2b1a7119d3184018fa174d\
23a0000002fefed3177a17e3160616f81423149313f11233126711d8103b10a40f160f8a0efb0d580d660c6f0bd80aa10a580a000ab4099b0994097109e2082c087a0736072c077d\
23a0000001fefe2a071e071607140718071e073c074d076a076e076b076007670763076c0760075c073d07350724071207fb06ef06d706cc06b706a506960684067b0672066306a2\
23a0000000fefe58065406500642064e064306470642063f064806410644064306430641064206460640063c063e063e063d064406430644063c063c063c063c06400640064906ed\
23a0000007fefe0a071b071c07260737073e0749075907650774078b07c0072c08e3082b0ada0be80d9c107b147318931ae51add1a271a77192f1bfb1d99207c265c30c738f03d53\
23a0000006fefe07438f489d4d8452d957945cff639171a5832a97deab7fbe09c86cc5acb9d5ab299e90915287de7f8b7ae275ed6f056aff664f662665bc63936335655767926879\
23a0000005fefec269206d3e724377fe7b7a8050831f85b68637881689e4884787008580823d7f887bee773d7496702a6cde654c5f895a1f570d5416514d4e9d4bde4897468c44c3\
23a0000004fefe71421640db3dc83bbb39533777346c31b92e912c152b5b2aff292129e727cb26d925fd249223b4214020da1fe91ff41f28209420dc201520071e671c221c8d1cfe\
23a0000003fefecd1dd31fe72164235924cb24b924f72331211e1ca018ef19221d121f621fe91e081ed51c761b311a2f193c18651788166015a013de11d1106e1041101810e80f2e\
23a0000002fefee50fd90fbc0f6d0ff70e610ee00d930d460de40c900c450c010cbd0b7c0b480bfc0aab0a2c0a9e094d092b09fb08d008a208990881087d083908e6078d07660747\
23a0000001fefe5b075a07500751074d074e0751075d076807730788077e077c077c07810777077a076c0765075c075607480740073607270723070d070d070b07ff06fd06f0062f\
23a0000000fefef606f106ed06f506ef06eb06f106ec06f006e906e806ed06e606ef06e506ea06ec06ee06eb06e906ee06f006ef06ea06e906e606e606e606ec06ea06ea06f506f2\
23a0000007fefe0605830479047d047e04810482048204850487048b048c04850487048c049304950498049c04a804a904b604b804c604d004e104f104190546059805ff059a06bb\
23a0000006fefe90073209ea0b7610c117cc22b2324a487b645e8798acf2c927d28dc1f2a1ac809664804e543d7a308327a321d81dab1b0f1bca1bb41dba2098243329382e773335\
23a0000005fefeca38213e544329486f4c1c500653335592564f577d573b57a556b4557e540a534451424f004d714a9b47994458410e3e9c3af8368c33b630982eca2c052b3429ae\
23a0000004fefe632763255a234821321f0e1d061b291983171e16d814a91379124b1138104b0f610e990dd80c240c880bfc0a7b0af8097709020990082508de07c507ba07a50762\
23a0000003fefe950781076407460727070007d306ab066e06270605060d0614061306fe05e805d105b405a00586057105630549053d0528051105fd04f304ee04e404dc04dd04c3\
23a0000002fefed804d904d004c604bf04b904b904b104a804a604a6049d04980496048f04970491048c04880486047e0484047a047d047b047c0478047a04760476047004700430\
23a0000001fefe6f0474046c046d0472046d047304750470046e04760472046f047604700473046f04730470047504700470046d046b047004710470046e046d046a046b046904e4\
23a0000000fefe690470046e046b046c04680468046e0466046a046a0469046b046d04640466046c046c046b046a04660466046b046c046a046a0468046f046804740471048d0417\
"
buf = bytearray.fromhex(buf_str)
one_senor = buf[:576]
r.setHex(one_senor)
r.ConvertBytesToInt()
# print(len(buf))
# # print(buf[:576])
# print(buf[:576].hex())
# print(buf[576:578].hex() )

116
app.py

@ -0,0 +1,116 @@
from pathlib import *
from tools.mylogger import log
from configuration import Configuration
from receive import MyServer,MyThreadingTCPServer
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
IP = ""
PORT = 7887
ADDRESS = (IP, PORT) # 绑定地址
if __name__ == "__main__":
log.info(f"******** Awarms server initiate.... *********", __name__, "", "")
#######################################
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)
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)
# r= Ramses()
# p = Path("0.bin")
# buf = r.read_bin(p)
# print(buf.hex())
# buf_str= "\
# 23a0000007fefe0a0781067d067d068e0693069c069c06b006b506cb06e40619076607e1076c081509cd09bb0a7d0bee0b1d0c6d0cca0ca40ddc0f30135b18b4224d320e43f852c8\
# 23a0000006fefe17639c71c97c9484bb89358be98e5d98b1a37eadccb66abd26be31b97db124aa18a3f29c0499349735968e93a48eea8a028bc28cec8d048f1c92c096de9ab99d43\
# 23a0000005fefee0a157a9ecb1b1b97dc034c507c741c7d2c65ec550c20dbde9b535ae56a60a9e2296cd8ee887278129798170c669b16503632e61605f3a5def5a8e5862561154be\
# 23a0000004fefe3c51f54dda4a0c48634595426a3f5a3cc539903767362b36cc351f356634b633fc32c4310630fb2ec32fe63199349037e03ac03dc03eae3c303a9639d13a413da7\
# 23a0000003fefe97412746bc49404caa4dc54d374ca646d63bde326b332739e43c503d2b3c363aca37ef342d32c22f782d1d2bd328ec250222101e691b2b1a7119d3184018fa174d\
# 23a0000002fefed3177a17e3160616f81423149313f11233126711d8103b10a40f160f8a0efb0d580d660c6f0bd80aa10a580a000ab4099b0994097109e2082c087a0736072c077d\
# 23a0000001fefe2a071e071607140718071e073c074d076a076e076b076007670763076c0760075c073d07350724071207fb06ef06d706cc06b706a506960684067b0672066306a2\
# 23a0000000fefe58065406500642064e064306470642063f064806410644064306430641064206460640063c063e063e063d064406430644063c063c063c063c06400640064906ed\
# 23a0000007fefe0a071b071c07260737073e0749075907650774078b07c0072c08e3082b0ada0be80d9c107b147318931ae51add1a271a77192f1bfb1d99207c265c30c738f03d53\
# 23a0000006fefe07438f489d4d8452d957945cff639171a5832a97deab7fbe09c86cc5acb9d5ab299e90915287de7f8b7ae275ed6f056aff664f662665bc63936335655767926879\
# 23a0000005fefec269206d3e724377fe7b7a8050831f85b68637881689e4884787008580823d7f887bee773d7496702a6cde654c5f895a1f570d5416514d4e9d4bde4897468c44c3\
# 23a0000004fefe71421640db3dc83bbb39533777346c31b92e912c152b5b2aff292129e727cb26d925fd249223b4214020da1fe91ff41f28209420dc201520071e671c221c8d1cfe\
# 23a0000003fefecd1dd31fe72164235924cb24b924f72331211e1ca018ef19221d121f621fe91e081ed51c761b311a2f193c18651788166015a013de11d1106e1041101810e80f2e\
# 23a0000002fefee50fd90fbc0f6d0ff70e610ee00d930d460de40c900c450c010cbd0b7c0b480bfc0aab0a2c0a9e094d092b09fb08d008a208990881087d083908e6078d07660747\
# 23a0000001fefe5b075a07500751074d074e0751075d076807730788077e077c077c07810777077a076c0765075c075607480740073607270723070d070d070b07ff06fd06f0062f\
# 23a0000000fefef606f106ed06f506ef06eb06f106ec06f006e906e806ed06e606ef06e506ea06ec06ee06eb06e906ee06f006ef06ea06e906e606e606e606ec06ea06ea06f506f2\
# 23a0000007fefe0605830479047d047e04810482048204850487048b048c04850487048c049304950498049c04a804a904b604b804c604d004e104f104190546059805ff059a06bb\
# 23a0000006fefe90073209ea0b7610c117cc22b2324a487b645e8798acf2c927d28dc1f2a1ac809664804e543d7a308327a321d81dab1b0f1bca1bb41dba2098243329382e773335\
# 23a0000005fefeca38213e544329486f4c1c500653335592564f577d573b57a556b4557e540a534451424f004d714a9b47994458410e3e9c3af8368c33b630982eca2c052b3429ae\
# 23a0000004fefe632763255a234821321f0e1d061b291983171e16d814a91379124b1138104b0f610e990dd80c240c880bfc0a7b0af8097709020990082508de07c507ba07a50762\
# 23a0000003fefe950781076407460727070007d306ab066e06270605060d0614061306fe05e805d105b405a00586057105630549053d0528051105fd04f304ee04e404dc04dd04c3\
# 23a0000002fefed804d904d004c604bf04b904b904b104a804a604a6049d04980496048f04970491048c04880486047e0484047a047d047b047c0478047a04760476047004700430\
# 23a0000001fefe6f0474046c046d0472046d047304750470046e04760472046f047604700473046f04730470047504700470046d046b047004710470046e046d046a046b046904e4\
# 23a0000000fefe690470046e046b046c04680468046e0466046a046a0469046b046d04640466046c046c046b046a04660466046b046c046a046a0468046f046804740471048d0417\
# "
# buf = bytearray.fromhex(buf_str)
# one_senor = buf
# r.setBuf(one_senor)
# r.setCalCfg(cal_cfg[2]["Lsky"])
# r.dealBuf()
# print(r.cal_cfg)

@ -0,0 +1,132 @@
from pathlib import *
from mylogger import log
# from awrams.readfile import Readfile
# from awrams.AWRAMS import AWRAMS
from configuration import Configuration
# import struct
# import threading
# import socketserver
# from socketserver import ThreadingTCPServer,TCPServer,ThreadingMixIn
# from myserver import MyThreadingTCPServer,MyTCPServer
from receive import MyServer, MyThreadingTCPServer
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 AWRAMS
IP = ""
PORT = 7887
ADDRESS = (IP, PORT) # 绑定地址
if __name__ == "__main__":
log.info(f"******** Awarms server initiate *********", __name__, "", "")
#######################################
device_id = DEVICE_ID # 多个设备
device_type = DeviceType.AWRAMS.name
mycfg = MyConfig()
mycfg.setDeviceType(DeviceType.AWRAMS)
init_para = mycfg.read_yaml()
log.info(f"Current Device: {device_type} ", __name__, "", "")
log.info(f"Sensor: {init_para}", __name__, "", "")
mycfg.setRetrieveCfg("retrieve.yml")
retrieve = mycfg.read_rtv_yaml()
log.warning(f"Retrieve 反演参数设置: {retrieve}", __name__, "", "")
cal_cfg = {}
# ddd = {"1": {'FUNC': 'Lsky', 'SN': '85B5'}, "2": {'FUNC': 'Esky', 'SN': ['50ED']}, "3": {'FUNC': 'Lwater', 'SN': ['852F']}}
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})
a = AWRAMS()
a.setCfg(cal_cfg)
a.setRetrieve(retrieve)
p = ("data","2","17")
a.setOldFolder(p)
a.readOneFolder( )
# 将参数 begin
# 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.info(" Ctrl+C 退出主程序 ")
# server_.server_close()
# except Exception as e:
# log.info(" 系统异常, 如下: \n ")
# log.info(e)
# r= Ramses()
# p = Path("0.bin")
# buf = r.read_bin(p)
# print(buf.hex())
# buf_str= "\
# 23a0000007fefe0a0781067d067d068e0693069c069c06b006b506cb06e40619076607e1076c081509cd09bb0a7d0bee0b1d0c6d0cca0ca40ddc0f30135b18b4224d320e43f852c8\
# 23a0000006fefe17639c71c97c9484bb89358be98e5d98b1a37eadccb66abd26be31b97db124aa18a3f29c0499349735968e93a48eea8a028bc28cec8d048f1c92c096de9ab99d43\
# 23a0000005fefee0a157a9ecb1b1b97dc034c507c741c7d2c65ec550c20dbde9b535ae56a60a9e2296cd8ee887278129798170c669b16503632e61605f3a5def5a8e5862561154be\
# 23a0000004fefe3c51f54dda4a0c48634595426a3f5a3cc539903767362b36cc351f356634b633fc32c4310630fb2ec32fe63199349037e03ac03dc03eae3c303a9639d13a413da7\
# 23a0000003fefe97412746bc49404caa4dc54d374ca646d63bde326b332739e43c503d2b3c363aca37ef342d32c22f782d1d2bd328ec250222101e691b2b1a7119d3184018fa174d\
# 23a0000002fefed3177a17e3160616f81423149313f11233126711d8103b10a40f160f8a0efb0d580d660c6f0bd80aa10a580a000ab4099b0994097109e2082c087a0736072c077d\
# 23a0000001fefe2a071e071607140718071e073c074d076a076e076b076007670763076c0760075c073d07350724071207fb06ef06d706cc06b706a506960684067b0672066306a2\
# 23a0000000fefe58065406500642064e064306470642063f064806410644064306430641064206460640063c063e063e063d064406430644063c063c063c063c06400640064906ed\
# 23a0000007fefe0a071b071c07260737073e0749075907650774078b07c0072c08e3082b0ada0be80d9c107b147318931ae51add1a271a77192f1bfb1d99207c265c30c738f03d53\
# 23a0000006fefe07438f489d4d8452d957945cff639171a5832a97deab7fbe09c86cc5acb9d5ab299e90915287de7f8b7ae275ed6f056aff664f662665bc63936335655767926879\
# 23a0000005fefec269206d3e724377fe7b7a8050831f85b68637881689e4884787008580823d7f887bee773d7496702a6cde654c5f895a1f570d5416514d4e9d4bde4897468c44c3\
# 23a0000004fefe71421640db3dc83bbb39533777346c31b92e912c152b5b2aff292129e727cb26d925fd249223b4214020da1fe91ff41f28209420dc201520071e671c221c8d1cfe\
# 23a0000003fefecd1dd31fe72164235924cb24b924f72331211e1ca018ef19221d121f621fe91e081ed51c761b311a2f193c18651788166015a013de11d1106e1041101810e80f2e\
# 23a0000002fefee50fd90fbc0f6d0ff70e610ee00d930d460de40c900c450c010cbd0b7c0b480bfc0aab0a2c0a9e094d092b09fb08d008a208990881087d083908e6078d07660747\
# 23a0000001fefe5b075a07500751074d074e0751075d076807730788077e077c077c07810777077a076c0765075c075607480740073607270723070d070d070b07ff06fd06f0062f\
# 23a0000000fefef606f106ed06f506ef06eb06f106ec06f006e906e806ed06e606ef06e506ea06ec06ee06eb06e906ee06f006ef06ea06e906e606e606e606ec06ea06ea06f506f2\
# 23a0000007fefe0605830479047d047e04810482048204850487048b048c04850487048c049304950498049c04a804a904b604b804c604d004e104f104190546059805ff059a06bb\
# 23a0000006fefe90073209ea0b7610c117cc22b2324a487b645e8798acf2c927d28dc1f2a1ac809664804e543d7a308327a321d81dab1b0f1bca1bb41dba2098243329382e773335\
# 23a0000005fefeca38213e544329486f4c1c500653335592564f577d573b57a556b4557e540a534451424f004d714a9b47994458410e3e9c3af8368c33b630982eca2c052b3429ae\
# 23a0000004fefe632763255a234821321f0e1d061b291983171e16d814a91379124b1138104b0f610e990dd80c240c880bfc0a7b0af8097709020990082508de07c507ba07a50762\
# 23a0000003fefe950781076407460727070007d306ab066e06270605060d0614061306fe05e805d105b405a00586057105630549053d0528051105fd04f304ee04e404dc04dd04c3\
# 23a0000002fefed804d904d004c604bf04b904b904b104a804a604a6049d04980496048f04970491048c04880486047e0484047a047d047b047c0478047a04760476047004700430\
# 23a0000001fefe6f0474046c046d0472046d047304750470046e04760472046f047604700473046f04730470047504700470046d046b047004710470046e046d046a046b046904e4\
# 23a0000000fefe690470046e046b046c04680468046e0466046a046a0469046b046d04640466046c046c046b046a04660466046b046c046a046a0468046f046804740471048d0417\
# "
# buf = bytearray.fromhex(buf_str)
# one_senor = buf
# r.setBuf(one_senor)
# r.setCalCfg(cal_cfg[2]["Lsky"])
# r.dealBuf()
# print(r.cal_cfg)

File diff suppressed because it is too large Load Diff

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = DLAB_2016-11-29_14-47-59_729_812
IDDevice = SAM_852F
IDDataType = SPECTRUM
IDDataTypeSub1 = BACK
IDDataTypeSub2 =
IDDataTypeSub3 =
DateTime = 2016-11-29 14:41:43
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType = SAM Calibration Station
MethodName = SAM_Calibration_Station
Mission =
MissionSub = 0
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack =
IDDataCal =
IntegrationTime = 8192
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $03 $05 Intensity counts
Unit3 = $03 $05 Intensity counts
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 12 0 0
1 0.0181271394490075 0.0246216519286131 0
2 0.0179948670252732 0.024510637261161 0
3 0.0180195207374602 0.0246496004937187 0
4 0.0181005261905924 0.0246158903420498 0
5 0.018089553708784 0.0244170047588795 0
6 0.0180460947386496 0.0245126709060577 0
7 0.0180426749981038 0.0246256846551714 0
8 0.0180534564280807 0.0247016785610073 0
9 0.0180790359128869 0.0245795106168697 0
10 0.0180635226786445 0.024601391414026 0
11 0.0180649523395645 0.0247430929974417 0
12 0.0180630058790784 0.0246690990460763 0
13 0.0180600544336154 0.0246595979967682 0
14 0.0180597668962471 0.024549218035998 0
15 0.0180588020408788 0.0245417076893854 0
16 0.0180498552319141 0.0249321420235364 0
17 0.0180704773142647 0.0245095865737246 0
18 0.0180562171706652 0.0245109975567032 0
19 0.0180717635554537 0.0246271043662396 0
20 0.0180430410499234 0.0249088567021879 0
21 0.0180523488508876 0.0244657876231882 0
22 0.0180618142041841 0.0248177038501861 0
23 0.0180579205853055 0.0247746806522609 0
24 0.0180626933915622 0.0246467759093347 0
25 0.0180613022899616 0.0244827044066167 0
26 0.0180574472304024 0.0246539416709665 0
27 0.0180710633810246 0.024721638131062 0
28 0.0180638238251844 0.0244816703025508 0
29 0.0180615148024098 0.0248143197952532 0
30 0.0180669541091198 0.0247325126325631 0
31 0.0180750465063777 0.0245241834309148 0
32 0.0180621163975833 0.0244880571694591 0
33 0.0180742925931686 0.0247891481591618 0
34 0.0180599654505706 0.0245174540737672 0
35 0.0180625609638543 0.0248839095525633 0
36 0.018079003460247 0.0244844522938572 0
37 0.0180789446616468 0.024819053561975 0
38 0.0180641596925595 0.0246153722426461 0
39 0.0180789860125912 0.0244569738236619 0
40 0.0180726758933779 0.024594164032081 0
41 0.0180883707577176 0.024739169721128 0
42 0.0180761767655234 0.0246157473759408 0
43 0.0180788425928601 0.0245033974853286 0
44 0.0180748167207502 0.0247480762129667 0
45 0.018087924097728 0.0246028704761041 0
46 0.0180769134055532 0.0245055458173238 0
47 0.0180908061015206 0.02469614722145 0
48 0.0180821035597377 0.0244073975760008 0
49 0.0180826006434528 0.0245040215437411 0
50 0.0180812086694694 0.0244248794159556 0
51 0.0180992416941691 0.0244697287048048 0
52 0.0180889166948691 0.0246472875499521 0
53 0.0180883470289057 0.0246650067939463 0
54 0.0180961206574913 0.0244401485106133 0
55 0.0180961166445305 0.0243791267698239 0
56 0.0180882432153534 0.0246499286698909 0
57 0.0180960383045557 0.0243780806209942 0
58 0.0180981065496797 0.0247780093711051 0
59 0.0180892262162838 0.0247202135322636 0
60 0.018090062656905 0.0245516643449751 0
61 0.0181151497688632 0.0244492274695042 0
62 0.0180994168686337 0.0246700816544131 0
63 0.0180945880554018 0.0246774251199509 0
64 0.0181024354875717 0.0245070955769284 0
65 0.0180812022138367 0.0246320020464858 0
66 0.018095840622615 0.0244041100537399 0
67 0.0181047246200187 0.0245954472358265 0
68 0.0180913783846324 0.0243854736620815 0
69 0.0181042299789754 0.0245493665880845 0
70 0.018097802960468 0.0247136054955626 0
71 0.0180910716548426 0.0246331129577409 0
72 0.0181013286082848 0.0247415952572516 0
73 0.0180952437383085 0.0248944354541623 0
74 0.0181025522123893 0.0247328998106215 0
75 0.0180982995207534 0.0246575704615342 0
76 0.0180837411967154 0.0247710366748172 0
77 0.0181112380044225 0.0247250916615888 0
78 0.0181073538072781 0.0247268100478861 0
79 0.018103745283096 0.0248027810861271 0
80 0.0180962696604722 0.0248363912138882 0
81 0.0181080471771214 0.0249100102065207 0
82 0.0180900361364681 0.0245452771289432 0
83 0.0181011494208593 0.0246815472221476 0
84 0.0181086649986149 0.0246684887780455 0
85 0.0181182547536976 0.0248864084046402 0
86 0.0181057997445719 0.024731509076811 0
87 0.0181089392757648 0.0246692868745663 0
88 0.0181055429150778 0.0245807166643024 0
89 0.0181146218027973 0.0247555966841634 0
90 0.0181128730242519 0.024710914276389 0
91 0.0181162224507446 0.0247437058838994 0
92 0.018127437978399 0.0247758020372237 0
93 0.0181252793544177 0.0244627418690115 0
94 0.0181109518628667 0.0246814871728906 0
95 0.0181264111838525 0.0246144002825787 0
96 0.018109165222908 0.0247326369205602 0
97 0.0181143328696165 0.0247778595970861 0
98 0.0181233651720949 0.0250858798171903 0
99 0.0181237422159377 0.02491093660596 0
100 0.0181142894249535 0.0248098248290651 0
101 0.0181268594141312 0.0248231980080813 0
102 0.0181223244194237 0.0247223508668658 0
103 0.0181331201564784 0.0247285340201608 0
104 0.0181055589669212 0.0245271073409594 0
105 0.0181385395728607 0.0246145044959695 0
106 0.0181050559510032 0.0247301532553592 0
107 0.0181237826944993 0.0247854968501228 0
108 0.0181113664191696 0.0249164176717207 0
109 0.0181140599882791 0.0248323871154641 0
110 0.0181137768128247 0.0245063201734407 0
111 0.0181257021111189 0.0249895534773082 0
112 0.0181361358093148 0.0247316035147414 0
113 0.0181222916178307 0.0250480786353239 0
114 0.0181118017381829 0.0245604978699841 0
115 0.0181256476744327 0.0248995078707639 0
116 0.0181248496186543 0.0247918838915929 0
117 0.0181254770363585 0.0246323141629729 0
118 0.0181331583668447 0.0246174315481265 0
119 0.0181230066227672 0.0245240120112333 0
120 0.0181144363342157 0.0247643169185683 0
121 0.0181321676889458 0.0246655463644507 0
122 0.0181179351126425 0.024543567994421 0
123 0.0181364284065034 0.0246558676112366 0
124 0.0181453949313192 0.0245943996905025 0
125 0.0181325621804444 0.0250753080058395 0
126 0.0181156688366246 0.0250045579362867 0
127 0.0181297948077507 0.0246554029277417 0
128 0.0181383919656923 0.0250264155167244 0
129 0.0181374979478067 0.0246469593737799 0
130 0.0181199012889798 0.024665052703698 0
131 0.0181422937849691 0.0248279473108028 0
132 0.0181196791803209 0.0246961217354281 0
133 0.0181355928382649 0.0245553355540586 0
134 0.0181084210803862 0.0245557204628138 0
135 0.018133168137532 0.0247270518159704 0
136 0.0181404589894803 0.0247966155635732 0
137 0.0181418954549861 0.0247140158903397 0
138 0.0181177946590129 0.0247626610253931 0
139 0.0181147076452641 0.0248185803249523 0
140 0.0181089181641013 0.024609407466155 0
141 0.0181443674388664 0.0247364268316634 0
142 0.0181377502409103 0.0246575409605911 0
143 0.0181289850620429 0.0248112543155938 0
144 0.0181158340659255 0.0245781406559126 0
145 0.0181305586661236 0.0247824863574285 0
146 0.0181270701818138 0.0246500847281345 0
147 0.0181084884283378 0.0247009649523946 0
148 0.0181265399475526 0.0248219430833464 0
149 0.0181359089897888 0.024708337569752 0
150 0.0181099418180697 0.0246372621170157 0
151 0.0181312042293899 0.0247286281089676 0
152 0.0181193782082575 0.0245687148427376 0
153 0.0181291396482737 0.0244441117615777 0
154 0.0181114958807759 0.0246077550642157 0
155 0.018131541667054 0.0247010606122576 0
156 0.0181167600130213 0.0247215691791535 0
157 0.018133784563213 0.0245714196777312 0
158 0.01811013496362 0.024795434478477 0
159 0.018139256671516 0.0244320022353862 0
160 0.0181215378790981 0.0247462735133231 0
161 0.0181241962039428 0.0246903013215404 0
162 0.0181255386265836 0.0245514873393163 0
163 0.0181152391008612 0.0245751469211505 0
164 0.0181239868320727 0.0246573018109337 0
165 0.018128921378099 0.0244665511564739 0
166 0.0181191986718789 0.0246441606245413 0
167 0.0181302022105147 0.0244944379267046 0
168 0.0181156925654366 0.0247590790173862 0
169 0.018128299020215 0.0244953459971555 0
170 0.0181149622065629 0.0247222716158114 0
171 0.0181265924649967 0.0246553421802375 0
172 0.0181200464534764 0.0246119307568831 0
173 0.018134817115486 0.0246354342804737 0
174 0.0181138528846042 0.0243070187840778 0
175 0.0181302275096157 0.0247393772751007 0
176 0.0181219730236349 0.0245134415963769 0
177 0.0181227435121171 0.0247120136665658 0
178 0.0181128882037125 0.0245733489346753 0
179 0.0181298839652721 0.0244120664057354 0
180 0.0181217728990224 0.0245414062211677 0
181 0.0181271213034454 0.0248899691161084 0
182 0.0181002302783493 0.0246153303478156 0
183 0.0181198512142075 0.0247247613906751 0
184 0.0181077788321745 0.0246353044064992 0
185 0.0181113704321304 0.0248533992931349 0
186 0.0181110165936699 0.0244737232023303 0
187 0.0181200574454996 0.0247406206787574 0
188 0.0181026958065969 0.0245452593236402 0
189 0.0181267051768535 0.0245186117675831 0
190 0.018099050467861 0.024411721471631 0
191 0.0181217983725999 0.0246871115538839 0
192 0.0181250125797599 0.0245525059073826 0
193 0.018113538826799 0.0247245782753535 0
194 0.0181123129544992 0.0246827284818056 0
195 0.0181229691103072 0.0247343388980489 0
196 0.0181081715789076 0.0248475752134495 0
197 0.0181231769118883 0.024459163701364 0
198 0.0181145502674084 0.0247058137553385 0
199 0.0181123405217955 0.0246986457244034 0
200 0.0181137211548025 0.024567998615698 0
201 0.0181167594895916 0.0243962081650239 0
202 0.0181050918931742 0.02490341386546 0
203 0.0181182652222911 0.024537072550077 0
204 0.0181006336681525 0.0244906673919604 0
205 0.0181259247432075 0.0245997164936153 0
206 0.018101253059935 0.0246575069210413 0
207 0.018119688602055 0.0242198948182748 0
208 0.018109630726366 0.024409780344485 0
209 0.0181146952574284 0.0242338197871209 0
210 0.0181041917686091 0.0244076180475463 0
211 0.0181114787820732 0.0245564188845504 0
212 0.0181135109105496 0.0246008453847352 0
213 0.0181156468525783 0.0245239058776628 0
214 0.0180992396004504 0.0246243248187984 0
215 0.0181260718269463 0.0246248141155061 0
216 0.0181003136781442 0.0243052663582307 0
217 0.0181070481243477 0.0245985008452839 0
218 0.0181074850136501 0.0243217586073769 0
219 0.0181076732738566 0.0246622282938758 0
220 0.0181037805273608 0.0246268287331674 0
221 0.0181054610855719 0.0244327690853459 0
222 0.0180953817492662 0.0245608707339754 0
223 0.0181251186615074 0.0244063069139137 0
224 0.0181015350140535 0.0246343666605434 0
225 0.0181170220768121 0.0244305303303416 0
226 0.0180958751689736 0.0247014261446536 0
227 0.0181153706561862 0.0246118652962104 0
228 0.0181087792807607 0.0246281107149804 0
229 0.0181190203568361 0.0246470772029907 0
230 0.0181090340165361 0.0247607972291217 0
231 0.0181264401469612 0.0247295342592388 0
232 0.0181213607853913 0.0246461279359564 0
233 0.0181053968781984 0.0245565616760977 0
234 0.0181112694102031 0.0244480411475541 0
235 0.0181143349633352 0.0245717391258137 0
236 0.0181028416689998 0.0246028116487796 0
237 0.0181058145750794 0.0248620650642601 0
238 0.018112246653407 0.0244563693161703 0
239 0.018102646778684 0.0245400739655581 0
240 0.0181018787328736 0.024658254394642 0
241 0.0181089858610059 0.0247536939606119 0
242 0.0181129695097887 0.024581995678565 0
243 0.0181304682872664 0.024518225986019 0
244 0.0181118867082669 0.0249431329577538 0
245 0.0181302966023328 0.024793957860264 0
246 0.0181224601621861 0.0246779200026361 0
247 0.0181439211278299 0.0246277942344484 0
248 0.0181333813478864 0.0245882612250266 0
249 0.0181515932110585 0.0245443142460891 0
250 0.0181361972250634 0.0244427728726199 0
251 0.0181645852590311 0.0245225095578749 0
252 0.018168622995547 0.0246755827947801 0
253 0.0182029242145575 0.0244593372157869 0
254 0.01826668143855 0.0246154502717679 0
255 0.0187321041138753 0.0255941653568822 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = DLAB_2018-05-04_11-56-28_529_586
IDDevice = SAM_859F
IDDataType = SPECTRUM
IDDataTypeSub1 = BACK
IDDataTypeSub2 =
IDDataTypeSub3 =
DateTime = 2018-05-04 11:50:12
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType = SAM Calibration Station
MethodName = SAM_Calibration_Station
Mission =
MissionSub = 0
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack =
IDDataCal =
IntegrationTime = 8192
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $03 $05 Intensity counts
Unit3 = $03 $05 Intensity counts
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 12 0 0
1 0.0165892037855774 0.018605511502516 0
2 0.0165122714877024 0.0184837131056956 0
3 0.0164973019224162 0.0183851120510798 0
4 0.0166164505683762 0.0184840774161591 0
5 0.0165490556826164 0.0185292503425739 0
6 0.0165598147795938 0.0186302980552904 0
7 0.0164974439463348 0.0183759157866635 0
8 0.0165638938670541 0.0186312056020559 0
9 0.0165295399561229 0.0185970883722841 0
10 0.0165679375357729 0.018610557385725 0
11 0.0165135498774463 0.018696732782741 0
12 0.0165496044113927 0.0185527901750176 0
13 0.0165162233817516 0.0184841121539561 0
14 0.0165748471564411 0.0185602766066645 0
15 0.0165168071803162 0.0183555554227304 0
16 0.016561615028724 0.0185179326286786 0
17 0.0165228899565738 0.0185996666499772 0
18 0.0165630265440819 0.0186817794703681 0
19 0.0165138880130166 0.0184706934143117 0
20 0.016557182975186 0.0185104139030999 0
21 0.0165155392591658 0.0185717901788923 0
22 0.0165657065040199 0.0185864488309574 0
23 0.016518681058554 0.0184904599190226 0
24 0.0165595148543898 0.0185467707606851 0
25 0.0165168741793146 0.0185513739551852 0
26 0.0165713147040385 0.0186439978394227 0
27 0.0165192898072665 0.0185915799003217 0
28 0.0165624174464164 0.0186942077463949 0
29 0.0165336104942318 0.0186620183770728 0
30 0.0165711529642688 0.0186390987626822 0
31 0.0165277786152653 0.0185678106936811 0
32 0.0165778362888406 0.0186122998615499 0
33 0.0165368341231259 0.0184338018739524 0
34 0.0165763434674064 0.0186563994074951 0
35 0.0165347332508855 0.0186582494133848 0
36 0.0165844704110229 0.0184381484626158 0
37 0.0165276158286362 0.0187957369005385 0
38 0.016561547855249 0.0184585601477162 0
39 0.0165227810832013 0.018382363401076 0
40 0.0165862270410135 0.0185619393077496 0
41 0.0165383602695828 0.0188072553604966 0
42 0.0165776928691096 0.018482204891798 0
43 0.0165375732058275 0.0185649745882186 0
44 0.0165658438170714 0.0189122127337069 0
45 0.0165459794864142 0.0186279875553889 0
46 0.0165800024153139 0.0184615582465232 0
47 0.0165525603932462 0.0185698745377681 0
48 0.0165907623846741 0.0185120261558266 0
49 0.0165508449397234 0.0184379972921025 0
50 0.0165903560287695 0.0185804266236362 0
51 0.0165476473078365 0.0185466583428899 0
52 0.0165857165226035 0.0185885491584593 0
53 0.0165481178711146 0.0184078979511364 0
54 0.0165957271151451 0.0184049089295427 0
55 0.0165507685189908 0.0184970417714545 0
56 0.0165883062781607 0.0184417327399261 0
57 0.0165548565047555 0.0183843069720872 0
58 0.0166030835702795 0.0185357707492544 0
59 0.0165500053585241 0.018271672720313 0
60 0.0165961038100348 0.018684147226538 0
61 0.0165517131350783 0.0187957920620654 0
62 0.0166133108627067 0.0182829548236024 0
63 0.0165473248751564 0.0184118543941909 0
64 0.0165983146025071 0.0184413151881155 0
65 0.0165525591719102 0.0184057733595452 0
66 0.0166064242729443 0.0182871827102461 0
67 0.0165435383848847 0.0183972310036081 0
68 0.0165950365369267 0.0185852110132782 0
69 0.0165586482293239 0.0183187237570663 0
70 0.0166092385798323 0.0184794824260633 0
71 0.0165697841956677 0.0185034061198914 0
72 0.0165967129077004 0.0181402547467266 0
73 0.0165732545344154 0.0184165518520597 0
74 0.0166026855892496 0.0183788985240326 0
75 0.0165687354170748 0.0181609569026518 0
76 0.0166129015407006 0.0186252303518572 0
77 0.0165534954131229 0.0183105499010758 0
78 0.0166168593669527 0.0181418076484435 0
79 0.0165646865140591 0.0183057028437498 0
80 0.0166018156491291 0.018502016957137 0
81 0.0165586096700045 0.0184040678908206 0
82 0.0166129247460829 0.0184980723842845 0
83 0.0165712166482126 0.0184303921584359 0
84 0.0166143243970348 0.0185389638335849 0
85 0.0165701301826831 0.0182085812003356 0
86 0.0166189659969196 0.0184602108040376 0
87 0.0165676643054824 0.0184275042081207 0
88 0.0166299271377517 0.0185323186152219 0
89 0.0165751742999882 0.0182322636497648 0
90 0.0166072596667062 0.0183371464850892 0
91 0.0165629157514673 0.0182259586523378 0
92 0.0166089130065742 0.018483065481441 0
93 0.0165693558557167 0.0182905728748417 0
94 0.0166203017894511 0.0184016187888549 0
95 0.0165698981288603 0.0183132295991711 0
96 0.0166107804291794 0.0181924879994499 0
97 0.0165637935430329 0.0184099916452902 0
98 0.0166245248200721 0.0187024550929006 0
99 0.0165754381085446 0.0183715293979111 0
100 0.0166166770389491 0.0183022039271567 0
101 0.01656780789969 0.0184077949596782 0
102 0.0166270111110302 0.0183611756142407 0
103 0.0165662229546329 0.018411879705651 0
104 0.0166136421936913 0.0183403743072167 0
105 0.0165698424708382 0.0184016243748323 0
106 0.0166173691874565 0.0184520221102946 0
107 0.0165821997730911 0.0183486391099018 0
108 0.0166164975025705 0.01861046347148 0
109 0.0165739878593907 0.0185649627180167 0
110 0.016623824645643 0.0184582639163523 0
111 0.0165631308810639 0.0186787228933602 0
112 0.0166247172677161 0.0185190477294169 0
113 0.0165669479047333 0.0186510274428554 0
114 0.0166042075482691 0.0186025957968757 0
115 0.0165806895040011 0.0183767100428249 0
116 0.0166075213815439 0.0183237705130843 0
117 0.0165708319274012 0.0183277608211268 0
118 0.0166233251192561 0.0185572685578353 0
119 0.0165772010196913 0.0184446809140601 0
120 0.016621139974838 0.0186042166031303 0
121 0.0165690780890356 0.0186733833972142 0
122 0.0166295818486425 0.0186773335560441 0
123 0.0165801878838955 0.0184308924525366 0
124 0.0166132293821539 0.0186073100126766 0
125 0.0165742146789166 0.0183468275076066 0
126 0.0166257485986531 0.0185506345114271 0
127 0.0165839324997932 0.0186062746866781 0
128 0.0166274820232614 0.0184876664066378 0
129 0.0165711257459257 0.0182968567502917 0
130 0.0166118375826471 0.0184814123812545 0
131 0.0165702390560556 0.0186338901878814 0
132 0.0166138555785223 0.0185727479994544 0
133 0.0165495885340259 0.0184737700659259 0
134 0.0166076853895089 0.0185519168423637 0
135 0.0165715106412136 0.0184109360245942 0
136 0.0165914878582042 0.0186137698464147 0
137 0.0165708420470416 0.0184927182249478 0
138 0.0166090042578143 0.0183322589294271 0
139 0.0165677817282062 0.0184634239629744 0
140 0.0166140523880802 0.0185381407747276 0
141 0.0165772907006423 0.0183129747389523 0
142 0.0166172060518744 0.018566407740545 0
143 0.0165733789362016 0.0184619363473684 0
144 0.0166208616847272 0.0185385801467623 0
145 0.0165699940909675 0.0184219012982279 0
146 0.0166094990733341 0.0184126872285087 0
147 0.0165568282643426 0.0186440826764544 0
148 0.0166152531357555 0.0184714934310123 0
149 0.0165675189665092 0.0186275679088368 0
150 0.0166057366608274 0.0184197444127049 0
151 0.0165695308557048 0.0184460824707018 0
152 0.0165973481768498 0.018243945325 0
153 0.0165636400036615 0.018415498022511 0
154 0.0166118299056785 0.0184500097619367 0
155 0.0165665354421491 0.0185133976878398 0
156 0.0165949780872796 0.0184093356420695 0
157 0.0165594520428288 0.0185570035730324 0
158 0.0166050473039449 0.0186677780434563 0
159 0.0165700478297475 0.0187476308123041 0
160 0.0166062033856213 0.0184833070749635 0
161 0.0165620390067611 0.0183987680202018 0
162 0.0165990297819202 0.0183971864903508 0
163 0.016574294763657 0.0184699862644854 0
164 0.0165960321001693 0.0186248246702486 0
165 0.016567221483977 0.0185793174579989 0
166 0.0166072507684017 0.0187341727962561 0
167 0.0165554031398131 0.0185118727160099 0
168 0.0166002793830319 0.0185141533658448 0
169 0.0165516576515327 0.0185683596905223 0
170 0.0166026362123836 0.0185158860662092 0
171 0.0165560230550254 0.0183562021741761 0
172 0.0166113124082061 0.018351702145696 0
173 0.0165672890064051 0.0183285858001638 0
174 0.016604050693843 0.0184325741808572 0
175 0.0165640243755198 0.0182299784613234 0
176 0.0166057021144688 0.0183180300484981 0
177 0.0165508046356384 0.0186951084852505 0
178 0.0165935180674385 0.0184788363728647 0
179 0.0165675029146658 0.0183958849576168 0
180 0.0165893028882626 0.0184240855899527 0
181 0.0165492090475113 0.0185323332784126 0
182 0.0165956159735774 0.0186074587393249 0
183 0.0165528561310127 0.0186410439047495 0
184 0.0166073952349921 0.0184129410413568 0
185 0.0165463099450159 0.0183934452819879 0
186 0.0166001891786512 0.0185733495393955 0
187 0.0165482056328235 0.0185109349700541 0
188 0.0165952621351168 0.0185722325184776 0
189 0.0165536456374398 0.0184577447695778 0
190 0.0165997360630289 0.0184457087339014 0
191 0.0165524916494821 0.0183168259212451 0
192 0.0165986206343906 0.0184703884548581 0
193 0.0165521507222869 0.0184217183574681 0
194 0.016599824522644 0.0185029386434078 0
195 0.0165434263709342 0.0186379566048659 0
196 0.0166010940140834 0.018342027581965 0
197 0.0165431388335659 0.0184254820843023 0
198 0.0165863373101985 0.0186074793376165 0
199 0.0165434326520903 0.0184241568111645 0
200 0.0166064767903884 0.0182465302360413 0
201 0.016561522556148 0.0184340305499022 0
202 0.0165987263671851 0.0186743681002925 0
203 0.0165499257972134 0.0184118549178763 0
204 0.0165839637310972 0.0184971573313619 0
205 0.0165457994266058 0.0183981095731159 0
206 0.0165795458101604 0.018496162154576 0
207 0.0165524665248577 0.0184611797965545 0
208 0.016595737060309 0.0186299800037023 0
209 0.0165466772181714 0.018466689839573 0
210 0.0165879578484734 0.0186946017323634 0
211 0.0165430683450362 0.0185245357776493 0
212 0.0165948067512992 0.018476103782546 0
213 0.0165396531408809 0.0182796915654308 0
214 0.0165652856665609 0.0185767679830018 0
215 0.0165523227561735 0.0183549425362727 0
216 0.0165783818770389 0.0183019200896801 0
217 0.0165503544861175 0.0185407187032971 0
218 0.016572293692008 0.0184576592342989 0
219 0.0165450638334354 0.0184396004676159 0
220 0.0165749698134617 0.0183728665412509 0
221 0.01655305398743 0.018711382183031 0
222 0.0165967214570518 0.0185027394684012 0
223 0.0165454616399886 0.0184419015411806 0
224 0.0165946692637712 0.0184852501222893 0
225 0.0165392806334286 0.0186597281263393 0
226 0.0165890797327443 0.0187948452388963 0
227 0.0165355112418597 0.0182642088071376 0
228 0.0165804930433963 0.0186078693086637 0
229 0.0165460245013662 0.0186437127800135 0
230 0.0165847202614547 0.0185804302894338 0
231 0.0165448417247764 0.0185832597615481 0
232 0.0165611542361331 0.0185230038233477 0
233 0.0165515342966058 0.0187595940557125 0
234 0.0165765880835414 0.0185726041605364 0
235 0.0165339756736686 0.018819251596084 0
236 0.0165878632821788 0.0186927800054842 0
237 0.0165440089481629 0.0187059691963698 0
238 0.0165963711081224 0.0186125063681518 0
239 0.0165516928957975 0.0187091867193515 0
240 0.0165934388550809 0.0187669087185543 0
241 0.0165544309564294 0.0187420275532877 0
242 0.0165877533619469 0.0185165169325316 0
243 0.0165399865655842 0.0184496782690904 0
244 0.0165907330726123 0.0184827699483242 0
245 0.016550628937744 0.0184833114390083 0
246 0.0166034288593887 0.0188096297500146 0
247 0.0165659505967252 0.0186457825592016 0
248 0.0166105647761531 0.0186986550572133 0
249 0.0165655829746165 0.018635516056428 0
250 0.0166172674676229 0.0185666859920442 0
251 0.0165796119367761 0.0185794000257273 0
252 0.0166424952076873 0.0185533461543306 0
253 0.0166246136286404 0.0186423201260233 0
254 0.0167334388455894 0.0186220849228963 0
255 0.0171297295465388 0.0196555486961812 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = DLAB_2018-06-11_15-23-57_730_586
IDDevice = SAM_85B5
IDDataType = SPECTRUM
IDDataTypeSub1 = BACK
IDDataTypeSub2 =
IDDataTypeSub3 =
DateTime = 2018-06-11 15:17:40
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType = SAM Calibration Station
MethodName = SAM_Calibration_Station
Mission =
MissionSub = 0
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack =
IDDataCal =
IntegrationTime = 8192
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $03 $05 Intensity counts
Unit3 = $03 $05 Intensity counts
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 12 0 0
1 0.0164817607719245 0.0184759992200316 0
2 0.0163219290778752 0.018442149942613 0
3 0.0163731972698131 0.0187318928446685 0
4 0.0164399246082603 0.0186864332877884 0
5 0.0164430241843214 0.0188479230215774 0
6 0.0163983356778795 0.0188454845678811 0
7 0.0163990512062458 0.0188404723750983 0
8 0.0163901000353671 0.0187262068433619 0
9 0.0164207307910173 0.0187526368954241 0
10 0.0164008709967505 0.018602897614217 0
11 0.0164082743860791 0.0187456469175185 0
12 0.0163908071888585 0.0186707166166917 0
13 0.0164252516531235 0.0185607140585195 0
14 0.0163975419840151 0.0187588039890341 0
15 0.0164170151382283 0.0188965777575295 0
16 0.0163836419600322 0.0187075898280626 0
17 0.0164195574361616 0.0187674584136427 0
18 0.0163940245365965 0.0186381709667486 0
19 0.0164118187028877 0.0186427120172502 0
20 0.016392199511795 0.0187927918685168 0
21 0.0164065571877907 0.0186624507666358 0
22 0.0163945228416475 0.0187624519813991 0
23 0.0164219489863484 0.0187392302005435 0
24 0.0163932453242865 0.0185522851677484 0
25 0.0164305632429927 0.0186472895511667 0
26 0.0163847816409121 0.018535703368402 0
27 0.0164318688510797 0.0186348291557698 0
28 0.0164176912348923 0.0186553691437886 0
29 0.0164202520273408 0.0187121064399131 0
30 0.0164088639423701 0.0186093935822463 0
31 0.0164306347783817 0.0187113848014579 0
32 0.0164189001829659 0.0186487433017847 0
33 0.0164341838060573 0.0187725126758178 0
34 0.0164138319878957 0.0187999361590481 0
35 0.0164304957205646 0.0187205484228188 0
36 0.016429661373662 0.0188728539369552 0
37 0.0164248637917341 0.0187682175828836 0
38 0.0164295341802509 0.0187626176405413 0
39 0.0164375396881828 0.0188624825225437 0
40 0.0164033339078497 0.0187837980957813 0
41 0.0164426914575244 0.0188658971257905 0
42 0.0164161851532397 0.0186604942780519 0
43 0.0164508810382254 0.0189255700275998 0
44 0.0164265781983975 0.0186329430155887 0
45 0.0164319475400075 0.0188553270600577 0
46 0.016422878946405 0.0187585744402754 0
47 0.0164658096015204 0.0188853157288465 0
48 0.016435585550728 0.0188095644639038 0
49 0.016451332060129 0.0189702224107457 0
50 0.0164379950720003 0.0190654765920908 0
51 0.0164365183024095 0.0188298321355244 0
52 0.0164243435026367 0.0189752702141345 0
53 0.0164365261538547 0.0190654219542494 0
54 0.0164254425304785 0.0188267308706973 0
55 0.0164527732365019 0.0190373731906741 0
56 0.0164500622197366 0.0189250398834323 0
57 0.0164541095524632 0.0189864086530676 0
58 0.0164375095037381 0.0190345625712336 0
59 0.0164747180256422 0.0188082665969675 0
60 0.0164484643634142 0.0190122781872102 0
61 0.0164537975883766 0.0188972889222771 0
62 0.0164461544682567 0.0185940174812091 0
63 0.0164698387886849 0.0187732280300485 0
64 0.0164431478882013 0.0188341576022108 0
65 0.0164654240083262 0.0188008229329601 0
66 0.0164472887403633 0.0188143481552986 0
67 0.0164750846008916 0.0188958311567378 0
68 0.016451503570586 0.0186248391588775 0
69 0.0164619681511328 0.0188025980518404 0
70 0.0164507452954629 0.0189280180821948 0
71 0.0164756266995587 0.0188994067059584 0
72 0.0164519861727467 0.0187979548826894 0
73 0.0164677262265151 0.0188527726973303 0
74 0.0164529956941139 0.0189566842708345 0
75 0.0164743584294553 0.0188313071826812 0
76 0.0164623034950781 0.0188952770976046 0
77 0.0164737165301967 0.0189118414407716 0
78 0.0164694078315855 0.0185289364804688 0
79 0.0164841373171273 0.0186616668096203 0
80 0.0164653304888909 0.0188390641851084 0
81 0.0164847460658397 0.0188772853626504 0
82 0.0164548329322745 0.0188133788136582 0
83 0.0164595881163988 0.019095000402823 0
84 0.016470273409792 0.0189106139222383 0
85 0.0164793578807614 0.0190673035558238 0
86 0.0164794932745707 0.0189999768176074 0
87 0.0164779744561293 0.0188888352437313 0
88 0.0164553809631447 0.0191460724704944 0
89 0.0164876681992408 0.0188107766209993 0
90 0.0164698851994495 0.0192259407753418 0
91 0.0164899871671793 0.0189064331672789 0
92 0.0164501525985938 0.0190127816234232 0
93 0.0164753983097437 0.0187168141969277 0
94 0.0164809215396783 0.0190825361670666 0
95 0.0164902986078362 0.0190127334443682 0
96 0.0164763052388946 0.0191085322585096 0
97 0.0164924607213486 0.0188582193744177 0
98 0.0164652690731423 0.0188903102908881 0
99 0.0164867010756773 0.0189330562846849 0
100 0.0164660367699995 0.0190078099289766 0
101 0.0164911903575265 0.0189027331554994 0
102 0.0164677717648968 0.0189810824236179 0
103 0.0165022066329511 0.0189551510946003 0
104 0.0164662370690886 0.0189044651576166 0
105 0.016489524978776 0.0187674423539577 0
106 0.0164685029961533 0.0189472727717265 0
107 0.0164921269476923 0.0189907035714401 0
108 0.0164558499561338 0.019064578646224 0
109 0.0164738716398572 0.0188920054604669 0
110 0.0164762743565437 0.0190449437611056 0
111 0.0164791764251406 0.018889919447032 0
112 0.0164705429760749 0.0187988736014097 0
113 0.0164789927013245 0.0192020416947266 0
114 0.016473611669785 0.0188233049209339 0
115 0.0164614993326202 0.0187371501222097 0
116 0.0164598238342293 0.0189721827396891 0
117 0.0164727508024456 0.0188261000043749 0
118 0.0164582863467961 0.0186942695412699 0
119 0.0164685862214717 0.0189034198815958 0
120 0.0164525792185689 0.0187198665844525 0
121 0.0164773030703324 0.0186137942850658 0
122 0.0164670838038268 0.0189533499660128 0
123 0.0164831073820027 0.0187808211189513 0
124 0.0164667688736388 0.0188594921044556 0
125 0.0164761180255473 0.0188539249797306 0
126 0.0164464892887724 0.0188040633235368 0
127 0.0164720077067831 0.0187732121449252 0
128 0.0164452072350208 0.018962250173627 0
129 0.0164870899839261 0.0190127418233343 0
130 0.016459772189168 0.0191750319229475 0
131 0.0164701266750064 0.0189599365316131 0
132 0.0164611727125027 0.0190203120446422 0
133 0.0164680781457335 0.0190216017071741 0
134 0.0164568425532749 0.0186128352425711 0
135 0.0164788192716254 0.019228758377254 0
136 0.0164516724638946 0.0189206767113985 0
137 0.016478949431138 0.0188962342199195 0
138 0.0164561298165336 0.0191006190232771 0
139 0.0164755542917869 0.0190500058785614 0
140 0.0164556124935377 0.0187485043195198 0
141 0.0164507196474088 0.0190170367417068 0
142 0.0164471687004911 0.0188547895842948 0
143 0.0164601098013086 0.0188974739577785 0
144 0.0164608579567913 0.0189445812034293 0
145 0.0164729301643477 0.0189157249169963 0
146 0.0164409632672129 0.0191215468876016 0
147 0.0164714560119053 0.0187773754437052 0
148 0.016453806137728 0.0190317306552542 0
149 0.016458409701723 0.0190325910703354 0
150 0.016446300156183 0.0190408668704134 0
151 0.0164759950195736 0.0189401984804746 0
152 0.0164447300416335 0.0190495591749313 0
153 0.0164623949207948 0.0187950388279255 0
154 0.0164359400870948 0.0189297027780659 0
155 0.0164562215912033 0.0189593482583683 0
156 0.0164493753055259 0.0190509148218212 0
157 0.0164598233107996 0.0188672314761416 0
158 0.0164437951962332 0.0189148159737365 0
159 0.0164648208428636 0.0191385526975449 0
160 0.0164373709693507 0.0190494453606418 0
161 0.0164554146371204 0.0190579196374793 0
162 0.0164451486108972 0.019121285044911 0
163 0.0164645650602289 0.019044043895059 0
164 0.0164504392635794 0.0186976181601587 0
165 0.0164504671798287 0.0189873739797868 0
166 0.0164356687760464 0.0191378319318987 0
167 0.0164534369453303 0.0190663267080262 0
168 0.0164388145883954 0.0190936695437077 0
169 0.0164527186253391 0.0191095358142617 0
170 0.0164332435518838 0.0189574708462769 0
171 0.0164442846029797 0.0187806189763942 0
172 0.0164340580084587 0.0189485074472935 0
173 0.0164485673045837 0.0187745148995917 0
174 0.0164290273258486 0.018830215822347 0
175 0.016450102349345 0.0188787988134019 0
176 0.0164311430285965 0.0189920377472294 0
177 0.0164412099770665 0.0188564391932454 0
178 0.0164335047432918 0.0190900863137682 0
179 0.0164442961184326 0.0189570108759505 0
180 0.0164228450979527 0.0190537807773504 0
181 0.016437492579512 0.0188639551258354 0
182 0.0164196870722445 0.0189272838752905 0
183 0.016438840061973 0.0189407244351591 0
184 0.0164283787964808 0.0191445909645512 0
185 0.0164416083070495 0.0190009035661702 0
186 0.016412027202375 0.0190382999392369 0
187 0.016431280341648 0.0191088417565699 0
188 0.0164384511537241 0.0189974830278224 0
189 0.0164345854510949 0.0189503359820826 0
190 0.0164129589071972 0.0189001894410414 0
191 0.0164313105260926 0.0186533777428459 0
192 0.0164068407121982 0.0188463448084005 0
193 0.0164422922551586 0.0188216286040289 0
194 0.0164141230147952 0.0190486301570651 0
195 0.0164350718917399 0.0189039538661228 0
196 0.0163981727167739 0.018976088908947 0
197 0.0164302013786105 0.0186541344682217 0
198 0.0164117635682952 0.0187053388537327 0
199 0.0164348827591505 0.0188468777455567 0
200 0.0164084963202615 0.0189798348304782 0
201 0.0164184283983518 0.0190289182901957 0
202 0.0164093013551022 0.0189938748355464 0
203 0.0164248964188505 0.0188985777120001 0
204 0.0163861197016389 0.0189140892729893 0
205 0.0164414938504271 0.0189945299659582 0
206 0.0163912936295035 0.0190288961208479 0
207 0.0164153211453222 0.0188169428418004 0
208 0.0164085420331198 0.0190174979339657 0
209 0.0164144138672182 0.0187582286333621 0
210 0.0163877472189763 0.0188360660863014 0
211 0.016438808830669 0.0188666440757058 0
212 0.0163928122734684 0.018693495185153 0
213 0.016421485227656 0.0187786836097873 0
214 0.0164041312657219 0.0186433495169208 0
215 0.0164178255818423 0.0188323175463432 0
216 0.0163971898903201 0.018976409578962 0
217 0.0164201696744052 0.0187435457172076 0
218 0.0163995320636409 0.018987845122068 0
219 0.0164209146893099 0.0186761889543627 0
220 0.0164032430055628 0.0190061624147675 0
221 0.0164164507065617 0.0187835201934057 0
222 0.0163974777766416 0.0188749633416704 0
223 0.0164176661102679 0.0189686084124011 0
224 0.0163930417101427 0.0188226435062976 0
225 0.0164141233637484 0.0187423426373254 0
226 0.01640118889304 0.018996327428748 0
227 0.0164288055661428 0.0186609085131884 0
228 0.0164032700494293 0.0187348848338127 0
229 0.0164078024269885 0.0187956862776184 0
230 0.0163929630212149 0.0190963977699816 0
231 0.0164272534226787 0.0185138758125928 0
232 0.0163858681064416 0.0187250730645117 0
233 0.0164185958958479 0.0188906307863414 0
234 0.0164030676566215 0.0188630606712045 0
235 0.0164018004333774 0.0188464739841278 0
236 0.0163995488133905 0.0189781192371696 0
237 0.0164085041717066 0.0187965507076208 0
238 0.0163987202242144 0.0186990834318551 0
239 0.0164206611748704 0.0186847039040981 0
240 0.0164022528510935 0.0187928330651002 0
241 0.0164241117977671 0.0187593187717638 0
242 0.016396216660077 0.0188783466983562 0
243 0.0164233505565425 0.0187352552539389 0
244 0.0164139434784166 0.0188740873905896 0
245 0.0164194745597963 0.0187454707846687 0
246 0.0163983088084895 0.0189869951806945 0
247 0.016435900480916 0.0189396802065091 0
248 0.0164233186273323 0.0187842685398153 0
249 0.0164390513530853 0.0186674191444085 0
250 0.0164271529241811 0.0189300391586424 0
251 0.0164633723384753 0.0190247289817084 0
252 0.016452145295368 0.01897844723878 0
253 0.0165066871909724 0.0188266460336656 0
254 0.0165379624630295 0.019144633383067 0
255 0.0170330815720343 0.0204797029287844 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = AquaDLAB_2016-12-07_12-02-43_591_545
IDDevice = SAM_852F
IDDataType = SPECTRUM
IDDataTypeSub1 = CAL
IDDataTypeSub2 = Aqua
IDDataTypeSub3 =
DateTime = 2016-12-07 12:01:43
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType =
MethodName =
Mission = No Mission
MissionSub = 1
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack = DLAB_2016-11-29_14-47-59_729_812
IDDataCal =
IntegrationTime = 256
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $04 $09 1/Intensity (m^2 nm)/mW
Unit3 = $04 $09 1/Intensity (m^2 nm)/mW
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 7 0 0
1 +NAN 0 0
2 +NAN 0 0
3 +NAN 0 0
4 +NAN 0 0
5 0.0757791569140749 0 0
6 0.0831133762408903 0 0
7 0.0873256015093429 0 0
8 0.088798490578607 0 0
9 0.0893180250587088 0 0
10 0.0912184306930603 0 0
11 0.0934315009445713 0 0
12 0.0978927038642625 0 0
13 0.10316713605413 0 0
14 0.111042352696646 0 0
15 0.119482024262908 0 0
16 0.129446496806651 0 0
17 0.140324929207819 0 0
18 0.149929004563169 0 0
19 0.157951375798488 0 0
20 0.163167079267684 0 0
21 0.163684554455683 0 0
22 0.161710955408623 0 0
23 0.158158176144384 0 0
24 0.153120816765498 0 0
25 0.149159625705894 0 0
26 0.146361065436421 0 0
27 0.144318454214309 0 0
28 0.144129633718655 0 0
29 0.144738939517372 0 0
30 0.146583353055999 0 0
31 0.149927549178646 0 0
32 0.154781330782628 0 0
33 0.161281049713208 0 0
34 0.169324782015295 0 0
35 0.178566729488516 0 0
36 0.188750791302883 0 0
37 0.199826540979236 0 0
38 0.211193704798505 0 0
39 0.222305048038871 0 0
40 0.232787040612667 0 0
41 0.242185638548782 0 0
42 0.249199329450493 0 0
43 0.253905646769863 0 0
44 0.255480704613068 0 0
45 0.254086308176615 0 0
46 0.250712203525897 0 0
47 0.245637528877396 0 0
48 0.239859851966525 0 0
49 0.233843628655063 0 0
50 0.228059104546805 0 0
51 0.222661940533832 0 0
52 0.218199567518201 0 0
53 0.214240155949967 0 0
54 0.21061280671042 0 0
55 0.206823867975479 0 0
56 0.202504211638902 0 0
57 0.198378089686984 0 0
58 0.195008429198418 0 0
59 0.192596053511712 0 0
60 0.1913409806608 0 0
61 0.191204589224151 0 0
62 0.191982450755957 0 0
63 0.193875999271111 0 0
64 0.196568015329539 0 0
65 0.200197325412529 0 0
66 0.204781342874412 0 0
67 0.210052890237844 0 0
68 0.215505542064364 0 0
69 0.22102191587617 0 0
70 0.225647984382987 0 0
71 0.229501509141454 0 0
72 0.232213608637945 0 0
73 0.233859853462842 0 0
74 0.234864695710533 0 0
75 0.235347731196379 0 0
76 0.235169523165461 0 0
77 0.2348286160222 0 0
78 0.23395735104209 0 0
79 0.232593294508701 0 0
80 0.230910869907075 0 0
81 0.228844605598996 0 0
82 0.226021135136259 0 0
83 0.222713212172475 0 0
84 0.218813740820075 0 0
85 0.214437631947854 0 0
86 0.20945948892298 0 0
87 0.203847193841702 0 0
88 0.197707092492944 0 0
89 0.191556734852924 0 0
90 0.18600061167507 0 0
91 0.181873354953207 0 0
92 0.178782316057322 0 0
93 0.176167924779435 0 0
94 0.174141863608666 0 0
95 0.172744990342331 0 0
96 0.171801376758966 0 0
97 0.170954015345458 0 0
98 0.169960140045412 0 0
99 0.168049955384139 0 0
100 0.165224777136175 0 0
101 0.161531979240228 0 0
102 0.157405412608478 0 0
103 0.153570487964493 0 0
104 0.150141271545146 0 0
105 0.14725256652001 0 0
106 0.144660342475923 0 0
107 0.142269456600007 0 0
108 0.139762314536934 0 0
109 0.136963054606891 0 0
110 0.133984343960448 0 0
111 0.131197679174342 0 0
112 0.129003116254732 0 0
113 0.127069994503092 0 0
114 0.125436648144931 0 0
115 0.12397269238396 0 0
116 0.122419985358787 0 0
117 0.120693422850158 0 0
118 0.118931546980571 0 0
119 0.117166660339047 0 0
120 0.115631793601506 0 0
121 0.114393230429202 0 0
122 0.113425752529033 0 0
123 0.112707849783804 0 0
124 0.112359222280159 0 0
125 0.11219082672674 0 0
126 0.112343608199868 0 0
127 0.112664705152637 0 0
128 0.112877954686814 0 0
129 0.112998494144185 0 0
130 0.112887922565457 0 0
131 0.11253063359053 0 0
132 0.111841159102354 0 0
133 0.110997003525569 0 0
134 0.109948198155768 0 0
135 0.108874849717231 0 0
136 0.107795318097265 0 0
137 0.106637360724801 0 0
138 0.105678694194695 0 0
139 0.104756017092462 0 0
140 0.103825430274706 0 0
141 0.102939456306441 0 0
142 0.102001186921616 0 0
143 0.100737446991222 0 0
144 0.0991453606719906 0 0
145 0.0971498679860747 0 0
146 0.0948117209915638 0 0
147 0.0924075366042346 0 0
148 0.0899484551808979 0 0
149 0.0873520434504222 0 0
150 0.0848497958878303 0 0
151 0.0823900490277647 0 0
152 0.0799786063537234 0 0
153 0.0776610830064481 0 0
154 0.0752837851752474 0 0
155 0.0729604964467151 0 0
156 0.0707262742573907 0 0
157 0.0684046065784823 0 0
158 0.0660274200992436 0 0
159 0.0636252573638505 0 0
160 0.0612270512870042 0 0
161 0.0587905905539405 0 0
162 0.0563195707029216 0 0
163 0.0538582650571118 0 0
164 0.0514203967394221 0 0
165 0.0490721477077881 0 0
166 0.0468328465329872 0 0
167 0.044723244642693 0 0
168 0.0427398639178554 0 0
169 0.0408841538190041 0 0
170 0.0391762093418711 0 0
171 0.0375882143782858 0 0
172 0.0361234008364646 0 0
173 0.0347811387811729 0 0
174 0.0335210387242261 0 0
175 0.0323747022105674 0 0
176 0.0312594345687719 0 0
177 0.030174948252246 0 0
178 0.0291339080526091 0 0
179 0.0281312995576928 0 0
180 0.027138393963344 0 0
181 0.0260756668210364 0 0
182 0.0250906058668046 0 0
183 0.0240551778532538 0 0
184 0.0230712653382013 0 0
185 0.0221310389230639 0 0
186 0.0211757703478467 0 0
187 0.0202209094313405 0 0
188 0.0192572613107586 0 0
189 0.0182920464007378 0 0
190 0.0172950661682144 0 0
191 0.0163207919630062 0 0
192 0.0153269728531649 0 0
193 0.0143853788804443 0 0
194 0.0135213976548868 0 0
195 0.0127456574145877 0 0
196 0.0120278700767597 0 0
197 +NAN 0 0
198 +NAN 0 0
199 +NAN 0 0
200 +NAN 0 0
201 +NAN 0 0
202 +NAN 0 0
203 +NAN 0 0
204 +NAN 0 0
205 +NAN 0 0
206 +NAN 0 0
207 +NAN 0 0
208 +NAN 0 0
209 +NAN 0 0
210 +NAN 0 0
211 +NAN 0 0
212 +NAN 0 0
213 +NAN 0 0
214 +NAN 0 0
215 +NAN 0 0
216 +NAN 0 0
217 +NAN 0 0
218 +NAN 0 0
219 +NAN 0 0
220 +NAN 0 0
221 +NAN 0 0
222 +NAN 0 0
223 +NAN 0 0
224 +NAN 0 0
225 +NAN 0 0
226 +NAN 0 0
227 +NAN 0 0
228 +NAN 0 0
229 +NAN 0 0
230 +NAN 0 0
231 +NAN 0 0
232 +NAN 0 0
233 +NAN 0 0
234 +NAN 0 0
235 +NAN 0 0
236 +NAN 0 0
237 +NAN 0 0
238 +NAN 0 0
239 +NAN 0 0
240 +NAN 0 0
241 +NAN 0 0
242 +NAN 0 0
243 +NAN 0 0
244 +NAN 0 0
245 +NAN 0 0
246 +NAN 0 0
247 +NAN 0 0
248 +NAN 0 0
249 +NAN 0 0
250 +NAN 0 0
251 +NAN 0 0
252 +NAN 0 0
253 +NAN 0 0
254 +NAN 0 0
255 +NAN 0 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = DLAB_2018-05-24_13-29-21_895_177
IDDevice = SAM_859F
IDDataType = SPECTRUM
IDDataTypeSub1 = CAL
IDDataTypeSub2 = Aqua
IDDataTypeSub3 =
DateTime = 2018-05-24 13:29:21
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType =
MethodName =
Mission = No Mission
MissionSub = 1
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack = DLAB_2018-05-04_11-56-28_529_586
IDDataCal =
IntegrationTime = 64
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 5 0 0
1 +NAN 0 0
2 +NAN 0 0
3 +NAN 0 0
4 +NAN 0 0
5 0.308009257704273 0 0
6 0.348985396550329 0 0
7 0.39611199753429 0 0
8 0.43986968240828 0 0
9 0.477232425339663 0 0
10 0.536318311921194 0 0
11 0.599255756896796 0 0
12 0.660195405447511 0 0
13 0.721940911560072 0 0
14 0.778381764258939 0 0
15 0.806518994572799 0 0
16 0.812862184246214 0 0
17 0.800779958731845 0 0
18 0.768238986615194 0 0
19 0.729324871828135 0 0
20 0.701235591002145 0 0
21 0.674572715683613 0 0
22 0.663056816542841 0 0
23 0.662699926877705 0 0
24 0.669382520005193 0 0
25 0.684772623825422 0 0
26 0.710275115045633 0 0
27 0.74145572495904 0 0
28 0.783988164111933 0 0
29 0.834525694448954 0 0
30 0.886966821712609 0 0
31 0.949247521262016 0 0
32 1.01565043430167 0 0
33 1.07897249264832 0 0
34 1.14377888540009 0 0
35 1.19997013476615 0 0
36 1.24429313837597 0 0
37 1.2763795229717 0 0
38 1.29391228294411 0 0
39 1.29587029284695 0 0
40 1.29012478792631 0 0
41 1.27276079346714 0 0
42 1.2450982196578 0 0
43 1.21375364521069 0 0
44 1.17906121512383 0 0
45 1.14422362714978 0 0
46 1.11315509839511 0 0
47 1.08731507394343 0 0
48 1.06746197368796 0 0
49 1.05494171300318 0 0
50 1.04869254224893 0 0
51 1.04747349722362 0 0
52 1.04822757370139 0 0
53 1.04856210675178 0 0
54 1.04679141002185 0 0
55 1.04513065036628 0 0
56 1.04725995618916 0 0
57 1.0535067386541 0 0
58 1.06471361999517 0 0
59 1.08034380002613 0 0
60 1.10113009018595 0 0
61 1.12455239246124 0 0
62 1.15132895471663 0 0
63 1.1795169782144 0 0
64 1.20798673857183 0 0
65 1.23708055274173 0 0
66 1.26532262623006 0 0
67 1.29064822236823 0 0
68 1.31210337451311 0 0
69 1.32736540301797 0 0
70 1.33430139824988 0 0
71 1.33335932325033 0 0
72 1.32335113190924 0 0
73 1.30558590461423 0 0
74 1.28227321775146 0 0
75 1.25498704776805 0 0
76 1.22525023251367 0 0
77 1.19392661641762 0 0
78 1.16317225749886 0 0
79 1.13207700011805 0 0
80 1.10111674556499 0 0
81 1.07075040366943 0 0
82 1.03893893539784 0 0
83 1.0081446443131 0 0
84 0.97774721715577 0 0
85 0.947774052897518 0 0
86 0.919152947182789 0 0
87 0.894963764571428 0 0
88 0.87836395884067 0 0
89 0.867156996532193 0 0
90 0.858153034494107 0 0
91 0.851906778357719 0 0
92 0.847981268808314 0 0
93 0.844919850173329 0 0
94 0.841944554421527 0 0
95 0.83721825473176 0 0
96 0.828398944802337 0 0
97 0.815351600734525 0 0
98 0.799543228463232 0 0
99 0.782489183888857 0 0
100 0.765962841341892 0 0
101 0.751320667184625 0 0
102 0.737812095757199 0 0
103 0.725090001717255 0 0
104 0.712873061263532 0 0
105 0.698758948036327 0 0
106 0.683766639638848 0 0
107 0.672493396285743 0 0
108 0.664610527729123 0 0
109 0.658092136872804 0 0
110 0.652228157780532 0 0
111 0.645754399378545 0 0
112 0.639368207275896 0 0
113 0.633138158063289 0 0
114 0.628392493836991 0 0
115 0.626088937445665 0 0
116 0.625599854321674 0 0
117 0.627001238574581 0 0
118 0.630202545823175 0 0
119 0.632703647598273 0 0
120 0.633210363154327 0 0
121 0.63123164301687 0 0
122 0.626485370072314 0 0
123 0.618891745640103 0 0
124 0.609361448964366 0 0
125 0.598872648152344 0 0
126 0.58927447780469 0 0
127 0.580815044730471 0 0
128 0.573341941514821 0 0
129 0.567484926926375 0 0
130 0.562800136636572 0 0
131 0.558223116403165 0 0
132 0.553158922485434 0 0
133 0.547084299354418 0 0
134 0.539847820827437 0 0
135 0.531432360197925 0 0
136 0.521203701656628 0 0
137 0.509855867118928 0 0
138 0.498554054755033 0 0
139 0.487573187562371 0 0
140 0.476425489189536 0 0
141 0.466415695619565 0 0
142 0.456641365086098 0 0
143 0.446540473657011 0 0
144 0.436135290849149 0 0
145 0.424928637592468 0 0
146 0.412541586513936 0 0
147 0.399056656796071 0 0
148 0.384717912438278 0 0
149 0.369579305401316 0 0
150 0.353784632326527 0 0
151 0.337380068381195 0 0
152 0.321095903578543 0 0
153 0.305495669126019 0 0
154 0.290421643260465 0 0
155 0.276140762920409 0 0
156 0.262854333224098 0 0
157 0.250936131068681 0 0
158 0.240006392992584 0 0
159 0.229965608856624 0 0
160 0.220954309792884 0 0
161 0.212487857424938 0 0
162 0.204661532835082 0 0
163 0.197216204057537 0 0
164 0.189605277840326 0 0
165 0.182475141050851 0 0
166 0.175121099828465 0 0
167 0.167843462384963 0 0
168 0.160673785509465 0 0
169 0.153434661065448 0 0
170 0.146286002352245 0 0
171 0.139523451810534 0 0
172 0.133107862589632 0 0
173 0.126994143420237 0 0
174 0.121367561058691 0 0
175 0.116037239577153 0 0
176 0.111252442566666 0 0
177 0.106669531239736 0 0
178 0.102319284531729 0 0
179 0.098450973344807 0 0
180 0.0947593486764351 0 0
181 0.0911919684356708 0 0
182 0.0879361030612687 0 0
183 0.0844573547823388 0 0
184 0.0813058869947144 0 0
185 0.0782782092672921 0 0
186 0.0751117681314502 0 0
187 0.0722888539254525 0 0
188 0.0693076153913147 0 0
189 0.0660732713239472 0 0
190 0.0627758734115707 0 0
191 0.0592551057473219 0 0
192 0.0560010918166818 0 0
193 0.0532135140872552 0 0
194 0.0505779890461858 0 0
195 0.0480767985810033 0 0
196 +NAN 0 0
197 +NAN 0 0
198 +NAN 0 0
199 +NAN 0 0
200 +NAN 0 0
201 +NAN 0 0
202 +NAN 0 0
203 +NAN 0 0
204 +NAN 0 0
205 +NAN 0 0
206 +NAN 0 0
207 +NAN 0 0
208 +NAN 0 0
209 +NAN 0 0
210 +NAN 0 0
211 +NAN 0 0
212 +NAN 0 0
213 +NAN 0 0
214 +NAN 0 0
215 +NAN 0 0
216 +NAN 0 0
217 +NAN 0 0
218 +NAN 0 0
219 +NAN 0 0
220 +NAN 0 0
221 +NAN 0 0
222 +NAN 0 0
223 +NAN 0 0
224 +NAN 0 0
225 +NAN 0 0
226 +NAN 0 0
227 +NAN 0 0
228 +NAN 0 0
229 +NAN 0 0
230 +NAN 0 0
231 +NAN 0 0
232 +NAN 0 0
233 +NAN 0 0
234 +NAN 0 0
235 +NAN 0 0
236 +NAN 0 0
237 +NAN 0 0
238 +NAN 0 0
239 +NAN 0 0
240 +NAN 0 0
241 +NAN 0 0
242 +NAN 0 0
243 +NAN 0 0
244 +NAN 0 0
245 +NAN 0 0
246 +NAN 0 0
247 +NAN 0 0
248 +NAN 0 0
249 +NAN 0 0
250 +NAN 0 0
251 +NAN 0 0
252 +NAN 0 0
253 +NAN 0 0
254 +NAN 0 0
255 +NAN 0 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = DLAB_2018-06-13_11-58-21_312_112
IDDevice = SAM_85B5
IDDataType = SPECTRUM
IDDataTypeSub1 = CAL
IDDataTypeSub2 = Aqua
IDDataTypeSub3 =
DateTime = 2018-06-13 11:58:21
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType =
MethodName =
Mission = No Mission
MissionSub = 1
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack = DLAB_2018-06-11_15-23-57_730_586
IDDataCal =
IntegrationTime = 64
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 5 0 0
1 +NAN 0 0
2 +NAN 0 0
3 +NAN 0 0
4 0.213368170535889 0 0
5 0.269708461889978 0 0
6 0.323681305990691 0 0
7 0.361686162925288 0 0
8 0.399727885563257 0 0
9 0.426595980991839 0 0
10 0.455395402116462 0 0
11 0.489873358069589 0 0
12 0.521706723967902 0 0
13 0.569424753191682 0 0
14 0.613678281579101 0 0
15 0.668568867138568 0 0
16 0.729648774358889 0 0
17 0.791588424733509 0 0
18 0.846278067578305 0 0
19 0.889326585618736 0 0
20 0.912464300651466 0 0
21 0.912041091772509 0 0
22 0.896201537846271 0 0
23 0.875528861051999 0 0
24 0.850358796139941 0 0
25 0.830813460904554 0 0
26 0.816907084374381 0 0
27 0.809230927534884 0 0
28 0.809079793968319 0 0
29 0.815347896421343 0 0
30 0.825892411944005 0 0
31 0.84503183706585 0 0
32 0.873670658313288 0 0
33 0.907826486501149 0 0
34 0.950360287322641 0 0
35 1.00114116281862 0 0
36 1.05504053595122 0 0
37 1.11205216981838 0 0
38 1.17221784963607 0 0
39 1.22975299376536 0 0
40 1.2826684244193 0 0
41 1.32878263374036 0 0
42 1.35908629098684 0 0
43 1.37850707003827 0 0
44 1.38104038663283 0 0
45 1.36883708486346 0 0
46 1.34742818899357 0 0
47 1.31902470629713 0 0
48 1.28498732451399 0 0
49 1.25220172471482 0 0
50 1.22068349763187 0 0
51 1.1925789464318 0 0
52 1.16935370804616 0 0
53 1.14646179324841 0 0
54 1.12109994325093 0 0
55 1.09422415317439 0 0
56 1.06828767805555 0 0
57 1.04445396328421 0 0
58 1.02753751191562 0 0
59 1.01678817181089 0 0
60 1.01144651696064 0 0
61 1.01173798764201 0 0
62 1.0164772818471 0 0
63 1.02628160092791 0 0
64 1.04098599390468 0 0
65 1.05940120890642 0 0
66 1.08286747681355 0 0
67 1.10823034660724 0 0
68 1.13310605067389 0 0
69 1.1547273364889 0 0
70 1.17166412724341 0 0
71 1.183983471337 0 0
72 1.19136561427902 0 0
73 1.19606418873222 0 0
74 1.19672161290192 0 0
75 1.19671286046196 0 0
76 1.19421014531398 0 0
77 1.18916801665381 0 0
78 1.18305692745573 0 0
79 1.17490571141989 0 0
80 1.16334076115534 0 0
81 1.14948755782896 0 0
82 1.13252619591223 0 0
83 1.11230773028189 0 0
84 1.09067725991727 0 0
85 1.06664792919033 0 0
86 1.03995448729021 0 0
87 1.01197155529512 0 0
88 0.982502268789757 0 0
89 0.950934147643801 0 0
90 0.921876981717461 0 0
91 0.899503833526815 0 0
92 0.884246887000271 0 0
93 0.871798641947689 0 0
94 0.860748919530635 0 0
95 0.851106201938694 0 0
96 0.841814387319495 0 0
97 0.830400473286421 0 0
98 0.814782119978127 0 0
99 0.796371468702983 0 0
100 0.774800085650998 0 0
101 0.751694156127581 0 0
102 0.729723545880894 0 0
103 0.70902256138046 0 0
104 0.69215621992056 0 0
105 0.678393548274155 0 0
106 0.667293944696908 0 0
107 0.65649797079901 0 0
108 0.6446860376968 0 0
109 0.629464240966416 0 0
110 0.615183928901848 0 0
111 0.602591773736883 0 0
112 0.590820336228123 0 0
113 0.580150915843665 0 0
114 0.571621329022329 0 0
115 0.563766808252911 0 0
116 0.556883367165026 0 0
117 0.549917569359012 0 0
118 0.542933812612894 0 0
119 0.535932724580549 0 0
120 0.528043359268253 0 0
121 0.520231538772767 0 0
122 0.513331529426342 0 0
123 0.507286194391832 0 0
124 0.502222099629004 0 0
125 0.498298138845332 0 0
126 0.496514280280116 0 0
127 0.495442722847893 0 0
128 0.494658216836534 0 0
129 0.494062920786886 0 0
130 0.492582820232232 0 0
131 0.490091285479962 0 0
132 0.485745623273317 0 0
133 0.480328740541132 0 0
134 0.473945880321646 0 0
135 0.466683779528739 0 0
136 0.458932848241851 0 0
137 0.451064706693729 0 0
138 0.443865689279125 0 0
139 0.437073402888952 0 0
140 0.430871678484112 0 0
141 0.424656716266769 0 0
142 0.418021794802865 0 0
143 0.410821018781503 0 0
144 0.402243888142941 0 0
145 0.392571430814996 0 0
146 0.381881477324506 0 0
147 0.36994612437875 0 0
148 0.35763078427341 0 0
149 0.344551257226534 0 0
150 0.332004497779552 0 0
151 0.319784344441634 0 0
152 0.307705241065949 0 0
153 0.296024637721301 0 0
154 0.285201831804588 0 0
155 0.27477331903475 0 0
156 0.2649271655017 0 0
157 0.255311286750044 0 0
158 0.245955888598912 0 0
159 0.237139128199368 0 0
160 0.228125758026999 0 0
161 0.218973368669899 0 0
162 0.210024147431339 0 0
163 0.201001563461602 0 0
164 0.192143502318544 0 0
165 0.183367668918973 0 0
166 0.17479218252589 0 0
167 0.166354193257315 0 0
168 0.158270839921817 0 0
169 0.15057933833141 0 0
170 0.14334907901495 0 0
171 0.136492914420144 0 0
172 0.130248971747009 0 0
173 0.124351585245978 0 0
174 0.119145124817533 0 0
175 0.114204124468303 0 0
176 0.10955932586493 0 0
177 0.105201972954921 0 0
178 0.100976345428583 0 0
179 0.0970301944120184 0 0
180 0.0930794320815323 0 0
181 0.0893096045786908 0 0
182 0.0855242301014967 0 0
183 0.0818515687486457 0 0
184 0.0783728272346642 0 0
185 0.0747373637294556 0 0
186 0.0714485344156491 0 0
187 0.0680790457826121 0 0
188 0.0647379875159452 0 0
189 0.0614749247480892 0 0
190 0.0581599202112611 0 0
191 0.0547153945113677 0 0
192 0.0515011739034831 0 0
193 0.0485390098580295 0 0
194 0.045947792932824 0 0
195 0.0435560478479539 0 0
196 0.0413612446534424 0 0
197 +NAN 0 0
198 +NAN 0 0
199 +NAN 0 0
200 +NAN 0 0
201 +NAN 0 0
202 +NAN 0 0
203 +NAN 0 0
204 +NAN 0 0
205 +NAN 0 0
206 +NAN 0 0
207 +NAN 0 0
208 +NAN 0 0
209 +NAN 0 0
210 +NAN 0 0
211 +NAN 0 0
212 +NAN 0 0
213 +NAN 0 0
214 +NAN 0 0
215 +NAN 0 0
216 +NAN 0 0
217 +NAN 0 0
218 +NAN 0 0
219 +NAN 0 0
220 +NAN 0 0
221 +NAN 0 0
222 +NAN 0 0
223 +NAN 0 0
224 +NAN 0 0
225 +NAN 0 0
226 +NAN 0 0
227 +NAN 0 0
228 +NAN 0 0
229 +NAN 0 0
230 +NAN 0 0
231 +NAN 0 0
232 +NAN 0 0
233 +NAN 0 0
234 +NAN 0 0
235 +NAN 0 0
236 +NAN 0 0
237 +NAN 0 0
238 +NAN 0 0
239 +NAN 0 0
240 +NAN 0 0
241 +NAN 0 0
242 +NAN 0 0
243 +NAN 0 0
244 +NAN 0 0
245 +NAN 0 0
246 +NAN 0 0
247 +NAN 0 0
248 +NAN 0 0
249 +NAN 0 0
250 +NAN 0 0
251 +NAN 0 0
252 +NAN 0 0
253 +NAN 0 0
254 +NAN 0 0
255 +NAN 0 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = AirDLAB_2016-12-07_12-00-24_364_510
IDDevice = SAM_852F
IDDataType = SPECTRUM
IDDataTypeSub1 = CAL
IDDataTypeSub2 = Air
IDDataTypeSub3 =
DateTime = 2016-12-07 11:59:26
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType =
MethodName =
Mission = No Mission
MissionSub = 1
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack = DLAB_2016-11-29_14-47-59_729_812
IDDataCal =
IntegrationTime = 128
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $04 $09 1/Intensity (m^2 nm)/mW
Unit3 = $04 $09 1/Intensity (m^2 nm)/mW
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 6 0 0
1 +NAN 0 0
2 +NAN 0 0
3 +NAN 0 0
4 +NAN 0 0
5 0.099081925071204 0 0
6 0.107353085872454 0 0
7 0.113070264290883 0 0
8 0.114376499819276 0 0
9 0.116544285861757 0 0
10 0.1185169696214 0 0
11 0.121561138979849 0 0
12 0.126964155564462 0 0
13 0.134364254054539 0 0
14 0.144053858633949 0 0
15 0.154882735476408 0 0
16 0.16719673162462 0 0
17 0.181437615712041 0 0
18 0.194237970806716 0 0
19 0.20386154720656 0 0
20 0.211556336359081 0 0
21 0.211417859085921 0 0
22 0.208790218500257 0 0
23 0.20437467341685 0 0
24 0.198246352046376 0 0
25 0.192966396099738 0 0
26 0.18897229193584 0 0
27 0.186243043953596 0 0
28 0.18578727224224 0 0
29 0.187114583931684 0 0
30 0.189090911319999 0 0
31 0.193600418301244 0 0
32 0.200054490546523 0 0
33 0.208072057884887 0 0
34 0.218285958582262 0 0
35 0.230634876630779 0 0
36 0.243459214546046 0 0
37 0.257752719558026 0 0
38 0.272580246630834 0 0
39 0.286712281491418 0 0
40 0.300342726342385 0 0
41 0.312249154496702 0 0
42 0.321331680226083 0 0
43 0.327112591435919 0 0
44 0.329469692698771 0 0
45 0.327542874308678 0 0
46 0.322985767437387 0 0
47 0.316224456423823 0 0
48 0.308782990589082 0 0
49 0.301183418606427 0 0
50 0.293575702556702 0 0
51 0.286696408065096 0 0
52 0.280798842600295 0 0
53 0.275808444038661 0 0
54 0.271299340181449 0 0
55 0.266225534078626 0 0
56 0.260785177597799 0 0
57 0.255342424416527 0 0
58 0.250947812402455 0 0
59 0.24777514930692 0 0
60 0.246247860756574 0 0
61 0.246092032695547 0 0
62 0.247219177075727 0 0
63 0.249675195006791 0 0
64 0.253195744885965 0 0
65 0.257788026175471 0 0
66 0.26369589320837 0 0
67 0.270555680751329 0 0
68 0.277823002163503 0 0
69 0.284937579021833 0 0
70 0.291097253127256 0 0
71 0.296043211270752 0 0
72 0.299540235735164 0 0
73 0.301795150475552 0 0
74 0.303069111244916 0 0
75 0.30355995799167 0 0
76 0.303606664702465 0 0
77 0.303007474849756 0 0
78 0.302001653949665 0 0
79 0.300361927400822 0 0
80 0.297986890885497 0 0
81 0.295325565249305 0 0
82 0.291656567474701 0 0
83 0.287335862742648 0 0
84 0.282306131698578 0 0
85 0.276702242286357 0 0
86 0.270280607979823 0 0
87 0.263050805729498 0 0
88 0.255009286552014 0 0
89 0.247098798503932 0 0
90 0.2398191835424 0 0
91 0.23466817932016 0 0
92 0.230585310303585 0 0
93 0.227279061892254 0 0
94 0.224693206022759 0 0
95 0.222993136629962 0 0
96 0.221791418806722 0 0
97 0.220695274517678 0 0
98 0.219442816624831 0 0
99 0.217000405185694 0 0
100 0.213283732282521 0 0
101 0.208384750595562 0 0
102 0.202985389753009 0 0
103 0.197924660371165 0 0
104 0.193409646692029 0 0
105 0.189628652821804 0 0
106 0.186318519164064 0 0
107 0.183315563032657 0 0
108 0.180098687261504 0 0
109 0.176492614557115 0 0
110 0.172650422408531 0 0
111 0.168979191040057 0 0
112 0.166106531649937 0 0
113 0.163622827054655 0 0
114 0.161570328667133 0 0
115 0.159693607722301 0 0
116 0.157690305409947 0 0
117 0.15544650006387 0 0
118 0.153185383511044 0 0
119 0.150954772341381 0 0
120 0.148960802743881 0 0
121 0.147350785081686 0 0
122 0.146182367433256 0 0
123 0.145312879880878 0 0
124 0.144781245193999 0 0
125 0.14473607505965 0 0
126 0.144976432177203 0 0
127 0.145464936657928 0 0
128 0.145889790468872 0 0
129 0.146174517595681 0 0
130 0.14615421098877 0 0
131 0.145743119998859 0 0
132 0.144922809795091 0 0
133 0.143805231938307 0 0
134 0.142492952453543 0 0
135 0.141053445832183 0 0
136 0.139720571628269 0 0
137 0.138186469198598 0 0
138 0.136919534961634 0 0
139 0.135732624874463 0 0
140 0.134597268963386 0 0
141 0.133432724955799 0 0
142 0.13211501546202 0 0
143 0.130478475600008 0 0
144 0.128290801143951 0 0
145 0.125726707508103 0 0
146 0.122634784100445 0 0
147 0.119472073398083 0 0
148 0.116199128230447 0 0
149 0.112813911251756 0 0
150 0.109547291781198 0 0
151 0.106268392530964 0 0
152 0.10313443150471 0 0
153 0.100113578226984 0 0
154 0.097073834113113 0 0
155 0.0941199411272616 0 0
156 0.0911853891891621 0 0
157 0.0882319764053268 0 0
158 0.085267274530049 0 0
159 0.0822333903307463 0 0
160 0.0792187073154596 0 0
161 0.0760907077820793 0 0
162 0.0728848234132589 0 0
163 0.0697048920692252 0 0
164 0.0665600438164166 0 0
165 0.0635411651500916 0 0
166 0.0606319242880778 0 0
167 0.0578670530064308 0 0
168 0.0553155735461356 0 0
169 0.0529193006810867 0 0
170 0.050722718025932 0 0
171 0.0486788470977319 0 0
172 0.0467747209472673 0 0
173 0.0450423813898501 0 0
174 0.0434307741189043 0 0
175 0.041915712424757 0 0
176 0.0405250313895705 0 0
177 0.0390895391040532 0 0
178 0.0377897158697839 0 0
179 0.0365016922380464 0 0
180 0.0351788001916396 0 0
181 0.0338645937424847 0 0
182 0.0325302009051183 0 0
183 0.0312848146149282 0 0
184 0.0300375958148976 0 0
185 0.0288302935207691 0 0
186 0.027652203865544 0 0
187 0.0264621566936286 0 0
188 0.0252688692008588 0 0
189 0.0241226625595337 0 0
190 0.0229255436965288 0 0
191 0.0217207281738409 0 0
192 0.0205701146867025 0 0
193 0.0193892949195812 0 0
194 0.0183936626191952 0 0
195 0.017494647116465 0 0
196 0.0167605279940225 0 0
197 +NAN 0 0
198 +NAN 0 0
199 +NAN 0 0
200 +NAN 0 0
201 +NAN 0 0
202 +NAN 0 0
203 +NAN 0 0
204 +NAN 0 0
205 +NAN 0 0
206 +NAN 0 0
207 +NAN 0 0
208 +NAN 0 0
209 +NAN 0 0
210 +NAN 0 0
211 +NAN 0 0
212 +NAN 0 0
213 +NAN 0 0
214 +NAN 0 0
215 +NAN 0 0
216 +NAN 0 0
217 +NAN 0 0
218 +NAN 0 0
219 +NAN 0 0
220 +NAN 0 0
221 +NAN 0 0
222 +NAN 0 0
223 +NAN 0 0
224 +NAN 0 0
225 +NAN 0 0
226 +NAN 0 0
227 +NAN 0 0
228 +NAN 0 0
229 +NAN 0 0
230 +NAN 0 0
231 +NAN 0 0
232 +NAN 0 0
233 +NAN 0 0
234 +NAN 0 0
235 +NAN 0 0
236 +NAN 0 0
237 +NAN 0 0
238 +NAN 0 0
239 +NAN 0 0
240 +NAN 0 0
241 +NAN 0 0
242 +NAN 0 0
243 +NAN 0 0
244 +NAN 0 0
245 +NAN 0 0
246 +NAN 0 0
247 +NAN 0 0
248 +NAN 0 0
249 +NAN 0 0
250 +NAN 0 0
251 +NAN 0 0
252 +NAN 0 0
253 +NAN 0 0
254 +NAN 0 0
255 +NAN 0 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = DLAB_2018-05-24_13-29-20_305_176
IDDevice = SAM_859F
IDDataType = SPECTRUM
IDDataTypeSub1 = CAL
IDDataTypeSub2 = Air
IDDataTypeSub3 =
DateTime = 2018-05-24 13:28:25
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType =
MethodName =
Mission = No Mission
MissionSub = 1
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack = DLAB_2018-05-04_11-56-28_529_586
IDDataCal =
IntegrationTime = 64
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 5 0 0
1 +NAN 0 0
2 +NAN 0 0
3 +NAN 0 0
4 +NAN 0 0
5 0.549282530081406 0 0
6 0.621825635483575 0 0
7 0.705214779700439 0 0
8 0.782494923890489 0 0
9 0.848306874043027 0 0
10 0.952625287085828 0 0
11 1.06364941208026 0 0
12 1.17099618224932 0 0
13 1.27964867192574 0 0
14 1.37878597375063 0 0
15 1.42771820575638 0 0
16 1.4380590385421 0 0
17 1.41583530083466 0 0
18 1.35751030831315 0 0
19 1.28801896577964 0 0
20 1.23773169248486 0 0
21 1.19003370359023 0 0
22 1.16911032524399 0 0
23 1.16789019991587 0 0
24 1.17908641221467 0 0
25 1.20561721452238 0 0
26 1.24993325867368 0 0
27 1.3042108426727 0 0
28 1.37841324495146 0 0
29 1.46663415660191 0 0
30 1.55813913029349 0 0
31 1.66686169700722 0 0
32 1.78274771118438 0 0
33 1.89315285694338 0 0
34 2.00609300108623 0 0
35 2.10386062632617 0 0
36 2.18077321675475 0 0
37 2.23620955735442 0 0
38 2.266135432154 0 0
39 2.26878990322214 0 0
40 2.25797663538301 0 0
41 2.22685859649013 0 0
42 2.17776313289299 0 0
43 2.1222752364519 0 0
44 2.06098344374156 0 0
45 1.99948809108821 0 0
46 1.94462577242816 0 0
47 1.8989381397134 0 0
48 1.8637403074385 0 0
49 1.84137175128878 0 0
50 1.82996842025894 0 0
51 1.82735603324287 0 0
52 1.82819560800875 0 0
53 1.82831225824908 0 0
54 1.82476779554239 0 0
55 1.82142520789599 0 0
56 1.82469614734563 0 0
57 1.83514598035505 0 0
58 1.85423698694933 0 0
59 1.88102853388183 0 0
60 1.91679111910883 0 0
61 1.95713305118927 0 0
62 2.0033013266641 0 0
63 2.05191276620812 0 0
64 2.10100127704333 0 0
65 2.15116215495783 0 0
66 2.19982933350689 0 0
67 2.24341508467426 0 0
68 2.28026480621138 0 0
69 2.30634686430023 0 0
70 2.31796219508283 0 0
71 2.31589695847203 0 0
72 2.29809543158409 0 0
73 2.2668387918562 0 0
74 2.22596956700897 0 0
75 2.17822422289454 0 0
76 2.1262484698939 0 0
77 2.07154274835781 0 0
78 2.01784816285075 0 0
79 1.9635850159156 0 0
80 1.90957838150673 0 0
81 1.85662335754133 0 0
82 1.80118393109592 0 0
83 1.74752896056537 0 0
84 1.69458207285898 0 0
85 1.64238998731142 0 0
86 1.59255947952261 0 0
87 1.55042463825823 0 0
88 1.52145095482736 0 0
89 1.50182839545807 0 0
90 1.48602912306116 0 0
91 1.47501182897849 0 0
92 1.46801797625318 0 0
93 1.46252443118698 0 0
94 1.4571840542778 0 0
95 1.44881752975571 0 0
96 1.433373570625 0 0
97 1.4106211402034 0 0
98 1.38310053980989 0 0
99 1.35343439202405 0 0
100 1.32469024445085 0 0
101 1.29921323938482 0 0
102 1.2757042981125 0 0
103 1.25356245928469 0 0
104 1.23230080447944 0 0
105 1.20776661327865 0 0
106 1.18172190161938 0 0
107 1.16211138784545 0 0
108 1.14836490545677 0 0
109 1.13698033747357 0 0
110 1.12673020620722 0 0
111 1.115430409999 0 0
112 1.10428562795353 0 0
113 1.0934141739792 0 0
114 1.0851095103506 0 0
115 1.08102444265095 0 0
116 1.08007408967758 0 0
117 1.08238869164072 0 0
118 1.08781099449618 0 0
119 1.09202496629142 0 0
120 1.09279743926351 0 0
121 1.08928198225434 0 0
122 1.08099296127192 0 0
123 1.06779395728469 0 0
124 1.05125732218958 0 0
125 1.03307124483462 0 0
126 1.01642561672595 0 0
127 1.0017478853335 0 0
128 0.98877464388953 0 0
129 0.978591382441999 0 0
130 0.970432000434175 0 0
131 0.962460675619692 0 0
132 0.953651636148435 0 0
133 0.943103023421902 0 0
134 0.930554197290447 0 0
135 0.915976069829803 0 0
136 0.89827602173614 0 0
137 0.878650755188226 0 0
138 0.859108524352699 0 0
139 0.840122962860222 0 0
140 0.820853477964574 0 0
141 0.803547895709764 0 0
142 0.786651104537257 0 0
143 0.769194844035412 0 0
144 0.751217544779413 0 0
145 0.731862968408631 0 0
146 0.710478767970412 0 0
147 0.687207420135085 0 0
148 0.662469528888512 0 0
149 0.636358233772055 0 0
150 0.609121332586544 0 0
151 0.580838486227566 0 0
152 0.552767035926316 0 0
153 0.525876935395925 0 0
154 0.499896413074609 0 0
155 0.475284681533185 0 0
156 0.452387885405863 0 0
157 0.431848904268036 0 0
158 0.413013739466993 0 0
159 0.395710805209202 0 0
160 0.380181587532903 0 0
161 0.365591896979342 0 0
162 0.352105459639395 0 0
163 0.339276260510366 0 0
164 0.32616389487977 0 0
165 0.313880254968568 0 0
166 0.301213081346406 0 0
167 0.28867892621412 0 0
168 0.276332017077307 0 0
169 0.263867205519659 0 0
170 0.251559483539307 0 0
171 0.239917175566115 0 0
172 0.228872841726392 0 0
173 0.218348838385983 0 0
174 0.208663588155861 0 0
175 0.199488791575245 0 0
176 0.191252859631973 0 0
177 0.183364916996847 0 0
178 0.175877803627425 0 0
179 0.169219899131997 0 0
180 0.162866423884395 0 0
181 0.156727192611269 0 0
182 0.151124000714184 0 0
183 0.145138407523578 0 0
184 0.13971586046093 0 0
185 0.134506608902369 0 0
186 0.129059486722317 0 0
187 0.124203168251957 0 0
188 0.119075347065844 0 0
189 0.113513221481262 0 0
190 0.107843336832916 0 0
191 0.101790305051534 0 0
192 0.0961960826886135 0 0
193 0.0914035900672732 0 0
194 0.0868727278958915 0 0
195 0.082573024301116 0 0
196 +NAN 0 0
197 +NAN 0 0
198 +NAN 0 0
199 +NAN 0 0
200 +NAN 0 0
201 +NAN 0 0
202 +NAN 0 0
203 +NAN 0 0
204 +NAN 0 0
205 +NAN 0 0
206 +NAN 0 0
207 +NAN 0 0
208 +NAN 0 0
209 +NAN 0 0
210 +NAN 0 0
211 +NAN 0 0
212 +NAN 0 0
213 +NAN 0 0
214 +NAN 0 0
215 +NAN 0 0
216 +NAN 0 0
217 +NAN 0 0
218 +NAN 0 0
219 +NAN 0 0
220 +NAN 0 0
221 +NAN 0 0
222 +NAN 0 0
223 +NAN 0 0
224 +NAN 0 0
225 +NAN 0 0
226 +NAN 0 0
227 +NAN 0 0
228 +NAN 0 0
229 +NAN 0 0
230 +NAN 0 0
231 +NAN 0 0
232 +NAN 0 0
233 +NAN 0 0
234 +NAN 0 0
235 +NAN 0 0
236 +NAN 0 0
237 +NAN 0 0
238 +NAN 0 0
239 +NAN 0 0
240 +NAN 0 0
241 +NAN 0 0
242 +NAN 0 0
243 +NAN 0 0
244 +NAN 0 0
245 +NAN 0 0
246 +NAN 0 0
247 +NAN 0 0
248 +NAN 0 0
249 +NAN 0 0
250 +NAN 0 0
251 +NAN 0 0
252 +NAN 0 0
253 +NAN 0 0
254 +NAN 0 0
255 +NAN 0 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,297 @@
[Spectrum]
Version = 1
IDData = DLAB_2018-06-13_11-56-08_604_111
IDDevice = SAM_85B5
IDDataType = SPECTRUM
IDDataTypeSub1 = CAL
IDDataTypeSub2 = Air
IDDataTypeSub3 =
DateTime = 2018-06-13 11:54:51
PositionLatitude = 0
PositionLongitude = 0
Comment =
CommentSub1 =
CommentSub2 =
CommentSub3 =
IDMethodType =
MethodName =
Mission = No Mission
MissionSub = 1
RecordType = 0
[Attributes]
CalFactor = 1
IDBasisSpec =
IDDataBack = DLAB_2018-06-11_15-23-57_730_586
IDDataCal =
IntegrationTime = 64
P31 = -1
P31e = 0
PathLength = +INF
RAWDynamic = 65535
Temperature = +NAN
Unit1 = $05 $00 Pixel
Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW
Unit4 = $f1 $00 Status
[END] of [Attributes]
[DATA]
0 5 0 0
1 +NAN 0 0
2 +NAN 0 0
3 +NAN 0 0
4 0.380824258865919 0 0
5 0.480956813156357 0 0
6 0.57671205380196 0 0
7 0.643896236957154 0 0
8 0.711054782209677 0 0
9 0.758265752350778 0 0
10 0.808854255795615 0 0
11 0.869466331079482 0 0
12 0.925321324749243 0 0
13 1.00927399148091 0 0
14 1.08699883630787 0 0
15 1.18347377446848 0 0
16 1.29079925777138 0 0
17 1.39953731633192 0 0
18 1.49536024576308 0 0
19 1.57053962346542 0 0
20 1.61051680455964 0 0
21 1.60891142181803 0 0
22 1.58014917632373 0 0
23 1.54292073894688 0 0
24 1.49782795775685 0 0
25 1.46270054563491 0 0
26 1.43754722159869 0 0
27 1.42339247548624 0 0
28 1.42249669690879 0 0
29 1.43289834559721 0 0
30 1.45081833970432 0 0
31 1.48383024473758 0 0
32 1.53350351710437 0 0
33 1.59283171118034 0 0
34 1.66682243068085 0 0
35 1.75523084376357 0 0
36 1.8490542829721 0 0
37 1.94827772413977 0 0
38 2.05297044933559 0 0
39 2.15300125225733 0 0
40 2.24489521732098 0 0
41 2.32484518002751 0 0
42 2.37710624055378 0 0
43 2.41032149129472 0 0
44 2.41401311078449 0 0
45 2.39196623346607 0 0
46 2.35386541795861 0 0
47 2.30358502851024 0 0
48 2.24350994611066 0 0
49 2.18566570348128 0 0
50 2.13007635400607 0 0
51 2.08048312730197 0 0
52 2.03943635277338 0 0
53 1.9990019487276 0 0
54 1.9542919602901 0 0
55 1.90697476815729 0 0
56 1.86132580586718 0 0
57 1.81936966943287 0 0
58 1.78948757961567 0 0
59 1.77036444175303 0 0
60 1.76067051308416 0 0
61 1.76079151769139 0 0
62 1.76865840458355 0 0
63 1.78533977613825 0 0
64 1.81054315659671 0 0
65 1.84219534093402 0 0
66 1.88262260694772 0 0
67 1.92633682221336 0 0
68 1.96919363361994 0 0
69 2.00638558730966 0 0
70 2.03543177536163 0 0
71 2.05645335730185 0 0
72 2.06889953924594 0 0
73 2.07668786673546 0 0
74 2.07746404954558 0 0
75 2.07708946852551 0 0
76 2.07239270419962 0 0
77 2.06329693588947 0 0
78 2.05235510505223 0 0
79 2.03788342455449 0 0
80 2.01750123705209 0 0
81 1.99316265318269 0 0
82 1.96344779927853 0 0
83 1.92810068074762 0 0
84 1.89032139564187 0 0
85 1.84840056738145 0 0
86 1.80188008685176 0 0
87 1.7531429855323 0 0
88 1.70184883503381 0 0
89 1.64693756964496 0 0
90 1.59639297188055 0 0
91 1.55743828612696 0 0
92 1.53081670223502 0 0
93 1.509066853406 0 0
94 1.48974595694359 0 0
95 1.47286758281018 0 0
96 1.45660325947575 0 0
97 1.43667408186819 0 0
98 1.40947906533906 0 0
99 1.37746325817173 0 0
100 1.3399910234164 0 0
101 1.29987620320872 0 0
102 1.26173586555032 0 0
103 1.22580130202006 0 0
104 1.19650560480134 0 0
105 1.17258287879559 0 0
106 1.15326969493003 0 0
107 1.13448708666807 0 0
108 1.11395465030131 0 0
109 1.08753684763482 0 0
110 1.06275254011917 0 0
111 1.0408908566722 0 0
112 1.02045255259373 0 0
113 1.00192289281247 0 0
114 0.987093337695555 0 0
115 0.973433543184599 0 0
116 0.961454156421677 0 0
117 0.949336048850277 0 0
118 0.937190359719721 0 0
119 0.925018119816345 0 0
120 0.911316167695048 0 0
121 0.897751565127677 0 0
122 0.885763756400802 0 0
123 0.875253674622747 0 0
124 0.866439225407856 0 0
125 0.859594015285511 0 0
126 0.856442344648432 0 0
127 0.854520610650332 0 0
128 0.853095084706978 0 0
129 0.851996897997662 0 0
130 0.849373999218705 0 0
131 0.845008414644852 0 0
132 0.837447706997702 0 0
133 0.828042280687475 0 0
134 0.816973957953628 0 0
135 0.804392597259629 0 0
136 0.790971383923797 0 0
137 0.777350907812577 0 0
138 0.764886212005326 0 0
139 0.753124860834896 0 0
140 0.74238339492221 0 0
141 0.731621293455726 0 0
142 0.720137856580817 0 0
143 0.707681887074656 0 0
144 0.692857487682284 0 0
145 0.676149155140644 0 0
146 0.657691286728854 0 0
147 0.637091724889135 0 0
148 0.615841105000382 0 0
149 0.593277961352052 0 0
150 0.571635565839856 0 0
151 0.550558744253774 0 0
152 0.529727893337181 0 0
153 0.50958610090654 0 0
154 0.490923786532866 0 0
155 0.472942835508178 0 0
156 0.455966760194577 0 0
157 0.439389399108222 0 0
158 0.42326262400571 0 0
159 0.408064966451864 0 0
160 0.392531100434587 0 0
161 0.376760145430696 0 0
162 0.361340837642809 0 0
163 0.345797349215964 0 0
164 0.330538900755072 0 0
165 0.315423852713651 0 0
166 0.300655326757946 0 0
167 0.286125136929255 0 0
168 0.27220666979537 0 0
169 0.258963801456755 0 0
170 0.246515726736969 0 0
171 0.23471243489257 0 0
172 0.223963260764627 0 0
173 0.213811227531161 0 0
174 0.204848303945938 0 0
175 0.196342813423038 0 0
176 0.188347519381911 0 0
177 0.180847277367304 0 0
178 0.173574321958823 0 0
179 0.166782572540461 0 0
180 0.159983659268987 0 0
181 0.153496471427164 0 0
182 0.146983276179518 0 0
183 0.140664487031456 0 0
184 0.134679615950644 0 0
185 0.128426075217298 0 0
186 0.122768803469292 0 0
187 0.116973531179931 0 0
188 0.111227699506044 0 0
189 0.10561644888568 0 0
190 0.0999165260100575 0 0
191 0.09399466356358 0 0
192 0.0884689961099718 0 0
193 0.0833768260697751 0 0
194 0.0789223013382674 0 0
195 0.0748108094846383 0 0
196 0.0710379549143775 0 0
197 +NAN 0 0
198 +NAN 0 0
199 +NAN 0 0
200 +NAN 0 0
201 +NAN 0 0
202 +NAN 0 0
203 +NAN 0 0
204 +NAN 0 0
205 +NAN 0 0
206 +NAN 0 0
207 +NAN 0 0
208 +NAN 0 0
209 +NAN 0 0
210 +NAN 0 0
211 +NAN 0 0
212 +NAN 0 0
213 +NAN 0 0
214 +NAN 0 0
215 +NAN 0 0
216 +NAN 0 0
217 +NAN 0 0
218 +NAN 0 0
219 +NAN 0 0
220 +NAN 0 0
221 +NAN 0 0
222 +NAN 0 0
223 +NAN 0 0
224 +NAN 0 0
225 +NAN 0 0
226 +NAN 0 0
227 +NAN 0 0
228 +NAN 0 0
229 +NAN 0 0
230 +NAN 0 0
231 +NAN 0 0
232 +NAN 0 0
233 +NAN 0 0
234 +NAN 0 0
235 +NAN 0 0
236 +NAN 0 0
237 +NAN 0 0
238 +NAN 0 0
239 +NAN 0 0
240 +NAN 0 0
241 +NAN 0 0
242 +NAN 0 0
243 +NAN 0 0
244 +NAN 0 0
245 +NAN 0 0
246 +NAN 0 0
247 +NAN 0 0
248 +NAN 0 0
249 +NAN 0 0
250 +NAN 0 0
251 +NAN 0 0
252 +NAN 0 0
253 +NAN 0 0
254 +NAN 0 0
255 +NAN 0 0
[END] of [DATA]
[END] of [Spectrum]

@ -0,0 +1,81 @@
[DEVICE]
Version = 0
IDDevice = SAMIP_50ED
IDDeviceType = SAMIP
IDDeviceTypeSub1 = ACC-2
IDDeviceTypeSub2 = VIS
IDDeviceTypeSub3 =
DateTime = 2018-06-19 12:08:40
Comment =
RecordType = 0
IDDeviceMaster =
[ATTRIBUTES]
IDDeviceSAM = SAM_859F
IDDeviceIP = IP_C121
[END] of [ATTRIBUTES]
[END] of [DEVICE]
[DEVICE]
Version = 0
IDDevice = IP_C121
IDDeviceType = IP
IDDeviceTypeSub1 =
IDDeviceTypeSub2 =
IDDeviceTypeSub3 =
DateTime = 2018-06-19 12:01:08
Comment =
RecordType = 0
IDDeviceMaster = SAMIP_50ED
[ATTRIBUTES]
Incl_Orientation = up
Incl_Xgain = 1.0
Incl_Xoffset = 125
Incl_Ygain = 0.9375
Incl_Yoffset = 126
Incl_KBG = 1.2073
Incl_Kref = 0.1275
Press_Current_mA = 1.08
Press_Surface_bar = 5.57
Press_Gain = 2.7
WithIncl = 1
WithPress = 1
Press_Sens_mV_bar_4mA = 71.36
Press_Sens_mV_bar_1mA = 17.84
Press_Type = PA-10/TAB/10bar
CalibrationDate = 08.06.2018
[END] of [ATTRIBUTES]
[END] of [DEVICE]
[DEVICE]
Version = 0
IDDevice = SAM_859F
IDDeviceType = SAM
IDDeviceTypeSub1 = ACC-2
IDDeviceTypeSub2 = VIS
IDDeviceTypeSub3 =
DateTime = 2018-05-30 12:14:10
Comment =
RecordType = 0
IDDeviceMaster = SAMIP_50ED
[ATTRIBUTES]
c0s = +3.019290000E+02
c1s = +3.345130000E+00
c2s = +2.651460000E-04
c3s = -1.753680000E-06
DarkPixelStart = 237
DarkPixelStop = 254
Reverse = 0
c4s = +0.000000000E+00
IDDataCal = DLAB_2019-08-28_14-44-55_098_198
IDDataBack = DLAB_2019-08-28_12-24-09_763_812
IDDataCalAQ = DLAB_2019-08-28_14-47-19_914_233
Firmware = 2.06
[END] of [ATTRIBUTES]
[END] of [DEVICE]

@ -0,0 +1,32 @@
[Device]
Version = 0
IDDevice = SAM_852F
IDDeviceType = SAM
IDDeviceTypeSub1 = ACC-2
IDDeviceTypeSub2 = VIS
IDDeviceTypeSub3 =
RecordType = 0
DateTime = 2016-12-07 12:03:12
IDDeviceMaster =
Comment =
[Attributes]
DarkPixelStart = 237
DarkPixelStop = 254
Firmware = 2.06
IDDataBack = DLAB_2016-11-29_14-47-59_729_812
IDDataCal = DLAB_2016-12-07_12-00-24_364_510
IDDataCalAQ = DLAB_2016-12-07_12-02-43_591_545
IntegrationTime = 0
Reverse = 0
SerialNo_MMS = 103307
WavelengthRange = 310..1100
c0s = 299.895
c1s = 3.31161
c2s = 0.00031652
c3s = -1.73194e-06
c4s = +0.000000000E+00
cs = 102842
[END] of [Attributes]
[END] of [Device]

@ -0,0 +1,30 @@
[Device]
Version = 0
IDDevice = SAM_859F
IDDeviceType = SAM
IDDeviceTypeSub1 = ARC
IDDeviceTypeSub2 = VIS
IDDeviceTypeSub3 =
RecordType = 0
DateTime = 2018-05-24 13:30:20
IDDeviceMaster =
Comment = ARC VIS
[Attributes]
DarkPixelStart = 237
DarkPixelStop = 254
Firmware = 2.06
IDDataBack = DLAB_2018-05-04_11-56-28_529_586
IDDataCal = DLAB_2018-05-24_13-29-20_305_176
IDDataCalAQ = DLAB_2018-05-24_13-29-21_895_177
IntegrationTime = 0
Reverse = 0
SerialNo_MMS =
c0s = 299.971
c1s = 3.32431
c2s = 0.000391882
c3s = -1.91435e-06
c4s = +0.000000000E+00
[END] of [Attributes]
[END] of [Device]

@ -0,0 +1,30 @@
[Device]
Version = 0
IDDevice = SAM_85B5
IDDeviceType = SAM
IDDeviceTypeSub1 = ARC
IDDeviceTypeSub2 = VIS
IDDeviceTypeSub3 =
RecordType = 0
DateTime = 2018-06-13 11:58:48
IDDeviceMaster =
Comment = ARC VIS
[Attributes]
DarkPixelStart = 237
DarkPixelStop = 254
Firmware = 2.06
IDDataBack = DLAB_2018-06-11_15-23-57_730_586
IDDataCal = DLAB_2018-06-13_11-56-08_604_111
IDDataCalAQ = DLAB_2018-06-13_11-58-21_312_112
IntegrationTime = 0
Reverse = 0
SerialNo_MMS =
c0s = 300.14
c1s = 3.3268
c2s = 0.000314225
c3s = -1.90331e-06
c4s = +0.000000000E+00
[END] of [Attributes]
[END] of [Device]

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

@ -0,0 +1,237 @@
from pathlib import Path, PurePath
from tools.mylogger import log
from readcal import ReadCal
from myconfig import CAL_DIR, DATA_DIR, FILE_MARK, DeviceType, RamsesFunc
class Configuration:
def __init__(self, ) -> None:
log.info(f"ConfigAWRAMS init: ", __name__, "", "")
self.device_type = None
self.configuration =None
self.cal_configuration = {}
pass
def setDeviceType(self, device_type:str) -> None:
self.device_type = device_type.lower()
pass
def setSystemCfgDict(self, cfg:dict) -> None:
self.configuration = cfg
log.info(f"self.configuration : {self.configuration} ", __name__, "", "")
pass
def getCalConfiguration(self) -> None:
if self.device_type == None:
self.cal_configuration = None
if self.configuration == None:
self.cal_configuration =None
for k,v in self.configuration.items():
if v["SN"] == "" or v['FUNC']=="":
pass
else:
self.cal_configuration.update( {v["FUNC"]:{}} )
self.cal_configuration[v["FUNC"]].update( {"SN":v['SN']} )
self.cal_configuration[v["FUNC"]].update( {"FUNC":v['FUNC']} )
self.__init_configuration_basic()
self.__init_configuration_cal()
self.__init_configuration_IP_SAM()
pass
def __init_configuration_basic(self ) -> None:
# self.cfgtool = Config()
for k in self.cal_configuration.keys():
sn = self.cal_configuration[k]["SN"]
if self.__isSamIniExisted(sn):
self.cal_configuration[k].update({ "TYPE" : "SAM" })
self.cal_configuration[k].update({ "samsn" : sn })
self.cal_configuration[k].update({ "inifile" : "SAM_"+sn+".ini" })
self.cal_configuration[k].update({ "calfile" : "Cal_SAM_"+sn+".dat" })
self.cal_configuration[k].update({ "calaqfile" : "CalAQ_SAM_"+sn+".dat" })
self.cal_configuration[k].update({ "backfile" : "Back_SAM_"+sn+".dat" })
if self.__isSamIPIniExisted(sn):
self.cal_configuration[k].update({ "TYPE" : "SAMIP" })
samsn = self.__getSAMSN(sn)
if samsn== None:
log.warning(f"Cannot get samsn from Sensor: {sn}", __name__, "", "" )
raise Exception(f"Cannot get samsn from Sensor: {sn}")
self.cal_configuration[k].update({ "samsn" : samsn })
self.cal_configuration[k].update({ "inifile" : "SAMIP_"+sn+"_ALL.ini" })
self.cal_configuration[k].update({ "calfile" : "Cal_SAM_"+samsn+".dat" })
self.cal_configuration[k].update({ "calaqfile" : "CalAQ_SAM_"+samsn+".dat" })
self.cal_configuration[k].update({ "backfile" : "Back_SAM_"+samsn+".dat" })
if not self.__isSamIniExisted(sn) and not self.__isSamIPIniExisted(sn):
log.warning(f"Cannot find ini file for Sensor: {sn}", __name__, "", "" )
raise Exception(f"Cannot find ini file for Sensor: {sn}")
pass
def __init_configuration_cal(self ) -> None:
# self.cfgtool = Config()
for k in self.cal_configuration.keys():
sn = self.cal_configuration[k]["SN"]
# Device File
calpath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[k]["calfile"])
if calpath.exists( ):
res = ReadCal.read_columns_set_by_mark( calpath, FILE_MARK, 1 )
self.cal_configuration[k].update({ "cal" : res[1][0] })
calaqpath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[k]["calaqfile"])
if calaqpath.exists( ):
res = ReadCal.read_columns_set_by_mark( calaqpath, FILE_MARK, 1 )
self.cal_configuration[k].update({ "calaq" : res[1][0] })
backpath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[k]["backfile"])
if calaqpath.exists( ):
res = ReadCal.read_columns_set_by_mark( backpath, FILE_MARK, 1,2 )
self.cal_configuration[k].update({ "b0" : res[1][0] })
self.cal_configuration[k].update({ "b1" : res[1][1] })
pass
def __init_configuration_IP_SAM(self ) -> None:
# self.cfgtool = Config()
for j in self.cal_configuration.keys():
# log.debug(f"__init_configuration_IP_SAM {j}", __name__, "", "" )
inipath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[j]["inifile"])
# log.debug(f"__init_configuration_IP_SAM {inipath}", __name__, "", "" )
sam = ReadCal.readSAMCalFromIni(inipath)
# log.debug(f"__init_configuration_IP_SAM {sam}", __name__, "", "" )
for k,v in sam.items():
self.cal_configuration[j].update({ k : v })
if self.cal_configuration[j]["TYPE"] == "SAMIP":
ip = ReadCal.readIPCalFromIni(inipath)
for k,v in ip.items():
self.cal_configuration[j].update({ k : v })
def __isSamIniExisted(self,sn) ->bool:
sn_0 = "SAM_"+str(sn)+".ini"
path_ = CAL_DIR.joinpath(self.device_type.lower(), sn_0)
if path_.exists():
return True
return False
def __isSamIPIniExisted(self,sn) ->bool:
sn_0 = "SAMIP_"+str(sn)+"_ALL.ini"
path_ = CAL_DIR.joinpath(self.device_type.lower(), sn_0)
if path_.exists():
return True
return False
def __getSAMSN(self,sn) -> None:
sn_0 = "SAMIP_"+str(sn)+"_ALL.ini"
path_ = CAL_DIR.joinpath(self.device_type.lower(), sn_0)
# path_ = DATA_DIR.joinpath(self.device.lower(), CAL_DIR, sn_0)
samsn = ReadCal.readSamSNFromIni( path_ )
if samsn == None:
return None
return samsn
pass
# def __init2__(self, device:str, **kwargs) -> None:
# """
# get cal parameter for every sensor
# para : {"1":{"SN":"85B5","FUNC","Lsky"},"2":{},"3":{}}
# """
# # log.info(f"ProcessAWRAMS kwargs: {kwargs}", __name__, "", "")
# # log.info(f"len: { len(kwargs)}", __name__, "", "")
# if len(kwargs) != 3:
# log.warning(f" pass a wrong para to ProcessAWRAMS {kwargs}", __name__, "", "")
# self.device = device.lower() # surface profile awrams
# self.ramses = {}
# # 生成标定文件 { }
# for k,v in kwargs.items():
# self.ramses.update( {v["FUNC"]:{}} )
# self.ramses[v["FUNC"]].update( {"SN":v['SN']} )
# self.ramses[v["FUNC"]].update( {"FUNC":v['FUNC']} )
# pass
# log.debug(f" ===== {self.ramses}",__name__, "", "" )
# # if kwargs.__contains__("1"):
# # self.ramses.append( self.cfgtool.getDictByAttr("ramses"))
# # self.cfgtool.set_attr(self.ramses[1],kwargs['1']"SN",kwargs['1'])
# # if kwargs.__contains__("2"):
# # self.ramses.append( self.cfgtool.getDictByAttr("ramses"))
# # self.cfgtool.set_attr(self.ramses[2],"SN",kwargs['1'])
# # if kwargs.__contains__("3"):
# # self.ramses.append( self.cfgtool.getDictByAttr("ramses"))
# # self.cfgtool.set_attr(self.ramses[3],"SN",kwargs['1'])
# self.__init_configuration_basic()
# self.__init_configuration_cal()
# self.__init_configuration_IP_SAM()
# # log.info(f"ProcessAWRAMS after initiate: {kwargs}", __name__, "", "")
# def __init_configuration_basic2(self ) -> None:
# # self.cfgtool = Config()
# for k in self.ramses.keys():
# sn = self.ramses[k]["SN"]
# if self.__isSamIniExisted(sn):
# self.ramses[k].update({ "TYPE" : "SAM" })
# self.ramses[k].update({ "samsn" : sn })
# self.ramses[k].update({ "inifile" : "SAM_"+sn+".ini" })
# self.ramses[k].update({ "calfile" : "Cal_SAM_"+sn+".dat" })
# self.ramses[k].update({ "calaqfile" : "CalAQ_SAM_"+sn+".dat" })
# self.ramses[k].update({ "backfile" : "Back_SAM_"+sn+".dat" })
# if self.__isSamIPIniExisted(sn):
# self.ramses[k].update({ "TYPE" : "SAMIP" })
# samsn = self.__getSAMSN(sn)
# if samsn== None:
# log.warning(f"Cannot get samsn from Sensor: {sn}", __name__, "", "" )
# raise Exception(f"Cannot get samsn from Sensor: {sn}")
# self.ramses[k].update({ "samsn" : samsn })
# self.ramses[k].update({ "inifile" : "SAMIP_"+sn+"_ALL.ini" })
# self.ramses[k].update({ "calfile" : "Cal_SAM_"+samsn+".dat" })
# self.ramses[k].update({ "calaqfile" : "CalAQ_SAM_"+samsn+".dat" })
# self.ramses[k].update({ "backfile" : "Back_SAM_"+samsn+".dat" })
# if not self.__isSamIniExisted(sn) and not self.__isSamIPIniExisted(sn):
# log.warning(f"Cannot find ini file for Sensor: {sn}", __name__, "", "" )
# raise Exception(f"Cannot find ini file for Sensor: {sn}")
# pass
# def __init_configuration_cal2(self ) -> None:
# # self.cfgtool = Config()
# for k in self.ramses.keys():
# sn = self.ramses[k]["SN"]
# # Device File
# calpath = CAL_DIR.joinpath(self.device, self.ramses[k]["calfile"])
# if calpath.exists( ):
# res = Readfile.read_columns_set_by_mark( calpath, FILE_MARK, 1 )
# self.ramses[k].update({ "cal" : res[1][0] })
# calaqpath = CAL_DIR.joinpath(self.device, self.ramses[k]["calaqfile"])
# if calaqpath.exists( ):
# res = Readfile.read_columns_set_by_mark( calaqpath, FILE_MARK, 1 )
# self.ramses[k].update({ "calaq" : res[1][0] })
# backpath = CAL_DIR.joinpath(self.device, self.ramses[k]["backfile"])
# if calaqpath.exists( ):
# res = Readfile.read_columns_set_by_mark( backpath, FILE_MARK, 1,2 )
# self.ramses[k].update({ "b0" : res[1][0] })
# self.ramses[k].update({ "b1" : res[1][1] })
# pass
# def __init_configuration_IP_SAM2(self ) -> None:
# # self.cfgtool = Config()
# for j in self.ramses.keys():
# # log.debug(f"__init_configuration_IP_SAM {j}", __name__, "", "" )
# inipath = CAL_DIR.joinpath(self.device, self.ramses[j]["inifile"])
# # log.debug(f"__init_configuration_IP_SAM {inipath}", __name__, "", "" )
# sam = Readfile.readSAMCalFromIni(inipath)
# # log.debug(f"__init_configuration_IP_SAM {sam}", __name__, "", "" )
# for k,v in sam.items():
# self.ramses[j].update({ k : v })
# if self.ramses[j]["TYPE"] == "SAMIP":
# ip = Readfile.readIPCalFromIni(inipath)
# for k,v in ip.items():
# self.ramses[j].update({ k : v })

@ -0,0 +1,322 @@
#! python3
# -*- encoding: utf-8 -*-
'''
@File : myconfig.py
@Time : 2023/03/01 15:28:20
@Author : Jim @ Yiwin
@Version : 1.0
@Contact : jim@yi-win.com
@Descrip : SysConfig
'''
import yaml
from enum import Enum
from pathlib import Path
DEVICE_ID = [2]
CURRENT_DIR = Path()
DATA_DIR = Path("data")
CAL_DIR = Path("calfile")
OUTPUT_DIR = Path("data", "output")
YAML_FILE_NAME = "config.yml"
RETRIEVE_CFG_FILE = "retrieve.yml"
FILE_MARK = ['Spectrum', 'DATA']
BEGIN_WAVELENGTH = 350
END_WAVELENGTH = 950
SAVE_EXT_NAME = ".csv"
INTERVAL = 1.0
SEPARATOR = ";"
TOKEN = ";"
NEWLINE = "\n"
ROWFACTOR = 0.026
class DeviceType(Enum) :
AWRAMS = 1
SURFACE = 2
PROFILE = 3
class RamsesFunc(Enum):
Lsky = 1
Esky = 2
Lwater = 3
Lw = 4
Rs = 5
class RamsesAWRAMS(Enum):
Lsky = 1
Esky = 2
Lwater = 3
Lw = 4
Rs = 5
class RamsesSURFACE(Enum):
Lsky = 1
Esky = 2
Lwater = 3
Lw = 4
Rs = 5
class RamsesPROFILE(Enum):
Ed = 1
Esky = 2
Lu = 3 #upwelling
Lw = 4
Rs = 5
IP_CAL = {
"Incl_Orientation": "up",
"Incl_Xgain": 1.0,
"Incl_Xoffset": 125,
"Incl_Ygain": 0.9375,
"Incl_Yoffset": 126,
"Incl_KBG": 1.2073,
"Incl_Kref": 0.1275,
"Press_Current_mA": 1.08,
"Press_Surface_bar": 5.57,
"Press_Gain": 2.7,
"WithIncl": 1,
"WithPress": 1,
"Press_Sens_mV_bar_4mA": 71.36,
"Press_Sens_mV_bar_1mA": 17.84,
"Press_Type": "PA-10/TAB/10bar",
"CalibrationDate": "08.06.2018",
}
RAMSES_CAL = {
"SN": "",
"TYPE": "SAM", # SAMIP or SAM
"FUNC": "Lsky",
"inifile": "",
"calfile": "",
"calaqfile": "",
"backfile": "",
"samsn": "",
"b0": [],
"b1": [],
"cal": [],
"calaq": [],
"DarkPixelStart": 237,
"DarkPixelStop": 254,
"Firmware": 2.06,
"IDDataBack": "DLAB_2016-11-29_14-47-59_729_812",
"IDDataCal": "DLAB_2016-12-07_12-00-24_364_510",
"IDDataCalAQ": "DLAB_2016-12-07_12-02-43_591_545",
"IntegrationTime": 0,
"Reverse": 0,
"SerialNo_MMS": 103307,
"WavelengthRange": "310..1100",
"c0s": 299.895,
"c1s": 3.31161,
"c2s": 0.00031652,
"c3s": -1.73194e-06,
"c4s": +0.000000000E+00,
"cs": 102842,
"savefile": ""
}
class MyConfig(object):
"""
设置 ID对应的传感器
"""
def __init__(self) -> None:
self.device_id = []
self.device_type = None
self.current_device_id = None
self.system_cfg = {}
self.cfg_path = Path()
self.yml_cfg_file = YAML_FILE_NAME
self.retrieve_cfg_file = Path(RETRIEVE_CFG_FILE)
self.system_cal_cfg = {}
self.validate = { }
def addDeviceID(self, id:int) -> None: #
self.device_id.append(id)
pass
def setDeviceID(self, id:int) -> bool: #
if id in self.device_id:
self.current_device_id = id
return True
else:
self.current_device_id = None
return False
pass
def setDeviceType(self, device_type:DeviceType) -> None:
self.device_type = device_type
pass
def setRetrieveCfg(self, rtv_yml:str="") -> None:
if rtv_yml =="":
return None
self.retrieve_cfg_file = Path(rtv_yml)
pass
def getSystemCfg(self,)->None:
'''
不同系统修改此函数或添加函数 getSystemCfg***()供调用
'''
if self.current_device_id == None:
self.system_cfg = None
if self.device_type == None:
self.system_cfg = None
temp_cfg = {}
if self.device_type == DeviceType.AWRAMS:
temp_cfg = {
1: {"SN": "85B5", "FUNC": RamsesAWRAMS(1).name},
2: {"SN": "50ED", "FUNC": RamsesAWRAMS(2).name},
3: {"SN": "852F", "FUNC": RamsesAWRAMS(3).name}
}
if self.device_type == DeviceType.SURFACE:
temp_cfg = {
1: {"SN": "85B5", "FUNC": RamsesSURFACE(1).name},
2: {"SN": "50ED", "FUNC": RamsesSURFACE(2).name},
3: {"SN": "852F", "FUNC": RamsesSURFACE(3).name}
}
if self.device_type == DeviceType.PROFILE:
temp_cfg = {
1: {"SN": "85B5", "FUNC": RamsesPROFILE(1).name},
2: {"SN": "50ED", "FUNC": RamsesPROFILE(2).name},
3: {"SN": "852F", "FUNC": RamsesPROFILE(3).name}
}
self.system_cfg.update( { self.current_device_id : temp_cfg } )
pass
def setCfgRamsesSN(self, sn_cfg: dict)->None:
if len(sn_cfg) == 0:
return None
for k in self.system_cfg[self.current_device_id].keys():
if str(k) in sn_cfg.keys() :
self.system_cfg[self.current_device_id][k]["SN"] = sn_cfg[str(k)]
else:
self.system_cfg[self.current_device_id][k]["SN"] = None
# if k in sn_cfg.keys() :
# self.system_cfg[self.current_device_id][k]["SN"] = sn_cfg[k]
pass
def setSystemCalCfg(self, sn_cfg: dict)->None:
if len(sn_cfg) == 0:
pass
def getDictByAttr(self, *args) -> dict:
ret = {}
if len(args) == 0:
return ret
if len(args) == 1:
if not hasattr(self, args[0]):
return ret
tmp = getattr(self, args[0])
if isinstance(tmp, dict):
ret.update(tmp)
return ret
if len(args) == 2:
if not hasattr(self, args[0]):
return ret
if not isinstance(getattr(self, args[0]), dict):
return ret
tmp: dict = getattr(self, args[0])
if not tmp.__contains__(args[1]):
# print(f"------------{args[1]}")
return ret
tmp2 = tmp[args[1]]
if isinstance(tmp2, dict):
ret.update(tmp2)
return ret
if len(args) > 2:
return ret
pass
# 设置字典对应的键值
def set_attr(self, d: dict, k, v) -> bool:
if d.__contains__(k):
d.update({k: v})
return True
return False
def write_yaml(self, d: dict):
with open(self.yml_cfg_file, "w", encoding="utf-8") as f:
yaml.dump(d, f)
def read_yaml(self ) -> dict:
with open(self.yml_cfg_file, "r", encoding="utf-8") as f:
content = f.read() # conent 读出来是字符串
d = yaml.load(content, Loader=yaml.FullLoader) # 用load方法转字典
return d
def write_rtv_yaml(self, d: dict):
with open(self.retrieve_cfg_file, "w", encoding="utf-8") as f:
yaml.dump(d, f)
def read_rtv_yaml(self ) -> dict:
with open(self.retrieve_cfg_file, "r", encoding="utf-8") as f:
content = f.read() # conent 读出来是字符串
d = yaml.load(content, Loader=yaml.FullLoader) # 用load方法转字典
return d
def get_retrieve(self) -> dict:
retrieve = {}
retrieve.update({"beginWL": BEGIN_WAVELENGTH})
retrieve.update({"endWL": END_WAVELENGTH})
retrieve.update({"interval": INTERVAL})
retrieve.update({"rowFactor": ROWFACTOR})
return retrieve
pass
ramses_buf_str= "\
23a0000007fefe0a0781067d067d068e0693069c069c06b006b506cb06e40619076607e1076c081509cd09bb0a7d0bee0b1d0c6d0cca0ca40ddc0f30135b18b4224d320e43f852c8\
23a0000006fefe17639c71c97c9484bb89358be98e5d98b1a37eadccb66abd26be31b97db124aa18a3f29c0499349735968e93a48eea8a028bc28cec8d048f1c92c096de9ab99d43\
23a0000005fefee0a157a9ecb1b1b97dc034c507c741c7d2c65ec550c20dbde9b535ae56a60a9e2296cd8ee887278129798170c669b16503632e61605f3a5def5a8e5862561154be\
23a0000004fefe3c51f54dda4a0c48634595426a3f5a3cc539903767362b36cc351f356634b633fc32c4310630fb2ec32fe63199349037e03ac03dc03eae3c303a9639d13a413da7\
23a0000003fefe97412746bc49404caa4dc54d374ca646d63bde326b332739e43c503d2b3c363aca37ef342d32c22f782d1d2bd328ec250222101e691b2b1a7119d3184018fa174d\
23a0000002fefed3177a17e3160616f81423149313f11233126711d8103b10a40f160f8a0efb0d580d660c6f0bd80aa10a580a000ab4099b0994097109e2082c087a0736072c077d\
23a0000001fefe2a071e071607140718071e073c074d076a076e076b076007670763076c0760075c073d07350724071207fb06ef06d706cc06b706a506960684067b0672066306a2\
23a0000000fefe58065406500642064e064306470642063f064806410644064306430641064206460640063c063e063e063d064406430644063c063c063c063c06400640064906ed\
23a0000007fefe0a071b071c07260737073e0749075907650774078b07c0072c08e3082b0ada0be80d9c107b147318931ae51add1a271a77192f1bfb1d99207c265c30c738f03d53\
23a0000006fefe07438f489d4d8452d957945cff639171a5832a97deab7fbe09c86cc5acb9d5ab299e90915287de7f8b7ae275ed6f056aff664f662665bc63936335655767926879\
23a0000005fefec269206d3e724377fe7b7a8050831f85b68637881689e4884787008580823d7f887bee773d7496702a6cde654c5f895a1f570d5416514d4e9d4bde4897468c44c3\
23a0000004fefe71421640db3dc83bbb39533777346c31b92e912c152b5b2aff292129e727cb26d925fd249223b4214020da1fe91ff41f28209420dc201520071e671c221c8d1cfe\
23a0000003fefecd1dd31fe72164235924cb24b924f72331211e1ca018ef19221d121f621fe91e081ed51c761b311a2f193c18651788166015a013de11d1106e1041101810e80f2e\
23a0000002fefee50fd90fbc0f6d0ff70e610ee00d930d460de40c900c450c010cbd0b7c0b480bfc0aab0a2c0a9e094d092b09fb08d008a208990881087d083908e6078d07660747\
23a0000001fefe5b075a07500751074d074e0751075d076807730788077e077c077c07810777077a076c0765075c075607480740073607270723070d070d070b07ff06fd06f0062f\
23a0000000fefef606f106ed06f506ef06eb06f106ec06f006e906e806ed06e606ef06e506ea06ec06ee06eb06e906ee06f006ef06ea06e906e606e606e606ec06ea06ea06f506f2\
23a0000007fefe0605830479047d047e04810482048204850487048b048c04850487048c049304950498049c04a804a904b604b804c604d004e104f104190546059805ff059a06bb\
23a0000006fefe90073209ea0b7610c117cc22b2324a487b645e8798acf2c927d28dc1f2a1ac809664804e543d7a308327a321d81dab1b0f1bca1bb41dba2098243329382e773335\
23a0000005fefeca38213e544329486f4c1c500653335592564f577d573b57a556b4557e540a534451424f004d714a9b47994458410e3e9c3af8368c33b630982eca2c052b3429ae\
23a0000004fefe632763255a234821321f0e1d061b291983171e16d814a91379124b1138104b0f610e990dd80c240c880bfc0a7b0af8097709020990082508de07c507ba07a50762\
23a0000003fefe950781076407460727070007d306ab066e06270605060d0614061306fe05e805d105b405a00586057105630549053d0528051105fd04f304ee04e404dc04dd04c3\
23a0000002fefed804d904d004c604bf04b904b904b104a804a604a6049d04980496048f04970491048c04880486047e0484047a047d047b047c0478047a04760476047004700430\
23a0000001fefe6f0474046c046d0472046d047304750470046e04760472046f047604700473046f04730470047504700470046d046b047004710470046e046d046a046b046904e4\
23a0000000fefe690470046e046b046c04680468046e0466046a046a0469046b046d04640466046c046c046b046a04660466046b046c046a046a0468046f046804740471048d0417\
"
if __name__ == "__main__":
cfg = MyConfig()
cfg.addDeviceID(2)
cfg.addDeviceID(3)
cfg.setDeviceType(DeviceType.AWRAMS)
cfg.setDeviceID(2)
cfg.getSystemCfg()
print(cfg.system_cfg)
d = {"1":"8888","2":["7777"],"3":["9999"]}
cfg.setCfgRamsesSN(d)
print("修改后。。。。。\n")
print(cfg.system_cfg)
# cfg.write_yaml( cfg.system_cfg)
dd = cfg.read_yaml()
# dd 作为cfg.system_cfg 使用
for k,v in dd.items():
print(k)
print(type(k))
retrieve = {
"beginWL": 350,
"endWL": 950,
"interval": 1,
"rowFactor": 0.026
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,526 @@
#!/usr/bin/env python
# coding:utf-8
'''
# 因为图片帧不是必须,必须按帧处理数据。 可能摄像头坏掉,没有传感器数据??
# 按帧处理数据,必须在每帧接收完毕判断,数据是否完整, 完整则进一步处理 !!!!!!!!!!!!
# 时间作为目录
'''
import socket
import socketserver
from socketserver import TCPServer,ThreadingMixIn
import threading
# import datetime
import time
# import os
import struct
from tools.mypath import MyDir
from tools.mylogger import log
from pathlib import Path,PurePath
from myconfig import DATA_DIR,DeviceType
from awrams import AWRAMS
IP = ""
PORT = 7887
ADDRESS = (IP, PORT) # 绑定地址
# LOGGING_LEVEL = logging.DEBUG
# LOGGING_LEVEL = logging.INFO
# LOGGING_LEVEL = logging.WARNING
DATA_FRAME_HEAD = b'\x11\x13\x55\xaa'
DATA_FRAME_TAIL = b'\xff\xd9'
PIC_BEGIN_BYTES = b'\xff\xd8'
# 连接超时
TIMEOUT_SECOND = 8 * 3600
# 连接线程池
conn_pool = []
# save_path = Path
class MyTCPServer(TCPServer):
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, cfg=None, retrieve=None):
self.cfg = cfg
self.retrieve = retrieve
TCPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate=True )
class MyThreadingTCPServer(ThreadingMixIn, MyTCPServer): pass
class MyException(Exception):
def __init__(self, message="自定义异常"):
self.message = message
class illumination_sensor:
def __init__(self, socket: socket.socket) -> None:
self.__buf = b''
self.__head = {
# "id" : -1, # 设备id
# 'type' : -1, # 类型 信息 传感器 图片
# 'num' : -1, # 光学传感器的第几次测量
# 'con' : -1, # 总的测量序号
# 'size' : -1, # 字节大小
# 'packet_con' : -1, # 第几帧
# 'packet_all' : -1, # 总帧数
# 'head' : b'', # 帧头
# 'payload' : b'' # 具体内容
}
self.state = 0
self.socket = socket
self.id = 0
# self.is_data_complete = {
# "info_frame": False,
# 'sensor_frame': False,
# 'pic_frame': False
# }
# self.data = {
# "info_frame": {},
# 'sensor_frame': {},
# 'pic_frame': {}
# }
self.timeout_base = int(time.time())
def set_id(self, id) -> None: # 对应设备ID
self.id = id
# def set_socket(self,socket:socket.socket) -> socket.socket:
# tmp = self.socket
# self.socket=socket
# return tmp
def read_buf(self, size: int) -> bytes:
if size > self.__buf.__len__():
return b''
ret = self.__buf[0:size]
self.__buf = self.__buf[size:]
return ret
def write_buf(self, buf: bytes) -> None:
id = self.id
len = buf.__len__()
# logging.info(f'Received ID:{id} Size:{len}')
self.__buf = self.__buf+buf
def get_buf_size(self) -> int:
return self.__buf.__len__()
def back_bytes(self, buf: bytes) -> None:
self.__buf = buf+self.__buf
def reset_head(self) -> None:
self.__head = {}
# self.__head['id'] = -1
# self.__head['type'] = -1
# self.__head['num'] = -1
# self.__head['con'] = -1
# self.__head['size'] = -1
# self.__head['packet_con'] = -1
# self.__head['packet_all'] = -1
# self.__head['head'] = b''
# self.__head['payload'] = b''
def reset_data(self) -> None:
self.data['info_frame']: dict = {}
self.data['sensor_frame']: dict = {}
self.data['pic_frame']: dict = {}
def decode(self) -> dict:
if self.__head == {}:
while self.get_buf_size() >= 15:
if self.read_buf(1) != b'\x11':
continue
c = self.read_buf(1)
if c != b'\x13':
self.back_bytes(c)
continue
c = self.read_buf(1)
if c != b'\x55':
self.back_bytes(c)
continue
c = self.read_buf(1)
if c != b'\xaa':
self.back_bytes(c)
continue
head = self.read_buf(11)
head_list = struct.unpack('<HBIHBB', head)
self.__head['id'] = head_list[0]
self.__head['type'] = head_list[1] >> 4
self.__head['num'] = head_list[1] & 0x0f
self.__head['con'] = head_list[2]
self.__head['size'] = head_list[3]
self.__head['packet_con'] = head_list[4]
self.__head['packet_all'] = head_list[5]
self.__head['head'] = b'\x11\x13\x55\xaa'+head
break
if self.__head != {}:
payload = self.read_buf(self.__head['size'])
if payload != b'':
self.__head['payload'] = payload
data = self.__head.copy()
self.__head = {}
self.id = data['id']
return data
return {}
class DealData:
"""
@description : 调用AWRAMS类处理数据
@param :
@Returns :
"""
def __init__(self) -> None:
self.device_id = None
self.devie_type = DeviceType.AWRAMS.name
self.measure_id = None
self.cfg = {}
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 = AWRAMS() ##处理数据
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_Online()
log.info(f" Complete Dealing one group.")
# self.awrams.readOneFolder( )
@staticmethod
def deal2(id: int, con: int) -> None: # 取字典中的 payload
log.info(f" 修改目录为时间格式,并处理 device_id: {id}, measure_con: {con} ")
src_dir = DATA_DIR.joinpath( str(id), str(con) )
bin_file_list = src_dir.glob( '*.bin' )
info_frame= DealData.read_bin( src_dir.joinpath('info.bin') )
if info_frame == None:
raise MyException("处理数据时,信息帧读取数据为空")
info_dict:dict= DealData.decode_info(info_frame)
if info_dict =={}:
raise MyException("从文件读取信息帧后,解析信息帧遇到异常")
# id/year/month/day/con
dst_dir = DATA_DIR.joinpath("20"+str(info_dict["year"]), str(info_dict["month"]),str(info_dict["day"]), str(con))
log.info( f"dst_dir: {dst_dir}")
if dst_dir.exists() == False:
dst_dir.mkdir(parents=True)
# 保存info_dict到新的目录
DealData.save_dict_to_file(info_dict, dst_dir.joinpath(
"info_20"+str(info_dict["year"])
+str(info_dict["month"])+"_"
+str(info_dict["day"])+"_"
+str(info_dict["hour"])+"_"
+str(info_dict["minute"])+"_"
+str(info_dict["second"])+"_"
+".txt"))
log.info(f" Src File path: {bin_file_list}" )
# 将bin文件存到新的目录
for bfl in bin_file_list:
fname_without_path= bfl.name
new_path = None
if fname_without_path == "pic.bin":
new_path = dst_dir.joinpath("pic.jpg" )
else:
new_path= dst_dir.joinpath( fname_without_path )
bfl.replace(new_path )
# shutil.move( bfl, new_path )
pass
# 判断目录是否为空,删除旧的目录
flist = src_dir.glob('*.*')
try:
next(flist)
log.warning(" 旧的文件夹还存在文件,不能删除,请仔细检测! ")
raise MyException("旧的文件夹还存在文件,不能删除,请仔细检测!")
except StopIteration:
src_dir.rmdir()
if DealData.check_spectrum_data(dst_dir):
log.warning(" 目录光谱数据有异常 ")
raise MyException(f"{dst_dir} 目录光谱数据有异常")
pass
DealData.calibrate_spectrum_data(dst_dir)
DealData.retrieve_data(dst_dir)
@staticmethod
def read_bin(fpath:Path):
ret = None
if fpath.exists() == False:
log.warning(f"not find file: {fpath} ")
return ret
ret = fpath.read_bytes()
# with open( fpath, 'rb') as file:
# ret = file.read()
# return ret
return ret
pass
@staticmethod
def decode_info(info: bytes) -> dict:
ret = {}
try:
temp = struct.unpack( "<BBBBBBHHHHHHIIHHHHHBBBHHIfffIIIII", info )
except Exception as e:
log.info( "decode info 有误, 收到info frame 字节有误" )
return ret
time_ = "20"+str(temp[0]) + "-" + str(temp[1]) + "-" + str(temp[2]) + " " \
+ str(temp[3]) + ":" + str(temp[4]) + ":" + str(temp[5])
ret.update({"time": time_})
ret.update({"year": temp[0]})
ret.update({"month": temp[1]})
ret.update({"day": temp[2]})
ret.update({"hour": temp[3]})
ret.update({"minute": temp[4]})
ret.update({"second": temp[5]})
ret.update({"Roll": temp[6]})
ret.update({"Pitch": temp[7]})
ret.update({"Yaw": temp[8]})
ret.update({"Hx": temp[9]})
ret.update({"Hy": temp[10]})
ret.update({"Hz": temp[11]})
ret.update({"lon": temp[12]})
ret.update({"lat": temp[13]})
ret.update({"satelite_num": temp[14]})
ret.update({"PDOP": temp[15]})
ret.update({"HDOP": temp[16]})
ret.update({"VDOP": temp[17]})
ret.update({"Temperature": temp[18]})
ret.update({"Humidity": temp[19]})
ret.update({"Battery": temp[20]})
ret.update({"ErrorCode": temp[21]})
ret.update({"Azimuth": temp[22]})
ret.update({"RunAngle": temp[23]})
ret.update({"MeasuyeGroupNum": temp[24]})
ret.update({"Tiltx": temp[25]})
ret.update({"Tilty": temp[26]})
ret.update({"Depth": temp[27]})
ret.update({"Sensor1": hex(temp[28])[2:].upper()}) # 28 27 转16进制
ret.update({"Sensor2": hex(temp[29])[2:].upper()}) # 30 29
ret.update({"Sensor3": hex(temp[30])[2:].upper()}) # 32 31
ret.update({"Measure_Num": temp[31]}) # 33
ret.update({"Measure_Interval": temp[32]}) # 34
ret.update({"Measure_Repeat": temp[33]}) # 35
return ret
pass
@staticmethod
def save_dict_to_file(info_dict:dict, fpath:Path) ->None:
temp_str = ""
for key, value in info_dict.items():
temp_str = temp_str + key + " : " + str(value) + "\n"
with open(fpath, "w+") as f:
f.write(temp_str)
ret = None
if fpath.exists() == False:
log.info(f"not find file: {fpath} ")
return ret
with open(fpath, 'rb') as file:
ret = file.read()
return ret
return ret
pass
@staticmethod
def check_spectrum_data(dst_dir:Path):
# 判断目录下是否有 0.bin ...15.bin 文件
sensor_file_list = dst_dir.glob( '*[0-9].bin' )
fname_without_ext = []
for fl in sensor_file_list:
temp = fl.stem
if not temp.isdigit:
log.warning( f" {dst_dir} 目录光谱文件的文件名 {temp} 不为数字,type:{type(temp)},请检查异常" )
return False
fname_without_ext.append( int(temp) )
if len(fname_without_ext) ==0:
log.warning( f" {dst_dir} 目录没有发现光谱文件,请检查异常" )
return False
# 排序,然后检查是否有遗漏项
fname_without_ext.sort()
for i in fname_without_ext:
if fname_without_ext[i] !=i:
log.warning( f" {dst_dir} 目录,序号{i}光谱文件的文件名没有发现,请检查异常" )
return False
return False
pass
@staticmethod
def calibrate_spectrum_data(dst_dir):
'''
用ini back 等文件获得标定后数据
'''
log.info("calibrate_spectrum_data.... ")
pass
@staticmethod
def retrieve_data(dst_dir):
'''
反演遥感反射率等参数
'''
log.info(" retrieve_data.... ")
pass
def save(self,data: dict) -> None:
log.info(f"save .....to first dir {str(data['con'])} - type:{data['type']} - num {data['num']}")
# 路径 传感器id/测量序号(唯一) -- 处理数据时候改时间
saveDir = DATA_DIR.joinpath(str(data['id']), str(data['con']) )
if saveDir.exists() == False:
saveDir.mkdir(parents=True)
if data['type'] == 0:
log.debug( f" {data['type']} - {data['num']}")
fpath = saveDir.joinpath("info.bin")
fpath.write_bytes( data['payload'] )
elif data['type'] == 1:
log.debug( f" {data['type']} - {data['num']}")
fpath = saveDir.joinpath( str(data['num'])+".bin")
fpath.write_bytes( data['payload'] )
elif data['type'] == 2:
log.debug( f" {data['type']} - {data['num']}")
fpath = saveDir.joinpath( "pic.bin" )
fpath.write_bytes( data['payload'] )
else:
pass
# class MyServer(socketserver.BaseRequestHandler):
class MyServer(socketserver.BaseRequestHandler):
def setup(self) -> None:
log.debug(f"retrieve {self.server.retrieve}",__name__, "", "" )
self.cfg =self.server.cfg
self.retrieve =self.server.retrieve
self.sk: socket.socket = self.request
self.sensor = illumination_sensor(self.request)
self.dealData = DealData()
self.begin_time = time.time()
conn_pool.append(self.client_address)
pass
def handle(self) -> None:
log.info('... connected from {}'.format(self.client_address),'__name__')
while True:
# self.request.recv 方法接收客户端发来的消息
try:
data_byte = self.sk.recv(1000)
except ConnectionResetError as e:
log.warning(
f"recv ConnectionResetError, client {self.client_address} had close .....")
break
except:
log.warning(" sk.recv(1000) exception .....")
pass
log.debug(len(data_byte))
# 客户端主动关闭连接后,会不断接收b'', 所以跳出循环,运行到程序结尾,自动关闭线程
if data_byte == b'':
log.info(
" b'' is received , maybe client {self.client_address} had close. ")
self.sk.close()
if hasattr(self, "sensor"):
del self.sensor # 销毁对象
break
else:
break
continue
else:
self.sensor.write_buf(data_byte)
data_byte = b'' # 客户端掉线后以前数据不长居内存
try:
data_ = self.sensor.decode()
except MyException as e:
log.warning(e)
break
except Exception as e:
log.warning("decode data 出现异常 ")
log.warning(e)
break
if data_ != {}:
id = data_['id']
data_code = data_['type']
log.info(f'Received From ID:{id} DATA CODE:{data_code}')
# 保存当前数据
self.dealData.save(data_)
head = data_['head']
log.info(f'Head :{head}')
# 返回head给服务器
self.sk.send(data_['head'])
# 判断是否是最后一帧, 修改目录为时间格式并
if data_["packet_con"] == data_["packet_all"]:
log.info(f'最后一帧数据已经收到并保存')
# id 为传感器测量id ,con 测量序号
self.dealData.deal(data_['id'], data_["con"], self.cfg, self.retrieve)
pass
if time.time() - self.begin_time > TIMEOUT_SECOND:
log.info(f'Received data timeout')
break
def finish(self) -> None:
# 什么时候执行 finish
# 执行handle 出现意外错误时执行 finish,或handle break时执行 finish
# 关闭连接
if self.sk:
self.sk.close()
# conn_pool 连接池销毁
if self.client_address in conn_pool:
conn_pool.remove(self.client_address)
log.info(
f"finish(): stop one socket from client {self.client_address} ")
if __name__ == '__main__':
server_ = socketserver.ThreadingTCPServer(ADDRESS, MyServer)
log.info('listening...........')
try:
server_.serve_forever()
except KeyboardInterrupt:
log.info(" Ctrl+C 退出主程序 ")
server_.server_close()
except Exception as e:
log.info(" 系统异常, 如下: \n ")
log.info(e)
# 有闪退,可以用线程将server_.serve_forever 包起来
# threading.Thread(target=server_.serve_forever).start()

@ -0,0 +1,4 @@
beginWL: 350
endWL: 950
interval: 1
rowFactor: 0.026

@ -0,0 +1,11 @@
class TCPIPException(Exception):
def __init__(self, message="TCPIP 自定义异常"):
self.message = "TCPIP exception : " + message
class SerialException(Exception):
def __init__(self, message="Serial 自定义异常"):
self.message = "serial exception : " + message
class MyException(Exception):
def __init__(self, message=" 自定义异常"):
self.message = "自定义异常: " + message

@ -0,0 +1,285 @@
# coding=utf-8
'''
单例模式日志 -- 使用一次关闭 handler
这种方法优缺点
缺点 输出的format 需要自己定义 并过滤
过滤要看是否以什么开头或包含什么
优点 不占用文件资源占用系统资源小
调用 log.info( ) log.error()
'''
import logging
import logging.handlers
import os
import time
import threading
# from config import LOG_PATH,LOG_LEVEL,LOG_ENABLED,LOG_FORMAT, \
# LOG_TO_CONSOLE,LOG_TO_FILE
MY_LOGGER_NAME = "DefaultLogger"
LOG_ENABLED = True # 是否启用日志
LOG_TO_CONSOLE = True # 是否启用控制台输出日志
LOG_TO_FILE = False # 是否启用文件输出
LOG_COLOR_ENABLE = True # 是否启用颜色日志
LOGGER_DIR = "logs"
LOGGER_PATH = os.path.join( os.path.dirname(__file__), LOGGER_DIR )
LOGGER_FILENAME = os.path.join( LOGGER_PATH, 'logs.log' )
"""
logging.INFO , logging.DEBUG , logging.WARNING , logging.ERROR ,
"""
LOG_LEVEL = logging.INFO # 日志等级DEBUG INFO WARNIG ERROR
# LOG_LEVEL = logging.DEBUG
# LOG_LEVEL = logging.WARNING
"""
# LOG_FORMAT = " %(name)s - %(module)s - %(filename)s - %(lineno)d | %(levelname)s : %(message)s"
# LOG_FORMAT = "%(levelname)s - %(asctime)s - process: %(process)d - threadname: %(thread)s " \
# "- %(filename)s - %(funcName)s - %(lineno)d - %(module)s " \
# "- %(message)s "
# LOG_FORMAT = "%(asctime)s - %(thread)s " \
# "- %(levelname)s ::: %(message)s "
# '[%(asctime)s] |%(thread)s| %(levelname)-6s: %(message)s'
# fm = '%(levelname):%(levelno)s:%(name)s:%(funcName)s:%(asctime):%(pathname):%(filename):%(module):%(thread):%(threadName)'
# 此处日志颜色,修改日志颜色是通过 Filter实现的
"""
LOG_FORMAT = '%(levelname)s\t[%(asctime)s] %(package)s:%(classname)s:%(funcname)s \t>> %(message)s'
"""
# 此处日志颜色,修改日志颜色是通过 Filter实现的
"""
LOG_FORMAT_COLOR_DICT = {
'ERROR' : "\033[31mERROR\033[0m",
'INFO' : "\033[36mINFO\033[0m",
'DEBUG' : "\033[1mDEBUG\033[0m",
'WARN' : "\033[33mWARN\033[0m",
'WARNING' : "\033[33mWARNING\033[0m",
'CRITICAL': "\033[35mCRITICAL\033[0m",
}
"""
# Filter 用法, 以package class function 过滤 __package__ __class__
# log.error( f"{__package__}::{__class__.__name__}::{sys._getframe().f_code.co_name} >> ")
# log.error( f"PacakgeName::ClassName::FunctionName:: ")
# LOGGER_FILTER_PACKAGE=[] 为空, 则Filter不起作用
# 不为空,则只显示定义的报名
# LOGGER_FILTER_CLASS=[] 为空, 则Filter不起作用
# 不为空,则只显示定义的类或
# LOGGER_FILTER_FUNCNAME=[] 为空, 则Filter不起作用
# 不为空,则只显示定义的函数
"""
# LOGGER_FILTER_PACKAGE = [ "test_logger" ] # 包名,文件名去 .py??
LOGGER_FILTER_PACKAGE = [ ]
LOGGER_FILTER_CLASS = [ ] # 类名,文件名去 .py??
# LOGGER_FILTER_CLASS = [ "LogTest" ]
# LOGGER_FILTER_FUNCNAME = [ "test1","test" ] # 函数名
LOGGER_FILTER_FUNCNAME = [ ]
LOGGER_FILTER_LEVELNAME = [ ] # INFO DEBUG WARNING
class PackageFilter(logging.Filter):
def __init__(self, filter_word:list = []):
self.filter_word = filter_word
pass
def filter(self, record: logging.LogRecord) -> bool:
if self.filter_word is not None:
return record.package in self.filter_word
class ClassFilter(logging.Filter):
def __init__(self, filter_word:list = []):
self.filter_word = filter_word
pass
def filter(self, record: logging.LogRecord) -> bool:
if self.filter_word is not None:
return record.classname in self.filter_word
pass
class FunctionFilter(logging.Filter):
def __init__(self, filter_word:list = []):
self.filter_word = filter_word
pass
def filter(self, record:logging.LogRecord) -> bool:
if self.filter_word is not None:
return record.funcname in self.filter_word
class LevelNameFilter(logging.Filter):
def __init__(self, filter_word:list = []):
self.filter_word = filter_word
pass
def filter(self, record:logging.LogRecord) -> bool:
if self.filter_word is not None:
return record.levelname in self.filter_word
class ColorFilter(logging.Filter):
def __init__(self,):
pass
def filter(self, record: logging.LogRecord) -> bool:
record.levelname = LOG_FORMAT_COLOR_DICT.get(record.levelname)
return True
class Log(object):
_instance_lock = threading.Lock()
def __new__(cls, *args, **kwargs):
if not hasattr(Log, "_instance"):
with Log._instance_lock:
if not hasattr(Log, "_instance"):
Log._instance = object.__new__(cls)
return Log._instance
def __init__(self, loggername = "DefaultLog" ):
# 文件命名 os.path.join(): 将多个路径组合后返回
self.logger_filepath = LOGGER_FILENAME
self.loggername = loggername
self.level = LOG_LEVEL
# 日志输出格式
fm = LOG_FORMAT
self.formatter = logging.Formatter( fm )
# 生成记录器对象
self.logger = logging.getLogger( self.loggername )
self.logger.setLevel(LOG_LEVEL)
# 日志过滤
self.__add_filter()
def __console(self, level, message, extra={} ):
# 添加 handler
self.__add_handler()
# 判断日志级别
if level == logging.INFO:
self.logger.info( message, extra=extra)
elif level == logging.DEBUG:
self.logger.debug(message,extra=extra)
elif level == logging.WARNING:
self.logger.warning(message,extra=extra)
elif level == logging.ERROR:
self.logger.error(message,extra=extra)
# removeHandler在记录日志之后移除句柄,避免日志输出重复问题
self.__remove_handler()
# if LOG_TO_FILE and self.file_handler:
# self.logger.removeHandler(self.file_handler)
# # 关闭打开的文件
# self.file_handler.close()
# if LOG_TO_CONSOLE and self.stream_handler:
# self.logger.removeHandler(self.stream_handler)
# # 关闭打开的文件
# self.stream_handler.close()
pass
# debug < info< warning< error< critical
# debug模式
def debug(self, message, package="Unknown", classname="Unknown", funcname="Unknown" ):
self.__console(logging.DEBUG, message, extra={"package":package, "classname":classname, "funcname":funcname} )
# self.__remove_handler()
# info模式
def info(self, message, package="Unknown", classname="Unknown", funcname="Unknown" ):
self.__console(logging.INFO, message, extra={"package":package, "classname":classname, "funcname":funcname} )
# self.__remove_handler()
# warning模式
def warning(self, message, package="Unknown", classname="Unknown", funcname="Unknown"):
self.__console(logging.WARNING, message, extra={"package":package, "classname":classname, "funcname":funcname} )
# self.__remove_handler()
# error模式
def error(self, message, package="Unknown", classname="Unknown", funcname="Unknown"):
self.__console(logging.ERROR, message, extra={"package":package, "classname":classname, "funcname":funcname} )
# self.__remove_handler()
def __add_filter(self ):
if len( LOGGER_FILTER_PACKAGE ) > 0 :
self.logger.addFilter( PackageFilter( filter_word=LOGGER_FILTER_PACKAGE ) )
if len( LOGGER_FILTER_CLASS ) > 0 :
self.logger.addFilter( ClassFilter( filter_word=LOGGER_FILTER_CLASS ) )
if len( LOGGER_FILTER_FUNCNAME ) > 0 :
self.logger.addFilter( FunctionFilter( filter_word=LOGGER_FILTER_FUNCNAME ) )
if len(LOGGER_FILTER_LEVELNAME) > 0 :
self.logger.addFilter( LevelNameFilter( filter_word=LOGGER_FILTER_LEVELNAME ) )
def __add_handler(self ):
if LOG_ENABLED and LOG_TO_FILE:
# 考虑使用 RotatingFileHandler TimedRotatingFileHandler防止日志过大
# RotatingFileHandler("test", "a", 4096, 2, "utf-8")
# TimedRotatingFileHandler(filename=LOG_PATH+"thread_", when="D", interval=1, backupCount=7)
self.file_handler = logging.handlers.TimedRotatingFileHandler(filename=self.logger_filepath, when='D', interval=1, backupCount=30, encoding='utf-8')
# self.file_handler = logging.FileHandler( self.logger_filepath, encoding='utf-8' )
self.file_handler.setFormatter( self.formatter )
# self.file_handler.setLevel( LOG_LEVEL )
# if LOG_COLOR_ENABLE: # 文件日志无需加彩色
# self.file_handler.addFilter( ColorFilter( ) )
self.logger.addHandler(self.file_handler)
if LOG_ENABLED and LOG_TO_CONSOLE:
# 创建一个StreamHandler,用于输出到控制台
self.stream_handler = logging.StreamHandler()
self.stream_handler.setFormatter(self.formatter)
# self.stream_handler.setLevel( LOG_LEVEL )
if LOG_COLOR_ENABLE:
self.stream_handler.addFilter( ColorFilter( ) )
self.logger.addHandler(self.stream_handler)
def __remove_handler(self ):
if LOG_TO_FILE and self.file_handler:
self.logger.removeHandler(self.file_handler)
if len(self.logger.handlers)>0:
self.logger.handlers.pop()
# 关闭打开的文件
self.file_handler.close()
if LOG_TO_CONSOLE and self.stream_handler:
self.logger.removeHandler(self.stream_handler)
if len(self.logger.handlers)>0:
self.logger.handlers.pop()
# 关闭控制台
self.stream_handler.close()
def __remove_handler2(self ):
if LOG_ENABLED and LOG_TO_CONSOLE:
self.logger.removeHandler(self.stream_handler)
self.logger.handlers.pop()
# 关闭控制台
self.stream_handler.close()
if LOG_ENABLED and LOG_TO_FILE:
self.logger.removeHandler(self.file_handler)
self.logger.handlers.pop()
# 关闭打开的文件
self.file_handler.close()
log = Log( loggername = "DefaultLog")
"""
filename: 指定日志文件名
filemode: 和file函数意义相同指定日志文件的打开模式wa
format: 指定输出的格式和内容format可以输出很多有用信息显示的条目可以是以下内容
%(levelname) 日志级别的名字格式
%(levelno)s 日志级别的数字表示
%(name)s 日志名字 loggername
%(funcName)s 函数名字
%(asctime) 日志时间可以使用datefmt去定义时间格式如上图
%(pathname) 脚本的绝对路径
%(filename) 脚本的名字
%(module) 模块的名字
%(thread): thread id
%(threadName) 线程的名字
"""
"""
文件名行号 函数名, 要在调用的时候想办法了
# 绝对路径
print( __file__ )
print( sys.argv[0] )
# 文件名
print( os.path.basename(__file__) )
print( os.path.basename(sys.argv[0]) )
self.__class__.__name__
self.__class__.__name__, get_current_function_name()
logger名 __name__
"""

@ -0,0 +1,265 @@
from pathlib import PurePath, Path
# from myconfig import NEWLINE,TOKEN,SEPARATOR
"""
"""
class MyDir(object):
"""
操作方法:设置base tuple_dir header
设置的是路径, 文件名要 ifNotNewFile 传入
"""
def __init__(self) -> None:
self.base_dir = Path()
self.dir_tuple = ()
self.header = []
self.header_str = ""
self.content = []
self.content_str = ""
self.current_dir = None
self.current_filepath = None
pass
def getDir(self,):
return self.current_dir
pass
def setBaseDir(self, dir: Path):
self.base_dir = dir
self.current_dir = self.base_dir
pass
def setDir(self, t:tuple=()):
self.dir_tuple = t
if len(self.dir_tuple) == 0 :
self.current_dir = self.base_dir
else:
self.current_dir = self.base_dir.joinpath( *t )
pass
def getDirFromBaseAndTuple(self, base_dir:Path, dir_tuple: tuple):
'''外部调用返回路径'''
ret_path = base_dir
t = dir_tuple
if len(t) == 0 :
ret_path = ret_path
else:
ret_path = ret_path.joinpath( *t )
return ret_path
pass
def setHeader(self, headerlist:list, headerSeperator: str = ";", headerinfo: str = None):
header_str = ""
if len(headerlist) == 0:
return
if headerinfo != None:
header_str = headerinfo + headerSeperator
for hl in headerlist:
header_str = header_str + str(hl) + headerSeperator
self.header_str = header_str[:-1]
pass
def setContent(self, contentlist: list, contentSeperator: str = ";", contentinfo: str = None):
content_str = ""
if len(contentlist) == 0:
return
if contentinfo != None:
content_str = contentinfo + contentSeperator
tmp_str = ""
for cl in contentlist:
tmp_str = tmp_str + str(cl) + contentSeperator
self.content_str = content_str + tmp_str[:-1]
pass
def newDirIfNot(self,) -> None:
# self.current_path = self.base_path.joinpath(self.path_tuple)
self.current_dir.mkdir(parents=True, exist_ok=True)
pass
def newFileIfNot(self, fname: str) -> None:
self.newDirIfNot()
self.current_filepath = self.current_dir.joinpath(fname)
if not self.current_filepath.exists():
with open(self.current_filepath, 'a') as f:
pass
return
pass
def getCurrentFileSize(self,):
return self.current_filepath.stat().st_size
def getFirstline(self,):
first_line = ""
with open(self.current_filepath, 'r') as f: # 打开文件
first_line = f.readline() # 取第一行
return first_line.strip('\n').strip('\r')
def checkHeader(self,) -> int:
'''
返回:
0 : 文件为空,可以直接写header
1 : header对应上 无需处理
-1: 需要提醒用户保存数据后,删除文件后再处理
'''
if self.getCurrentFileSize() == 0:
return 0
first_line = self.getFirstline()
# print(f"firstline: {first_line}" )
# print(f"header_str: {self.header_str}" )
if first_line == self.header_str:
return 1
return -1
pass
def writeHeader(self,) -> None:
with open(self.current_filepath, "a") as f:
f.write(self.header_str)
return None
pass
def writeContent(self,new_line="\n") -> None:
with open(self.current_filepath, "a") as f:
f.write(new_line+self.content_str)
return None
pass
def is_dir_empty(self, ):
'''文件夹是否为空'''
has_next = next(self.current_dir.iterdir(), None)
if has_next is None:
return True
return False
def is_file_empty(self,):
'''文件是否为空'''
if self.current_dir.stat().st_size ==0:
return True
return False
def deleteDir(self,):
'''文件夹是否为空'''
try:
if self.current_dir.exists():
self.current_dir.rmdir()
except OSError as e:
raise Exception(e)
return True
## 其他需求
def get_child_dir(self,) -> list:
ret = []
tmp_dir = self.current_dir.glob("**/")
for td in tmp_dir:
if td.is_dir():
ret.append(td.relative_to(self.current_dir))
return ret
pass
def get_child_dir_only(self,) -> list:
ret = []
for d in self.current_dir.iterdir():
if d.is_dir():
ret.append(d.relative_to(self.current_dir))
return ret
pass
def get_files_from_currentdir(self, fmt:str="*/*" ) -> list:
'''fmt: * */* */*/*'''
ret = []
tmp_dir = self.current_dir.glob(fmt)
print(tmp_dir)
for td in tmp_dir:
if td.is_file():
ret.append(td)
return ret
pass
def sort_dir_and_check( self, dirs:list ):
'''相对目录排序,目录最后一级'''
ret = []
if len(dirs) == 0:
return ret
tmp = {}
tmp_lst = []
for d in dirs:
last:str = d.parts[-1]
if last.isdigit() :
tmp.update( {last:d} )
tmp_lst.append(int(last))
pass
tmp_lst.sort()
for t in tmp:
ret.append(tmp.get(str(t)))
pass
return ret
def sort_filepath_and_check(self, path_files:list):
'''相对目录排序,目录最后一级'''
ret = []
if len(path_files) == 0:
return ret
tmp = {}
tmp_lst = []
for d in path_files:
last:str = d.stem
if last.isdigit() :
tmp.update( {last:d} )
tmp_lst.append(int(last))
pass
tmp_lst.sort()
for t in tmp:
ret.append(tmp.get(str(t)))
pass
return ret
def group_and_sort_filepath(self,path_files:list):
ret = {}
# dirs_lst = []
# len_files = len(path_files)
# if len_files == 0:
# return False
# for pf in path_files:
# pf_dir:str = pf.parts[-2]
# if pf_dir.isdigit() and int(pf_dir) not in dirs_lst:
# dirs_lst.append( int(pf_dir) )
# dirs_lst.sort()
def check_dirs(self, dirs:list, begin:int =0, step:int=1):
'''检查目录是否从begin开始递增'''
len_dirs = len(dirs)
if len_dirs == 0:
return False
for i in range(begin,len_dirs,step) :
if dirs[i].parts[-1] != str(i) :
return False
return True
def check_path_files(self,path_files:list,begin:int =0, step:int=1):
'''检查文件名从begin开始递增'''
len_files = len(path_files)
if len_files == 0:
return False
for i in range(begin,len_files,step) :
if path_files[i].stem != str(i) :
return False
return True
if __name__ == "__main__":
mp = MyDir()
mp.setBaseDir(Path())
print(mp.current_dir)
# t = ("test_dir","1","11")
t = ("test_dir", )
mp.setDir( t )
print(mp.current_dir)
cd = mp.get_child_dir_only()
c = mp.sort_dir_and_check(cd)
print(cd )
print(c )

@ -0,0 +1,66 @@
from datetime import datetime, timedelta
# import locale
# locale.setlocale(locale.LC_ALL, '')
TIME_STR = "2022-06-10 16:16:16"
STD_TIME_STR_FMT = "%Y-%m-%d %H:%M:%S" # 小写y是两位年份
CUR_TIME_STR_FMT = "%Y-%m-%d %H:%M:%S"
class MyTime(object):
"""
操作方法:设置base tuple_path header
"""
def __init__(self) -> None:
self.cur_time_str_fmt = "%Y-%m-%d %H:%M:%S"
self.std_time_str_fmt = "%Y-%m-%d %H:%M:%S"
self.cur_time_str = ""
self.std_time_str = ""
self.cur_datetime = ""
pass
def setCurrentTimeStrFmt(self, s):
self.cur_time_str_fmt = s
pass
def setStdTimeStrFmt(self, s):
self.std_time_str_fmt = s
pass
def setCurrentTimeStr(self, s):
self.cur_time_str = s
self.cur_datetime = datetime.strptime(self.cur_time_str, self.cur_time_str_fmt)
pass
def setStdTimeStr(self, s):
self.std_time_str = s
self.cur_datetime = datetime.strptime(
self.std_time_str, STD_TIME_STR_FMT)
pass
def Current2STD(self):
# self.cur_datetime = datetime.strptime(self.cur_time_str , CUR_TIME_STR_FMT)
self.std_time_str = datetime.strftime(
self.cur_datetime, STD_TIME_STR_FMT)
pass
def STD2Current(self, format: str):
# self.cur_datetime = datetime.strptime(self.std_time_str , STD_TIME_STR_FMT)
self.cur_time_str = datetime.strftime(
self.cur_datetime, CUR_TIME_STR_FMT)
pass
def timeDelta(self, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0):
self.cur_datetime = self.cur_datetime + \
timedelta(days=0, seconds=0, microseconds=0,
milliseconds=0, minutes=0, hours=0, weeks=0)
pass
if __name__ == "__main__":
s = "2023-02-07 14:02:46"
mt = MyTime()
mt.setCurrentTimeStr(s)
print(mt.cur_datetime)
pass
Loading…
Cancel
Save