|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
import numpy as np |
|
|
|
|
import struct |
|
|
|
|
import math |
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
from myconfig import TOKEN, DATA_DIR, FILE_MARK, OUTPUT_DIR, CAL_DIR |
|
|
|
|
from myconfig import PURE_WATER_FNAME,SAVE_EXT_NAME |
|
|
|
@ -40,6 +41,10 @@ class Viper(object): |
|
|
|
|
self.purewater_after_interp = None |
|
|
|
|
self.uart = Uart() |
|
|
|
|
self.uart_thread = Multithread() |
|
|
|
|
|
|
|
|
|
self.ui_sn = '' |
|
|
|
|
self.devicesn = '' |
|
|
|
|
self.filesn = '' |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
def set_cfg(self, cfg): |
|
|
|
@ -47,16 +52,6 @@ class Viper(object): |
|
|
|
|
self.ui_sn = self.cfg['device']['UISN'] |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
# def set_read_para(self, cfg): |
|
|
|
|
# self.cfg = cfg |
|
|
|
|
# self.ui_sn = self.cfg['device']['UISN'] |
|
|
|
|
# pass |
|
|
|
|
|
|
|
|
|
# def set_uart_para(self, cfg): |
|
|
|
|
# self.cfg = cfg |
|
|
|
|
# self.ui_sn = self.cfg['device']['UISN'] |
|
|
|
|
# pass |
|
|
|
|
|
|
|
|
|
def __set_msg(self, typ, d): |
|
|
|
|
self.msg = {} |
|
|
|
|
self.msg.update( {"type":typ} ) |
|
|
|
@ -75,8 +70,6 @@ class Viper(object): |
|
|
|
|
|
|
|
|
|
def get_begin_end(self,) -> list: |
|
|
|
|
# 读取配置文件 |
|
|
|
|
# print( "==============" ) |
|
|
|
|
# print( self.raw_wavelength ) |
|
|
|
|
for i in range( len(self.raw_wavelength)): |
|
|
|
|
print(f"i {i} {self.raw_wavelength[i]}") |
|
|
|
|
if self.raw_wavelength[i]<self.cfg['retrieve']['beginWL'] \ |
|
|
|
@ -241,6 +234,8 @@ class Viper(object): |
|
|
|
|
0 : 不变 |
|
|
|
|
1 : 加纯水衰减系数 |
|
|
|
|
''' |
|
|
|
|
log.info(f"... {self.cfg['algorithm']['PureWater']}",__name__,'correction_pure_water') |
|
|
|
|
# print( self.purewater_after_interp ) |
|
|
|
|
if self.cfg['algorithm']['PureWater'] == 0: |
|
|
|
|
return data |
|
|
|
|
pass |
|
|
|
@ -286,6 +281,8 @@ class Viper(object): |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
def wl_uart_thread(self, func)-> None: |
|
|
|
|
if self.devicesn == []: |
|
|
|
|
raise Exception(" 请读取设备序列号!!") |
|
|
|
|
self.res = b'' |
|
|
|
|
self.set_serial() |
|
|
|
|
self.uart_thread.remove_tasks() |
|
|
|
@ -296,21 +293,22 @@ class Viper(object): |
|
|
|
|
self.uart_thread.add_task( self.device_wl, args=() ) |
|
|
|
|
self.uart_thread.sequently_execute_tasks() |
|
|
|
|
self.uart_thread.remove_tasks() |
|
|
|
|
# self.uart_thread.add_task_2_act( ) |
|
|
|
|
# self.uart_thread.execute_one_act() |
|
|
|
|
self.raw_wavelength = self.convert_buf_2_float(self.res) |
|
|
|
|
# 获得截取的开始 结束点 |
|
|
|
|
self.get_begin_end() |
|
|
|
|
self.get_output_wavelength() |
|
|
|
|
msg = "起始波长 : "+str(self.output_wavelength[0]) +" , 结束波长 : "+ str(self.output_wavelength[-1]) |
|
|
|
|
log.info(msg) |
|
|
|
|
self.__set_msg ("notice", msg ) |
|
|
|
|
pub.sendMessage(self.msg) |
|
|
|
|
func( self.output_wavelength ) |
|
|
|
|
# self.__set_msg( "wl", {} ) |
|
|
|
|
# pub.sendMessage("update", msg= self.msg) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def log_uart_thread(self, func)-> None: |
|
|
|
|
if self.output_wavelength == []: |
|
|
|
|
raise Exception("没有波长文件,请读取设备波长!!") |
|
|
|
|
# 准备测量,保存文件的准备 |
|
|
|
|
self.__prepare_for_save() |
|
|
|
|
|
|
|
|
|
self.res = b'' |
|
|
|
|
self.set_serial() |
|
|
|
|
self.uart_thread.remove_tasks() |
|
|
|
@ -329,8 +327,11 @@ class Viper(object): |
|
|
|
|
# 纯水系数校正 |
|
|
|
|
data = self.correction_pure_water( data ) |
|
|
|
|
data = data.tolist() |
|
|
|
|
# 浊度 纯水校正 |
|
|
|
|
func(data) |
|
|
|
|
# 保存文件 |
|
|
|
|
tm = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) |
|
|
|
|
self.mydir.setContent( data , TOKEN, tm ) |
|
|
|
|
self.mydir.writeContent() |
|
|
|
|
func(tm, data) |
|
|
|
|
|
|
|
|
|
def device_sn(self, func)-> None: |
|
|
|
|
self.res =b'' |
|
|
|
@ -338,9 +339,9 @@ class Viper(object): |
|
|
|
|
self.uart.connect() |
|
|
|
|
self.uart.write() |
|
|
|
|
self.res = self.uart.OneMeasure() |
|
|
|
|
sn = self.res[-6:-2].decode() |
|
|
|
|
self.devicesn = self.res[-6:-2].decode() |
|
|
|
|
self.res = b'' |
|
|
|
|
func( sn ) |
|
|
|
|
func( self.devicesn ) |
|
|
|
|
# pub.sendMessage("update",msg=self.msg) |
|
|
|
|
|
|
|
|
|
def device_wl(self, )-> None: |
|
|
|
@ -397,4 +398,7 @@ if __name__ == '__main__': |
|
|
|
|
|
|
|
|
|
# m = 1000 * math.log(10,math.e) / 150 |
|
|
|
|
# print(m) |
|
|
|
|
|
|
|
|
|
tm = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) |
|
|
|
|
print(tm) |
|
|
|
|
|
|
|
|
|