From 4a72293981486a1ff4f7dcb31cd3590ef60d6c95 Mon Sep 17 00:00:00 2001 From: tillraab Date: Mon, 9 Sep 2019 16:29:59 +0200 Subject: [PATCH] config file of base directory in loaded, correct folder is initialized --- rasp_grid.py | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 145 insertions(+), 1 deletion(-) diff --git a/rasp_grid.py b/rasp_grid.py index cd4be61..0609c46 100644 --- a/rasp_grid.py +++ b/rasp_grid.py @@ -1,6 +1,12 @@ from __future__ import print_function from time import time, sleep -import RPi.GPIO as GPIO +import os +import datetime +from shutil import copyfile +try: + import RPi.GPIO as GPIO +except: + pass import subprocess import numpy as np import matplotlib.pyplot as plt @@ -30,7 +36,145 @@ def GPIO_setup(): return LED_status +def read_cfg(cfg_file, now, init_read=False): + cfg_f = open(cfg_file, 'r+') + cfg = cfg_f.readlines() + + ### read cfg information ### + if init_read: + for line in cfg: + if "PathFormat" in line: + path_format = ':'.join(line.split(':')[1:]).strip().replace('"', '').replace("'", "") + cfg_f.close() + return path_format + + for line in cfg: + if 'Columns1' in line: + n_cols = int(line.split(':')[1].strip()) + elif 'Rows1' in line: + n_rows = int(line.split(':')[1].strip()) + elif "AISampleRate" in line: + samplerate = int(float(line.split(':')[-1].strip().replace('kHz', '')) * 1000) + + ### alter information and re-write ### + for enu, line in enumerate(cfg): + if "StartDate" in line: + cfg[enu] = (' StartDate : %s\n' % now.strftime('%Y-%m-%d')) + elif "StartTime" in line: + cfg[enu] = (' StartTime : %s\n' % (now.strftime('%H:%M:%S') + now.strftime(".%f")[:4])) + cfg_f.close() + + cfg_f = open(cfg_file, 'w+') + for line in cfg: + cfg_f.write(line) + cfg_f.close() + + return n_cols * n_rows, samplerate + + # for line in cfg: + # if 'Columns1' in line: + # self.Grid.columns_val = int(line.split(':')[1].strip()) + # elif 'Rows1' in line: + # self.Grid.rows_val = int(line.split(':')[1].strip()) + # elif "ColumnDistance1" in line: + # self.Grid.col_dist_val = float(line.split(':')[-1].strip().replace('cm', '')) + # elif "RowDistance1" in line: + # self.Grid.row_dist_val = float(line.split(':')[-1].strip().replace('cm', '')) + # elif "ChannelOffset1" in line: + # self.Grid.channel_offset_val = int(line.split(':')[-1].strip()) + # elif "ElectrodeType1" in line: + # self.Grid.elec_type_val = line.split(':')[-1].strip() + # elif "RefElectrodeType1" in line: + # self.Grid.ref_elec_type_val = line.split(":")[-1].strip() + # elif "RefElectrodePosX1" in line: + # self.Grid.ref_elec_posx_val = float(line.split(':')[-1].strip().replace('m', '')) + # elif 'RefElectrodePosY1' in line: + # self.Grid.ref_elec_posy_val = float(line.split(':')[-1].strip().replace('m', '')) + # elif 'WaterDepth1' in line: + # self.Grid.water_depth_val = float(line.split(':')[-1].strip().replace('m', '')) + # + # elif "AISampleRate" in line: + # self.HardWare.ai_sr_val = float(line.split(':')[-1].strip().replace('kHz', '')) + # elif "AIMaxVolt" in line: + # self.HardWare.ai_max_vol_val = float(line.split(':')[-1].strip().replace('mV', '')) + # elif "AmplName" in line: + # self.HardWare.amp_name_val = line.split(':')[-1].strip() + # elif "AmplModel" in line: + # self.HardWare.amp_model_val = line.split(':')[-1].strip() + # elif ' Type ' in line: + # self.HardWare.amp_type_val = line.split(':')[-1].strip() + # elif 'Gain' in line: + # self.HardWare.gain_val = line.split(':')[-1].strip() + # elif "HighpassCutoff" in line: + # self.HardWare.highpass_cutoff_val = int(line.split(':')[-1].strip().replace('Hz', '')) + # elif 'LowpassCutoff' in line: + # self.HardWare.lowpass_cutoff_val = float(line.split(':')[-1].strip().replace('kHz', '')) + # + # elif "Experiment.Name" in line: + # self.Recording.experiment_name_val = line.split(':')[-1].strip() + # elif "StartDate" in line: + # self.Recording.startdate_val = line.split(':')[-1].strip() + # elif "StartTime" in line: + # self.Recording.starttime_val = ':'.join(line.split(':')[1:]).strip() + # elif "Location" in line: + # self.Recording.location_val = line.split(':')[-1].strip() + # elif "Position" in line: + # self.Recording.position_val = line.split(':')[-1].strip() + # elif "WaterTemperature" in line: + # self.Recording.water_temp_val = float(line.split(':')[-1].strip().replace('C', '')) + # elif "WaterConductivity" in line: + # self.Recording.water_cond_val = float(line.split(':')[-1].strip().replace('uS/cm', '')) + # elif 'WaterpH' in line: + # self.Recording.water_ph_val = float(line.split(':')[-1].strip().replace('pH', '')) + # elif "WaterOxygen" in line: + # self.Recording.water_oxy_val = float(line.split(':')[-1].strip().replace('mg/l', '')) + # elif "Comment" in line: + # self.Recording.comment_val = ':'.join(line.split(':')[1:]).strip() + # elif "Experimenter" in line: + # self.Recording.experimenter_val = ':'.join(line.split(':')[1:]).strip() + # elif "DataTime" in line: + # self.Recording.datatime_val = int(line.split(':')[-1].strip().replace('ms', '')) + # elif "DataInterval" in line: + # self.Recording.datainterval_val = int(line.split(':')[-1].strip().replace('ms', '')) + # elif "BufferTime" in line: + # self.Recording.buffertime_val = int(line.split(':')[-1].strip().replace('s', '')) + # else: + # continue + + def main(): + now = datetime.datetime.now() + + # get init cfg + if os.path.exists('/media/pi/data1'): + init_path = '/media/pi/data1' + else: + init_path = '/home/raab/data/rasp_test' + + init_cfgfile = os.path.join(init_path, 'fishgrid.cfg') + if os.path.exists(init_cfgfile): + path_format = read_cfg(init_cfgfile, now, init_read = True) + else: + print('cfg file missing !!!') + quit() + + # create save folder and copy cfg file + path = os.path.join(init_path, now.strftime(path_format)) + os.makedirs(path) + copyfile(os.path.join(os.path.split(path)[0], 'fishgrid.cfg'), os.path.join(path, 'fishgrid.cfg')) + cfgfile = os.path.join(path, 'fishgrid.cfg') + + # read and edit config file + channels, rate = read_cfg(cfgfile, now) + + file = os.path.join(path, 'traces-grid1.raw') + f = open(file, 'wb') + + f.close() + + embed() + quit() + LED_status = GPIO_setup() # DAQ setup