Example #1
0
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))
Example #2
0
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)
Example #3
0
 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 ''
Example #4
0
    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
Example #5
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: