# -*- coding: utf-8 -*-
from ast import Str
import os 
import stat
import shutil
import yaml
from struct import Struct

#设置结构体
class Settings:
    def __init__(self):
        self.Check_Switch = 0
        self.GNSS_FilePath = ""
        self.GNSS_AnubisResFile = ""
        self.GNSS_SatSYS = None
        self.GNSS_GPSFreq = None
        self.GNSS_GLOFreq = None
        self.GNSS_BDSFreq = None
        self.GNSS_GALFreq = None
        self.GNSS_QZSFreq = None
        self.GNSS_SatNum = 0
        self.GNSS_MinAveSNR = 0
        self.GNSS_MaxSNRStd = 0
        self.SINS_FilePath = ""
        self.SINS_IMUFile = ""
        self.SINS_MaxMisEpochNum = 0
        self.SINS_TriAxis = None
        self.SINS_MaxAccErr = 0
        self.ResSavePath = ""
        self.SINS_StaticTime = 0

#查找并读取配置文件
def ReadSettings(BatchSettingsFile,settings):
    if os.path.exists(BatchSettingsFile):
        with open(BatchSettingsFile, "r") as fr:
            opt=yaml.safe_load(fr)
            settings.Check_Switch = opt["Check_Switch"]
            settings.GNSS_FilePath = opt["GNSS_FilePath"]
            settings.GNSS_AnubisResFile = opt["GNSS_AnubisResFile"]
            settings.GNSS_SatSYS = opt["GNSS_SatSYS"].replace('SYS','').split('|')
            settings.GNSS_GPSFreq = opt["GNSS_GPSFreq"].split(',')
            settings.GNSS_GLOFreq = opt["GNSS_GLOFreq"].split(',')
            settings.GNSS_BDSFreq = opt["GNSS_BDSFreq"].split(',')
            settings.GNSS_GALFreq = opt["GNSS_GALFreq"].split(',')
            settings.GNSS_QZSFreq = opt["GNSS_QZSFreq"].split(',')
            settings.GNSS_SatNum = opt["GNSS_SatNum"]
            settings.GNSS_MinAveSNR = opt["GNSS_MinAveSNR"]
            settings.GNSS_MaxSNRStd = opt["GNSS_MaxSNRStd"]
            
            settings.SINS_FilePath = opt["SINS_FilePath"]
            settings.SINS_IMUFile = opt["SINS_IMUFile"]
            settings.SINS_MaxMisEpochNum = opt["SINS_MaxMisEpochNum"]
            settings.SINS_TriAxis = opt["SINS_TriAxis"].replace(' ','')
            settings.SINS_MaxAccErr = opt["SINS_MaxAccErr"]

            settings.ResSavePath = opt["ResSavePath"]
            settings.SINS_StaticTime = opt["SINS_Static_Time"]
        return True
    else:
        print("没有找到配置文件")
        return False

#查找是否有子字符串
def StrExist(sta, stri):
    start = stri.find(sta)
    if start >= 0:
        return True
    else:
        return False

#取字符串中两个符号之间的字符
def StrCut(sta, end, stri):
    start = stri.find(sta)
    if start >= 0:
        start += len(sta)
        end = stri.find(end, start)
        if end >= 0:
            return stri[start:end].strip()
    else:
        return ''