def add_widgets(self): # Tabbed view self.notebook = ttk.Notebook(self) self.notebook.pack(fill=tk.BOTH, expand=1) self.notebook.bind("<<NotebookTabChanged>>", self.manage_threads) # First Tab: Alarms self.alarms = Alarms(self.notebook) self.protocol("WM_DELETE_WINDOW", self.on_close) self.alarms.pack(fill=tk.BOTH, expand=1) self.notebook.add(self.alarms, text="Alarms") # Second Tab: Clock (Hopefully will add analog and digital) self.clock = Clock(self.notebook) self.clock.pack(fill=tk.BOTH, expand=1) self.notebook.add(self.clock, text="Clock") # Third Tab: Stopwatch self.stopwatch = Stopwatch(self.notebook) self.stopwatch.pack(fill=tk.BOTH, expand=1) self.notebook.add(self.stopwatch, text="Stopwatch") # Fourth Tab: Timer self.timer = Timer(self.notebook) self.timer.pack(fill=tk.BOTH, expand=1) self.notebook.add(self.timer, text="Timer")
def _setup_ui(self): self.setFrameStyle(QFrame.StyledPanel | QFrame.Raised) layout = QVBoxLayout(self) self.setLayout(layout) layout.setAlignment(Qt.AlignTop) layout.setSpacing(2) layout.setMargin(2) layout.addSpacing(20) self._alarms = Alarms(self, self._usbif) layout.addWidget(self._alarms) self._meas = Measurements(self, self._usbif) layout.addWidget(self._meas) self._core_rope_sim = CoreRopeSim(self, self._usbif) layout.addWidget(self._core_rope_sim) layout.setAlignment(self._core_rope_sim, Qt.AlignTop) self._erasable_mem_sim = ErasableMemSim(self, self._usbif) layout.addWidget(self._erasable_mem_sim) layout.setAlignment(self._erasable_mem_sim, Qt.AlignTop) self._trace = Trace(self, self._usbif) layout.addWidget(self._trace)
def __init__(self): """Constructor, esto es lo que se ejecuta cuando se crea un objeto de la clase FaceDetection.""" self.frame = None self.counter = 0 self.EYE_AR_THRESH = 0.15 self.EYE_AR_CONSEC_FRAMES = 2 self.YAWN_THRESH = 10 self.face_detected = False self.yawn_counter = 0 self.CAR_REGISTRATION = 'SAF 6245' self.blink_verification = False self.blink_counter = 0 self.t_end_blink = 0 #Variable para controlar alarma cuando los ojos se cierran self.BLINK_TIME_CLOSED = 1 # Tiempo en segundos para que se considere un parpadeo largo self.BLINK_TIME_GAP = 60 # el tiempo por el cuazl quedan guardado los parpadeos largos en el array self.BLINK_TIME_ALERT = 2 # cantidad de veces que se produscan pestaneos largos antes de que se dispare una alerta self.blink_time_alert_counter_a = [ ] # se guardan los moentos en que se detectaron los parpadeos largos self.blink_counter_verification = False #veriable que permite verificar el momento de trasiciondes de estado del ojo(de abierto a cerrado) self.blink_eye_closed = 0 # momento en el que se detecto que el ojo se cerro self.yawn_closed = 0 self.yawn_counter_verification = False self.t_end = 0 #Variable para controlar el tiempo de un bostezo self.YAWN_TIME_GAP = 60 # self.YAWN_TIME_ALERT = 2 # Cantidad de bostetzos por minuto para que se active la alarma self.yawn_time_alert_counter_a = [ ] #se guardan los bostezos (se guarda en formato time) self.t_end_alarm = 0 self.EVENT_STRING_DROWSINESS = 'Sintomas de suenio' self.EVENT_STRING_SLEEP = 'Dormido' self.EVENT_STRING_DISTRACTION = 'Distraccion' self.face_angle_vertical = 0.0 self.face_angle_horizontal = 0.0 self.face_angle_horizontal = 0.0 self.alarm = Alarms() #_face_detector detecta rostros self._face_detector = dlib.get_frontal_face_detector() #_predictor es usado para obtener los landmarks de una cara self._predictor = dlib.shape_predictor( path + "/shape_predictor_68_face_landmarks.dat")
def __init__(self, loggerName, locale, wsURL, wsUser, wsPwd, callback): # Initialisation du logging logging.config.fileConfig('logging.conf') self.logger = logging.getLogger(loggerName) # Initialisation du langage self.i18n = I18N(locale) # Liste des alarmes en cours self.alarms = Alarms() # Initialisation du panneau des alarmes self.alarmPanel = AlarmPanel(8, 7, 11, 9, 600, True) # Initialisation de l'écran LCD self.lcd = LCDDisplay(27, 22, 25, 24, 23, 18, 16, 2, 4) # Liste des Arduinos à contacter self.arduinos = [] # Démarrage du serveur de commande et de la communication vers internet self.httpServices = HttpServices(wsURL, wsUser, wsPwd, callback)
def deamon(soc=-1): """ Main loop, gets battery data, gets summary.py to do logging""" try: import summary logsummary = summary.Summary() summary = logsummary.summary printtime = time.strftime("%Y%m%d%H%M%S ", time.localtime()) while int(printtime) <= int(summary['current']['timestamp']): print(printtime, summary['current']['timestamp']) print("Error: Current time before last sample time") time.sleep(30) printtime = time.strftime("%Y%m%d%H%M%S", time.localtime()) batdata = Readings() # initialise batdata after we have valid sys time alarms = Alarms(batdata) # initialise alarms print(str(printtime)) filecopy(config['files']['summaryfile'], config['files']['summaryfile'] + "R" + str(int(printtime))) if soc > config['battery']['capacity']: print("Battery DOD must be less than Battery Capacity") else: if soc < 0: batdata.soc = summary['current']['ah'][0] batdata.socadj = summary['current']['dod'][0] else: batdata.soc = soc batdata.socadj = soc summary['current']['dod'][3] = 0 summary['current']['dod'][ 3] = -100 # flag don't adjust leakage current prevtime = logsummary.currenttime prevbatvoltage = batdata.batvoltsav[numcells] # logsummary.startday(summary) # logsummary.starthour(summary) while True: try: for i in range(config['sampling']['samplesav']): # printvoltage = '' # for i in range(numcells+1): # printvoltage = printvoltage + str(round(batdata.batvolts[i],3)).ljust(5,'0') + ' ' # print (printvoltage) batdata.getraw() # if batdata.batvoltsav[numcells] >= 55.2 and prevbatvoltage < 55.2: # reset SOC counter? # print batdata.socadj/(float(summary['current']['dod'][3])*24.0) if batdata.batvoltsav[numcells] < config['battery']['vreset'] \ and prevbatvoltage >= config['battery']['vreset'] \ and summary['current']['dod'][3] != 0 \ and -batdata.currentav[0] < config['battery']['ireset']: # reset SOC counter? if summary['current']['dod'][3] <= 0: socerr = 0 else: socerr = batdata.socadj / ( float(summary['current']['dod'][3]) * 24.0) socerr = max(socerr, -0.01) socerr = min(socerr, 0.01) config['battery']['ahloss'] = config['battery'][ 'ahloss'] - socerr / 2 batconfigdata = SafeConfigParser() batconfigdata.read('battery.cfg') batconfigdata.set('battery', 'ahloss', str(config['battery']['ahloss'])) with open('battery.cfg', 'w') as batconfig: batconfigdata.write(batconfig) batconfig.closed batdata.soc = 0.0 batdata.socadj = 0.0 summary['current']['dod'][3] = 0 else: batdata.soc = batdata.soc + batdata.batah batdata.socadj = batdata.socadj + batdata.batahadj batdata.ah = batdata.ah + batdata.batah batdata.inahtot = batdata.inahtot + batdata.inah batdata.pwrbattot = batdata.pwrbattot + batdata.pwrbat batdata.pwrintot = batdata.pwrintot + batdata.pwrin prevbatvoltage = batdata.batvoltsav[numcells] # check alarms alarms.scanalarms(batdata) # update summaries logsummary.update(summary, batdata) if logsummary.currenttime[4] != logsummary.prevtime[ 4]: # new minute loadconfig() logsummary.updatesection(summary, 'hour', 'current') logsummary.updatesection(summary, 'alltime', 'current') logsummary.updatesection(summary, 'currentday', 'current') logsummary.updatesection(summary, 'monthtodate', 'current') logsummary.updatesection(summary, 'yeartodate', 'current') logsummary.writesummary() batdata.ah = 0.0 batdata.ahadj = 0.0 batdata.inahtot = 0.0 batdata.pwrbattot = 0.0 batdata.pwrintot = 0.0 for i in range(batdata.numiins): batdata.kWhin[i] = 0.0 batdata.kWhout[i] = 0.0 for i in range(numcells): batdata.baltime[i] = 0 if logsummary.currenttime[3] != logsummary.prevtime[ 3]: # new hour logsummary.starthour(summary) if logsummary.currenttime[3] < logsummary.prevtime[ 3]: # newday logsummary.startday(summary) if logsummary.currenttime[1] != logsummary.prevtime[ 1]: # new month logsummary.startmonth(summary) if logsummary.currenttime[0] != logsummary.prevtime[ 0]: # new year logsummary.startyear(summary) except KeyboardInterrupt: sys.stdout.write('\n') logsummary.close() sys.exit(9) break except Exception as err: log.critical(err) raise
if currenttime[8:10] != prevtime[8:10]: # new hour logsummary.starthour(summary) if currenttime[6:8] != prevtime[6:8]: # newday logsummary.startday(summary) if currenttime[4:6] != prevtime[4:6]: # new month logsummary.startmonth(summary) if currenttime[0:4] != prevtime[0:4]: # new year logsummary.startyear(summary) import summary logsummary = summary.Summary() batdata = Readings() # initialise batdata alarms = Alarms(batdata, summary) # initialise alarms def deamon(soc=-1): """Battery Management deamon to run in background""" numtries = 0 while True: try: initmain(soc) while True: mainloop() numtries = 0 except KeyboardInterrupt: numtries = maxtries sys.stdout.write('\n')
def __init__(self, bot): self.alarms = Alarms(bot)
def _setup_ui(self): column_layout = QHBoxLayout() self.setLayout(column_layout) column_layout.setMargin(0) column_layout.setSpacing(1) col1_layout = QVBoxLayout() col1_layout.setMargin(0) column_layout.addLayout(col1_layout) self._write_w = WriteW(self, self._usbif) col1_layout.addWidget(self._write_w) col1_layout.setAlignment(self._write_w, Qt.AlignTop | Qt.AlignLeft) col2_layout = QVBoxLayout() col2_layout.setMargin(0) col2_layout.setSpacing(2) col2_layout.addSpacing(10) column_layout.addLayout(col2_layout) regs_layout = QVBoxLayout() regs_layout.setSpacing(2) regs_layout.setMargin(0) col2_layout.addLayout(regs_layout) col2_layout.setAlignment(regs_layout, Qt.AlignTop) # Add all of the registers for display self._reg_a = Register(self, self._usbif, 'A', False, QColor(0, 255, 0)) regs_layout.addWidget(self._reg_a) regs_layout.setAlignment(self._reg_a, Qt.AlignRight) self._reg_l = Register(self, self._usbif, 'L', False, QColor(0, 255, 0)) regs_layout.addWidget(self._reg_l) regs_layout.setAlignment(self._reg_l, Qt.AlignRight) # self._reg_y = Register(regs, self._usbif, 'Y', False, QColor(0, 255, 0)) # regs_layout.addWidget(self._reg_y) # regs_layout.setAlignment(self._reg_y, Qt.AlignRight) # self._reg_u = Register(regs, self._usbif, 'U', False, QColor(0, 255, 0)) # regs_layout.addWidget(self._reg_u) # regs_layout.setAlignment(self._reg_u, Qt.AlignRight) self._reg_z = Register(self, self._usbif, 'Z', False, QColor(0, 255, 0)) regs_layout.addWidget(self._reg_z) regs_layout.setAlignment(self._reg_z, Qt.AlignRight) # self._reg_q = Register(regs, self._usbif, 'Q', False, QColor(0, 255, 0)) # regs_layout.addWidget(self._reg_q) # regs_layout.setAlignment(self._reg_q, Qt.AlignRight) self._reg_g = Register(self, self._usbif, 'G', True, QColor(0, 255, 0)) regs_layout.addWidget(self._reg_g) regs_layout.setAlignment(self._reg_g, Qt.AlignRight) # self._reg_b = Register(regs, self._usbif, 'B', False, QColor(0, 255, 0)) # regs_layout.addWidget(self._reg_b) # regs_layout.setAlignment(self._reg_b, Qt.AlignRight) self._reg_w = Register(self, self._usbif, 'W', True, QColor(0, 255, 0)) regs_layout.addWidget(self._reg_w) regs_layout.setAlignment(self._reg_w, Qt.AlignRight) self._w_cmp = WComparator(self, self._usbif) regs_layout.addWidget(self._w_cmp) regs_layout.setAlignment(self._w_cmp, Qt.AlignRight) col2_layout.addSpacing(10) self._reg_s = AddressRegister(self, self._usbif, QColor(0, 255, 0)) col2_layout.addWidget(self._reg_s) col2_layout.setAlignment(self._reg_s, Qt.AlignRight) self._s1_comp = SComparator(self, self._usbif, 1) col2_layout.addWidget(self._s1_comp) col2_layout.setAlignment(self._s1_comp, Qt.AlignRight) self._s2_comp = SComparator(self, self._usbif, 2) col2_layout.addWidget(self._s2_comp) col2_layout.setAlignment(self._s2_comp, Qt.AlignRight) col2_layout.addSpacing(10) self._reg_i = InstructionRegister(self, self._usbif, QColor(0, 255, 0)) col2_layout.addWidget(self._reg_i) col2_layout.setAlignment(self._reg_i, Qt.AlignRight) self._i_comp = IComparator(self, self._usbif) col2_layout.addWidget(self._i_comp) col2_layout.setAlignment(self._i_comp, Qt.AlignRight) col2_layout.addSpacing(10) col2_layout.addStretch(1000) col3 = QWidget(self) col3_layout = QVBoxLayout(col3) col3_layout.setMargin(0) col3_layout.setSpacing(2) #col3_layout.addSpacing(10) column_layout.addWidget(col3) # Add the alarms panel self._alarms_panel = Alarms(col3, self._usbif) col3_layout.addWidget(self._alarms_panel) col3_layout.setAlignment(self._alarms_panel, Qt.AlignTop | Qt.AlignRight) # Add the control panel self._ctrl_panel = Control(col3, self._usbif) col3_layout.addWidget(self._ctrl_panel) col3_layout.setAlignment(self._ctrl_panel, Qt.AlignTop | Qt.AlignRight) # Add the computer stop panel self._comp_stop = CompStop(col3, self._usbif) col3_layout.addWidget(self._comp_stop) col3_layout.setAlignment(self._comp_stop, Qt.AlignTop | Qt.AlignRight) # Add the read/load panel self._read_load = ReadLoad(col3, self._usbif) col3_layout.addWidget(self._read_load) col3_layout.setAlignment(self._read_load, Qt.AlignTop | Qt.AlignRight) # Add the fixed memory panel self._fixed = FixedMemory(col3, self._usbif) col3_layout.addWidget(self._fixed) col3_layout.setAlignment(self._fixed, Qt.AlignTop | Qt.AlignRight) # Add the erasable memory panel self._erasable = ErasableMemory(col3, self._usbif) col3_layout.addWidget(self._erasable) col3_layout.setAlignment(self._erasable, Qt.AlignTop | Qt.AlignRight) col3_layout.addStretch() self.show()