Files
HPI/library/config.py
tangchao0503 98cf134cca 第一次提交
1、hpi的可用代码;
2、修复了多次点击曝光后,福亮度数据错误的问题;
3、定标方式为大的蓝菲积分球的标准能量曲线,而不是基于asd的能量曲线;
2022-09-06 22:54:14 +08:00

515 lines
24 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 标准库
import traceback, os
# 三方库
import configparser
from PyQt5.QtCore import QObject, pyqtSignal
# 自己写的库
from library.dir_manager import DirManager
# class ConfigFile():
# def __init__(self):
# self.base_dir = get_path()
#
# self.log_dir = self.base_dir + '//log'
# self.create_directory(self.log_dir)
#
# self.corning_config_file = self.log_dir + '//corning_config.ini'
#
# self.read_config_file()
#
# self.signals = WorkerSignals()
# self.signals.image_signal.connect(self.image_record_param_changed)
# self.signals.spectral_signal.connect(self.spectral_record_param_changed)
#
#
# # 查看是否存在保存光谱和影像文件的目录,如果没有就创建
# def create_directory(self, directory):
# if not os.path.exists(directory):
# print('创建文件夹:', directory)
# os.makedirs(directory)
#
# # 读取配置文件,如果没有就创建
# def read_config_file(self):
# if os.path.exists(self.corning_config_file):
# '''
# 如果存在配置文件,就从配置文件中读取软件配置信息
# '''
# print('配置文件存在!')
#
# config = configparser.ConfigParser()
# config.read(self.corning_config_file)
#
# self.image_dir = config.get('image_record_param', 'image_dir')
# self.create_directory(self.image_dir)
# self.default_image_name = config.get('image_record_param', 'default_image_name')
# self.framerate = int(config.get('image_record_param', 'framerate'))
# self.exposure_time = int(config.get('image_record_param', 'exposure_time'))
# self.gain = int(float(config.get('image_record_param', 'gain')))
# self.frame_number = int(config.get('image_record_param', 'frame_number'))
#
# self.spectral_dir = config.get('spectral_record_param', 'spectral_dir')
# self.create_directory(self.spectral_dir)
# self.default_spectral_name = config.get('spectral_record_param', 'default_spectral_name')
#
# self.binning = int(config.get('bin', 'binning'))
# if self.binning == 1:
# self.start_column = int(config.get('bin', 'start_column_binning_1'))
# self.end_column = int(config.get('bin', 'end_column_binning_1'))
# self.start_row = int(config.get('bin', 'start_row_binning_1'))
# self.end_row = int(config.get('bin', 'end_row_binning_1'))
# elif self.binning == 2:
# self.start_column = int(config.get('bin', 'start_column_binning_2'))
# self.end_column = int(config.get('bin', 'end_column_binning_2'))
# self.start_row = int(config.get('bin', 'start_row_binning_2'))
# self.end_row = int(config.get('bin', 'end_row_binning_2'))
#
# # print(self.default_dir, self.binning, self.start_column, self.end_column, self.start_row, self.end_row)
#
# else:
# '''
# 1、如果不存在配置文件就建立配置文件
# 2、并且手动创建配置变量
# '''
# config = configparser.ConfigParser()
#
# # config.add_section('effective_window')
# # startRow = 339
# # endRow = 639
# # startColumn = 285
# # endColumn = 1649
#
#
# config.add_section('bin')
# config.set('bin', 'binning', '1')
#
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '1')
# config.set('bin', 'end_row_binning_2', '150')
#
# config.add_section('image_record_param')
# config.set('image_record_param', 'image_dir', self.base_dir + '/image')
# config.set('image_record_param', 'default_image_name', 'testimage')
# config.set('image_record_param', 'framerate', '20')
# config.set('image_record_param', 'exposure_time', '500')
# config.set('image_record_param', 'gain', '0')
# config.set('image_record_param', 'frame_number', '20')
#
# config.add_section('spectral_record_param')
# config.set('spectral_record_param', 'spectral_dir', self.base_dir + '/spectral')
# config.set('spectral_record_param', 'default_spectral_name', 'testspectral')
# # config.set('spectral_record_param', 'start_column_binning_1', '12')
#
# with open(self.corning_config_file, mode='w') as f:
# config.write(f)
# print('创建配置文件成功!')
#
# # 如果没有配置文件,就手动创建配置变量
# self.image_dir = self.base_dir + '/image'
# self.create_directory(self.image_dir)
# self.default_image_name = 'testimage'
# self.framerate = 20
# self.exposure_time = 500
# self.gain = 0
# self.frame_number = 20
#
# self.spectral_dir = self.base_dir + '/spectral'
# self.create_directory(self.spectral_dir)
# self.default_spectral_name = 'testspectral'
#
# self.binning = int(config.get('bin', 'binning'))
# self.start_column = int(config.get('bin', 'start_column_binning_1'))
# self.end_column = int(config.get('bin', 'end_column_binning_1'))
# self.start_row = int(config.get('bin', 'start_row_binning_1'))
# self.end_row = int(config.get('bin', 'end_row_binning_1'))
#
# # self.start_column = 12
# # self.end_column = 1376
# # self.start_row = 1
# # self.end_row = 300
#
# def image_record_param_changed(self, dictionary):
# '''
# :param dictionary: {'image_dir':值, 'image_record_param': 值}
# :return:
# '''
# try:
# # print('接收的参数个数:', len(dictionary.keys()))
#
# config = configparser.ConfigParser()
# config.read(self.corning_config_file)
#
# for key in dictionary.keys():
# if key == 'image_dir':
# self.image_dir = dictionary[key]
# config.set('image_record_param', key, dictionary[key])
# if key == 'default_image_name':
# self.default_image_name = dictionary[key]
# config.set('image_record_param', key, dictionary[key])
# if key == 'framerate':
# self.framerate = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# if key == 'exposure_time':
# self.exposure_time = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# if key == 'gain':
# self.gain = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# if key == 'frame_number':
# self.frame_number = dictionary[key]
# config.set('image_record_param', key, str(dictionary[key]))
# except:
# traceback.print_exc()
#
# with open(self.corning_config_file, 'w') as f:
# config.write(f)
#
# def spectral_record_param_changed(self, dictionary):
# '''
# :param dictionary: {'image_dir':值, 'image_record_param': 值}
# :return:
# '''
# print(len(dictionary.keys()))
#
# config = configparser.ConfigParser()
# config.read(self.corning_config_file)
#
# try:
# for key in dictionary.keys():
# if key == 'spectral_dir':
# self.spectral_dir = dictionary[key]
# config.set('spectral_record_param', key, dictionary[key])
# if key == 'default_spectral_name':
# self.default_spectral_name = dictionary[key]
# config.set('spectral_record_param', key, dictionary[key])
# except:
# traceback.print_exc()
#
# with open(self.corning_config_file, 'w') as f:
# config.write(f)
class ConfigFile(QObject, DirManager):
# 信号必须定义为类属性不能放在__init__方法里
image_signal = pyqtSignal(dict)
spectral_signal = pyqtSignal(dict)
def __init__(self):
'''
配置文件读取和写入类,采集数据需要的帧率、曝光、帧数、文件名等等都由此类从文件中读取并保存在此类中,
'''
super(ConfigFile, self).__init__()
self.corning_config_file = self.log_dir + '//corning_config.ini'
self.read_config_file()
self.image_signal.connect(self.image_record_param_changed)
self.spectral_signal.connect(self.spectral_record_param_changed)
# 读取配置文件,如果没有就创建
def read_config_file(self):
if os.path.exists(self.corning_config_file):
'''
如果存在配置文件,就从配置文件中读取软件配置信息
'''
print('配置文件存在!')
config = configparser.ConfigParser()
config.read(self.corning_config_file)
# self.image_dir = config.get('image_record_param', 'image_dir')
# self.create_directory(self.image_dir)
# self.default_image_name = config.get('image_record_param', 'default_image_name')
# self.framerate = int(config.get('image_record_param', 'framerate'))
# self.exposure_time = int(float(config.get('image_record_param', 'exposure_time')))
# self.gain = int(float(config.get('image_record_param', 'gain')))
# self.frame_number = int(config.get('image_record_param', 'frame_number'))
# self.arcus_speed = int(config.get('image_record_param', 'arcus_speed'))
#
# self.spectral_dir = config.get('spectral_record_param', 'spectral_dir')
# self.create_directory(self.spectral_dir)
# self.default_spectral_name = config.get('spectral_record_param', 'default_spectral_name')
# self.spectral_number = int(config.get('spectral_record_param', 'spectral_number'))
# self.framenumber_average = int(config.get('spectral_record_param', 'framenumber_average'))
# self.exposure_time_spectral = int(config.get('spectral_record_param', 'exposure_time_spectral'))
#
# self.binning = int(config.get('bin', 'binning'))
# if self.binning == 1:
# self.start_column = int(config.get('bin', 'start_column_binning_1'))
# self.end_column = int(config.get('bin', 'end_column_binning_1'))
# self.start_row = int(config.get('bin', 'start_row_binning_1'))
# self.end_row = int(config.get('bin', 'end_row_binning_1'))
# elif self.binning == 2:
# self.start_column = int(config.get('bin', 'start_column_binning_2'))
# self.end_column = int(config.get('bin', 'end_column_binning_2'))
# self.start_row = int(config.get('bin', 'start_row_binning_2'))
# self.end_row = int(config.get('bin', 'end_row_binning_2'))
#
# # print(self.default_dir, self.binning, self.start_column, self.end_column, self.start_row, self.end_row)
else:
'''
1、如果不存在配置文件就建立配置文件
2、并且手动创建配置变量
'''
config = configparser.ConfigParser()
config.add_section('bin')
config.set('bin', 'binning', '1')
# # Serial number = 008
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '2')
# config.set('bin', 'end_row_binning_1', '302')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '0')
# config.set('bin', 'end_row_binning_2', '150')
# # Serial number = 0073
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '0')
# config.set('bin', 'end_row_binning_2', '150')
# # Serial number = 0095
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '0')
# config.set('bin', 'end_row_binning_2', '150')
# Serial number = 0031
config.set('bin', 'start_column_binning_1', '12')
config.set('bin', 'end_column_binning_1', '1376')
config.set('bin', 'start_row_binning_1', '1')
config.set('bin', 'end_row_binning_1', '301')
config.set('bin', 'start_column_binning_2', '13')
config.set('bin', 'end_column_binning_2', '695')
config.set('bin', 'start_row_binning_2', '1')
config.set('bin', 'end_row_binning_2', '151')
# # Serial number = 0099
# config.set('bin', 'start_column_binning_1', '12')
# config.set('bin', 'end_column_binning_1', '1376')
# config.set('bin', 'start_row_binning_1', '1')
# config.set('bin', 'end_row_binning_1', '301')
#
# config.set('bin', 'start_column_binning_2', '13')
# config.set('bin', 'end_column_binning_2', '695')
# config.set('bin', 'start_row_binning_2', '1')
# config.set('bin', 'end_row_binning_2', '151')
config.add_section('effective_window')
config.set('effective_window', 'width_binning_1', '1392')
config.set('effective_window', 'offsetX_binning_1', '272')
config.set('effective_window', 'height_binning_1', '302')
config.set('effective_window', 'offsetY_binning_1', '364')
config.set('effective_window', 'width_binning_2', '696')
config.set('effective_window', 'offsetX_binning_2', '128')
config.set('effective_window', 'height_binning_2', '151')
config.set('effective_window', 'offsetY_binning_2', '182')
config.add_section('calibration_file')
config.set('calibration_file', 'cal_file_name_image_bining_1', 'lens_bin1_gain_SN0073')
config.set('calibration_file', 'cal_file_name_image_bining_2', 'lens_bin2_gain_SN0073')
config.set('calibration_file', 'cal_file_it_image_bining_1', '6969')
config.set('calibration_file', 'cal_file_it_image_bining_2', '1628')
config.set('calibration_file', 'cal_file_name_spectral_bining_1', 'optical_fiber_bin1_gain_SN0073')
config.set('calibration_file', 'cal_file_it_spectrl_bining_1', '42300')
config.add_section('wavelength_file_name')
config.set('wavelength_file_name', 'file_name', 'wavelength0073.txt')
config.add_section('image_record_param')
config.set('image_record_param', 'image_dir', self.base_dir + '/image')
config.set('image_record_param', 'default_image_name', 'testimage')
config.set('image_record_param', 'framerate', '20')
config.set('image_record_param', 'exposure_time', '500')
config.set('image_record_param', 'gain', '0')
config.set('image_record_param', 'frame_number', '20')
config.set('image_record_param', 'arcus_speed', '1000')
config.add_section('spectral_record_param')
config.set('spectral_record_param', 'spectral_dir', self.base_dir + '/spectral')
config.set('spectral_record_param', 'default_spectral_name', 'testspectral')
config.set('spectral_record_param', 'spectral_number', '10')
config.set('spectral_record_param', 'framenumber_average', '10')
config.set('spectral_record_param', 'exposure_time_spectral', '1000')
# config.set('spectral_record_param', 'start_column_binning_1', '12')
with open(self.corning_config_file, mode='w') as f:
config.write(f)# 如果没有配置文件,就手动创建配置变量
print('创建配置文件成功!')
# 读取配置文件中的参数
self.binning = int(config.get('bin', 'binning'))
print('读取配置文件中参数:', self.binning)
if self.binning == 1:
self.effective_window_width = int(config.get('effective_window', 'width_binning_1'))
self.effective_window_offsetx = int(config.get('effective_window', 'offsetx_binning_1'))
self.effective_window_height = int(config.get('effective_window', 'height_binning_1'))
self.effective_window_offsety = int(config.get('effective_window', 'offsety_binning_1'))
self.start_column = int(config.get('bin', 'start_column_binning_1'))
self.end_column = int(config.get('bin', 'end_column_binning_1'))
self.start_row = int(config.get('bin', 'start_row_binning_1'))
self.end_row = int(config.get('bin', 'end_row_binning_1'))
self.calibration_file_name_image=config.get('calibration_file', 'cal_file_name_image_bining_1')
self.calibration_file_it_image = int(config.get('calibration_file', 'cal_file_it_image_bining_1'))
self.calibration_file_name_spectral = config.get('calibration_file', 'cal_file_name_spectral_bining_1')
self.calibration_file_it_spectral = int(config.get('calibration_file', 'cal_file_it_spectrl_bining_1'))
elif self.binning == 2:
self.effective_window_width = int(config.get('effective_window', 'width_binning_2'))
self.effective_window_offsetx = int(config.get('effective_window', 'offsetx_binning_2'))
self.effective_window_height = int(config.get('effective_window', 'height_binning_2'))
self.effective_window_offsety = int(config.get('effective_window', 'offsety_binning_2'))
self.start_column = int(config.get('bin', 'start_column_binning_2'))
self.end_column = int(config.get('bin', 'end_column_binning_2'))
self.start_row = int(config.get('bin', 'start_row_binning_2'))
self.end_row = int(config.get('bin', 'end_row_binning_2'))
self.calibration_file_name_image = config.get('calibration_file', 'cal_file_name_image_bining_2')
self.calibration_file_it_image = int(config.get('calibration_file', 'cal_file_it_image_bining_2'))
self.wavelength_file_name = config.get('wavelength_file_name', 'file_name')
self.image_dir = config.get('image_record_param', 'image_dir')
self.create_directory(self.image_dir)
self.default_image_name = config.get('image_record_param', 'default_image_name')
self.framerate = int(float(config.get('image_record_param', 'framerate')))
self.exposure_time = int(float(config.get('image_record_param', 'exposure_time')))
self.gain = int(float(config.get('image_record_param', 'gain')))
self.frame_number = int(float(config.get('image_record_param', 'frame_number')))
self.arcus_speed = int(float(config.get('image_record_param', 'arcus_speed')))
self.spectral_dir = config.get('spectral_record_param', 'spectral_dir')
self.create_directory(self.spectral_dir)
self.default_spectral_name = config.get('spectral_record_param', 'default_spectral_name')
self.spectral_number = int(float(config.get('spectral_record_param', 'spectral_number')))
self.framenumber_average = int(float(config.get('spectral_record_param', 'framenumber_average')))
self.exposure_time_spectral = int(float(config.get('spectral_record_param', 'exposure_time_spectral')))
# self.start_column = 12
# self.end_column = 1376
# self.start_row = 1
# self.end_row = 300
def image_record_param_changed(self, dictionary):
'''
:param dictionary: {'image_dir':值, 'image_record_param': 值}
:return:
'''
try:
# print('接收的参数个数:', len(dictionary.keys()))
config = configparser.ConfigParser()
config.read(self.corning_config_file)
for key in dictionary.keys():
# self.key = dictionary[key]
# config.set('image_record_param', key, dictionary[key])
if key == 'image_dir':
self.image_dir = dictionary[key]
config.set('image_record_param', key, dictionary[key])
if key == 'default_image_name':
self.default_image_name = dictionary[key]
config.set('image_record_param', key, dictionary[key])
if key == 'framerate':
self.framerate = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'exposure_time':
self.exposure_time = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'gain':
self.gain = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'frame_number':
self.frame_number = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
if key == 'arcus_speed':
self.arcus_speed = dictionary[key]
config.set('image_record_param', key, str(dictionary[key]))
except:
traceback.print_exc()
with open(self.corning_config_file, 'w') as f:
config.write(f)
def spectral_record_param_changed(self, dictionary):
'''
:param dictionary: {'image_dir':值, 'image_record_param': 值}
:return:
'''
print(len(dictionary.keys()))
config = configparser.ConfigParser()
config.read(self.corning_config_file)
try:
for key in dictionary.keys():
if key == 'spectral_dir':
self.spectral_dir = dictionary[key]
config.set('spectral_record_param', key, dictionary[key])
if key == 'default_spectral_name':
self.default_spectral_name = dictionary[key]
config.set('spectral_record_param', key, dictionary[key])
if key == 'spectral_number':
self.spectral_number = dictionary[key]
config.set('spectral_record_param', key, str(dictionary[key]))
if key == 'framenumber_average':
self.framenumber_average = dictionary[key]
config.set('spectral_record_param', key, str(dictionary[key]))
if key == 'exposure_time_spectral':
self.exposure_time_spectral = dictionary[key]
config.set('spectral_record_param', key, str(dictionary[key]))
except:
traceback.print_exc()
with open(self.corning_config_file, 'w') as f:
config.write(f)
if __name__ == '__main__':
x = ConfigFile()