def db_din(): """Scans the Digital Input pins for status.""" for din in DIGIN: if din == 0: din_0 = DAQC.getDINbit(0, 0) val = rm_utils.eval_din(din_0) if DEBUG: print("Din {}: {}".format(0, val)) elif din == 1: din_1 = DAQC.getDINbit(0, 1) val = rm_utils.eval_din(din_1) if DEBUG: print("Din {}: {}".format(1, val)) elif din == 2: din_2 = DAQC.getDINbit(0, 2) val = rm_utils.eval_din(din_2) if DEBUG: print("Din {}: {}".format(2, val)) elif din == 3: din_3 = DAQC.getDINbit(0, 3) val = rm_utils.eval_din(din_3) if DEBUG: print("Din {}: {}".format(3, val)) elif din == 4: din_4 = DAQC.getDINbit(0, 4) val = rm_utils.eval_din(din_4) if DEBUG: print("Din {}: {}".format(4, val)) elif din == 5: din_5 = DAQC.getDINbit(0, 5) val = rm_utils.eval_din(din_5) if DEBUG: print("Din {}: {}".format(5, val)) elif din == 6: din_6 = DAQC.getDINbit(0, 6) val = rm_utils.eval_din(din_6) if DEBUG: print("Din {}: {}".format(6, val)) elif din == 7: din_7 = DAQC.getDINbit(0, 7) val = rm_utils.eval_din(din_7) if DEBUG: print("Din {}: {}".format(7, val)) query = """INSERT INTO `digInput` (`id`, `unix_time`, `dig0`, `dig1`, `dig2`, `dig3`, `dig4`, `dig5`, `dig6`, `dig7`) VALUES (NULL, CURRENT_TIMESTAMP, '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}')""" try: cursor.execute( query.format(din_0, din_1, din_2, din_3, din_4, din_5, din_6, din_7)) mariadb_connection.commit() except mariadb.Error as err: logger.error("DB: db_din FAILED: {}".format(err)) mariadb_connection.rollback() if DEBUG: print("\033[91m Error digInput db \033[0m {}".format(err))
def task(): global lastT global lastR global lastSW global swMode global GC adata = DAQC.getADCall(3) val = round(DAQC.getADC(0, 8), 1) Power5Text.set(val) val = round((adata[1] - 2.73) * 100, 2) val = 0.2 * val + 0.8 * lastT lastT = val TempText.set(str("{:>3.1f}".format(val)) + 'C') val = round(adata[2] * 12.21 / 1.636, 1) Power12Text.set(val) val = round(adata[0] / 4.096 * 100, 1) FanText.set(str(val) + '%') DAQC.setPWM(0, 0, int(val * 1024 / 100)) val = DAQC.getRANGE(0, 6, 'c') if isinstance(val, float): if val > 100: val = 99.9 else: val = 0 val = round(val, 1) val = 0.8 * lastR + 0.2 * val lastR = val RangeText.set(str("{:>2.1f}".format(val)) + 'cm') lamp = 0 if (DAQC.getDINbit(0, 2) == 1): lamp = 32 sw = DAQC.getSWstate(0) if (sw == 1) and (lastSW == 0): lastSW = 1 swMode = not swMode if swMode: GCmode.set('Binary Code :') else: GCmode.set('Grey Code :') if (sw == 0) and (lastSW == 1): lastSW = 0 val = (int(adata[7] * 32 / 4.096)) if swMode == 0: GCText.set(GC[val]) num = GC[val] else: GCText.set(val) num = val DAQC.setDOUTall(0, (num + lamp)) root.after(100, task)
def update(self): if (self.var.get() == 1): self.val.set(DAQC.getDINbit(self.addr, self.chan)) self.valstring.set(str(self.val.get())) self.log[self.nextPtr] = self.val.get() self.nextPtr = (self.nextPtr + 1) % self.maxrange self.plot() return self.val.get() else: return ''
def __init__(self, root, addr, channel): self.root = root self.addr = addr self.chan = channel self.var = IntVar() self.var.set(1) self.val = IntVar() self.val.set(DAQC.getDINbit(self.addr, self.chan)) self.valstring = StringVar() self.valstring.set(str(self.val.get())) off = H - 2 - 9 * SLICE + self.chan * SLICE BG = '#FFFFFF888' self.CWidth = int(.75 * W + 20) self.dinf = Frame(self.root, bg=BG, bd=0, relief="ridge") self.dinf.place(x=0, y=off, width=W, height=SLICE) self.dinc = Checkbutton(self.dinf, fg="Black", bg=BG, variable=self.var, command=self.cb) self.dinc.grid(row=0, column=0, sticky="w") self.dinl = StringVar(root, value="DIN Channel " + str(self.chan) + ":") self.dint = Label(self.dinf, textvariable=self.valstring, fg="Black", bg=BG, width=5) self.dint.grid(row=0, column=2, sticky="w") self.dintxt = Entry(self.dinf, textvariable=self.dinl, fg="Black", bg=BG, bd=0, relief="flat", width=12) self.dintxt.grid(row=0, column=1, sticky="w") self.dincanvas = Canvas(self.dinf, bg=BG, width=self.CWidth, height=SLICE, bd=0, relief="flat") self.dincanvas.grid(row=0, column=3, sticky="e") self.maxrange = self.CWidth self.log = range(self.maxrange) for i in range(self.maxrange): self.log[i] = 0.0 self.nextPtr = 0
this_state = (state >> (relay - 1)) & 1 resp['relay'] = relay resp['state'] = this_state elif (cmd == "RESET"): RP.RESET(addr) resp['RESET'] = "OK" else: sys.stderr.write("unknown relay cmd: " + cmd) break print(json.dumps(resp)) elif (plate_type == "DAQC"): with simpleflock.SimpleFlock("/tmp/daqc.lock", timeout=3): if (cmd == "getDINbit"): bit = args['bit'] try: state = DP.getDINbit(addr, bit) except AssertionError: state = DP2.getDINbit(addr, bit) resp['bit'] = bit resp['state'] = state elif (cmd == "setDOUTbit"): bit = args['bit'] try: DP.setDOUTbit(addr, bit) except AssertionError: DP2.setDOUTbit(addr, bit) resp['bit'] = bit resp['state'] = 1 elif (cmd == "clrDOUTbit"): bit = args['bit'] try: