コード例 #1
0
ファイル: GUI.py プロジェクト: Angoosh/EPP_cutter
 def homeY(instance):
     b2, b3, b4, b5, b6, b7, b8 = i.SAP(193, 1, 1)
     b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                              b8)
     x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
     ser.write(x)
     b2, b3, b4, b5, b6, b7, b8 = i.SAP(194, 1, 2047)
     b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                              b8)
     s = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
     ser.write(s)
     b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, 13, 0, 1, 0, 0, 0, 0)
     y = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
     ser.write(y)
     self.terminal.text += "Home Y\n"
     self.yTravel.text = "0"
コード例 #2
0
ファイル: GUI.py プロジェクト: Angoosh/EPP_cutter
 def homeB(instance):
     b2, b3, b4, b5, b6, b7, b8 = i.SAP(193, 3, 1)
     b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                              b8)
     x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
     ser.write(x)
     b2, b3, b4, b5, b6, b7, b8 = i.SAP(194, 3, 2047)
     b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                              b8)
     s = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
     ser.write(s)
     b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, 13, 0, 3, 0, 0, 0, 0)
     a = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
     ser.write(b)
     self.terminal.text += "Home B\n"
     self.bTravel.text = "0"
コード例 #3
0
ファイル: GUI.py プロジェクト: Angoosh/EPP_cutter
        def STOP(instance):
            print("RESET!!")
            self.terminal.text += "Reset\n"
            try:
                f = open("comm.pickle", "rb")
                pid = pickle.load(f)
                f.close()

                os.system("rm comm.pickle")
                os.system("kill " + str(pid))
            except:
                print("no comm.pickle")

            for motor in range(0, 4):
                b2, b3, b4, b5, b6, b7, b8 = i.MST(motor)
                b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(
                    1, b2, b3, b4, b5, b6, b7, b8)
                x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
                ser.write(x)
                sleep(0.001)
                b2, b3, b4, b5, b6, b7, b8 = i.SAP(1, motor, 0)
                b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(
                    1, b2, b3, b4, b5, b6, b7, b8)
                p = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
                ser.write(p)
                sleep(0.001)
            sleep(0.001)
            send = Gcode.M104(0)[1]
            ser.write(send)
コード例 #4
0
ファイル: GUI.py プロジェクト: Angoosh/EPP_cutter
        def homeX(instance):

            b2, b3, b4, b5, b6, b7, b8 = i.SAP(193, 0, 1)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(x)
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(194, 0, 2000)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            s = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(s)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, 13, 0, 0, 0, 0, 0, 0)
            x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(x)
            self.terminal.text += "Home X\n"
            self.xTravel.text = "0"
コード例 #5
0
ファイル: GUI.py プロジェクト: Angoosh/EPP_cutter
 def sett(btn):
     if self.feed.text == "":
         print("error")
         self.terminal.text += "FeedrateError\n"
     else:
         value = int(self.feed.text)
         print(self.feed.text)
         for motor in range(0, 4):
             b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, motor, value)
             b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(
                 1, b2, b3, b4, b5, b6, b7, b8)
             x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
             ser.write(x)
             sleep(0.001)
         self.terminal.text += "Feedrate set to: " + self.feed.text + "\n"
コード例 #6
0
def action(r):
    r = r.decode("utf-8")
    #import globalnich promennych do funkce
    global mode
    global st
    global proceed
    global lastx, lasty, lasta, lastb
    global feedG0, feedG1
    #zpracovani prikazu G0 pro pohyb
    if r.find("G0\n") != -1:
        log.write("G0")
        x = r.find("X")
        y = r.find("Y")
        a = r.find("A")
        b = r.find("B")
        if (x == -1) or (y == -1) or (a == -1) or (b == -1):
            return
        try:
            xx = float(r[x + 1:y - 1])
            yy = float(r[y + 1:a - 1])
            aa = float(r[a + 1:b - 1])
            bb = float(r[b + 1:])
            log.write("X " + str(xx) + "\n")
            log.write("Y " + str(yy) + "\n")
            log.write("A " + str(aa) + "\n")
            log.write("B " + str(bb) + "\n")

            yy = 420 - yy
            bb = 420 - bb
        except:
            return
        x, y, a, b = Gcode.G0(xx, yy, aa, bb)
        nx = abs(xx - lastx)
        ny = abs(yy - lasty)
        na = abs(aa - lasta)
        nb = abs(bb - lastb)
        mx = max(nx, ny, na, nb)
        log.write("new X " + str(nx) + "\n")
        log.write("new Y " + str(ny) + "\n")
        log.write("new A " + str(na) + "\n")
        log.write("new B " + str(nb) + "\n")
        log.write("max travel " + str(mx) + "\n")
        #------------------------------interpolation--------------------------------------------
        fx, fy, fa, fb = nx, ny, na, nb
        if mx == 0:
            mx = 1
        if fx == 0:
            fx = mx
        if fy == 0:
            fy = mx
        if fa == 0:
            fa = mx
        if fb == 0:
            fb = mx
        fx = int(feedG0 / (mx / fx))
        fy = int(feedG0 / (mx / fy))
        fa = int(feedG0 / (mx / fa))
        fb = int(feedG0 / (mx / fb))
        log.write("feed X " + str(fx) + "\n")
        log.write("feed Y " + str(fy) + "\n")
        log.write("feed A " + str(fa) + "\n")
        log.write("feed B " + str(fb) + "\n")

        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 0, fx)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 1, fy)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 2, fa)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 3, fb)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        #---------------------------interpolation-end-------------------------------------------
        lastx, lasty, lasta, lastb = xx, yy, aa, bb
        if nx == mx:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 1, 140]))
            sleep(st)
            ser.write(x)
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(b)
            print("OK1")
            log.write("OK1\n")
            pass
        elif ny == mx:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 2, 141]))
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(x)
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(b)
            print("OK2")
            log.write("OK2\n")
            pass
        elif na == mx:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 4, 143]))
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(x)
            sleep(st)
            ser.write(b)
            print("OK3")
            log.write("OK3\n")
            pass
        else:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 8, 147]))
            sleep(st)
            ser.write(b)
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(x)
            print("OK4")
            log.write("OK4\n")
            pass
    #zpracovani prikazu G1 pro pohyb
    elif r.find("G1") != -1:
        log.write("G1\n")
        x = r.find("X")
        y = r.find("Y")
        a = r.find("A")
        b = r.find("B")
        if (x == -1) or (y == -1) or (a == -1) or (b == -1):
            return
        try:
            xx = float(r[x + 1:y - 1])
            yy = float(r[y + 1:a - 1])
            aa = float(r[a + 1:b - 1])
            bb = float(r[b + 1:])
            log.write("X " + str(xx) + "\n")
            log.write("Y " + str(yy) + "\n")
            log.write("A " + str(aa) + "\n")
            log.write("B " + str(bb) + "\n")

            yy = 420 - yy
            bb = 420 - bb
        except:
            return
        x, y, a, b = Gcode.G0(xx, yy, aa, bb)
        nx = abs(xx - lastx)
        ny = abs(yy - lasty)
        na = abs(aa - lasta)
        nb = abs(bb - lastb)
        mx = max(nx, ny, na, nb)
        log.write("new X " + str(nx) + "\n")
        log.write("new Y " + str(ny) + "\n")
        log.write("new A " + str(na) + "\n")
        log.write("new B " + str(nb) + "\n")
        log.write("max travel " + str(mx) + "\n")
        #------------------------------interpolation--------------------------------------------
        fx, fy, fa, fb = nx, ny, na, nb
        if mx == 0:
            mx = 1
        if fx == 0:
            fx = mx
        if fy == 0:
            fy = mx
        if fa == 0:
            fa = mx
        if fb == 0:
            fb = mx
        fx = int(feedG1 / (mx / fx))
        fy = int(feedG1 / (mx / fy))
        fa = int(feedG1 / (mx / fa))
        fb = int(feedG1 / (mx / fb))
        log.write("feed X " + str(fx) + "\n")
        log.write("feed Y " + str(fy) + "\n")
        log.write("feed A " + str(fa) + "\n")
        log.write("feed B " + str(fb) + "\n")

        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 0, fx)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 1, fy)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 2, fa)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, 3, fb)
        b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7, b8)
        byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
        ser.write(byte)
        sleep(st)
        #---------------------------interpolation-end-------------------------------------------
        lastx, lasty, lasta, lastb = xx, yy, aa, bb
        if nx == mx:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 1, 140]))
            sleep(st)
            ser.write(x)
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(b)
            print("OK1")
            log.write("OK1\n")
            pass
        elif ny == mx:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 2, 141]))
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(x)
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(b)
            print("OK2")
            log.write("OK2\n")
            pass
        elif na == mx:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 4, 143]))
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(x)
            sleep(st)
            ser.write(b)
            print("OK3")
            log.write("OK3\n")
            pass
        else:
            ser.write(bytearray([1, 138, 0, 0, 0, 0, 0, 8, 147]))
            sleep(st)
            ser.write(b)
            sleep(st)
            ser.write(y)
            sleep(st)
            ser.write(a)
            sleep(st)
            ser.write(x)
            print("OK4")
            log.write("OK4\n")
            pass
    #zpracovani prikazu G28 pro homeni
    elif r.find("G28") != -1:
        log.write("G28\n")
        for motor in range(0, 4):
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(193, motor, 1)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(x)
            sleep(sth)
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(194, motor, 2047)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            s = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(s)
            sleep(sth)
        x, y, a, b = Gcode.G28()
        ser.write(x)
        sleep(sth)
        ser.write(y)
        sleep(sth)
        ser.write(a)
        sleep(sth)
        ser.write(b)
        sleep(sth)
    #zpracovani prikazu G90 pro zmenu modu na ABS
    elif r.find("G90") != -1:
        global mode
        mode = Gcode.G90()
        log.write("G90\n")
    #zpracovani prikazu G91 pro zmenu modu na REL
    elif r.find("G91") != -1:
        mode = Gcode.G91()
        log.write("G91\n")
    #zpracovani prikazu M104 pro nahrivani
    elif r.find("M104") != -1:
        a = r.find("S")
        if a == -1:
            return
        temp = int(r[a + 1:])
        heat, send = Gcode.M104(temp)
        ser.write(send)
        sleep(st)
        log.write("M104\n")
        log.write("Temp " + str(temp) + "\n")
    #zpracovani prikazu M600 pro cekani
    elif r.find("M600") != -1:
        a = r.find("S")
        if a == -1:
            return
        t = int(r[a + 1:])
        Gcode.M600(t)
        log.write("M600\n")
        log.write("Time " + str(t) + "\n")
    #zpracovani prikazu F, pro feedrate
    elif r.find("F") != -1:
        a = r.find("F")
        if a == -1:
            return
        t = int(r[a + 1:])
        if t <= 2047:
            feedG1 = t
            log.write("Feedrate " + str(feedG1) + "\n")
        else:
            print("Too much feedrate!")
            log.write("Too much feedrate!\n")
    #zpracovani prikazu MST pro okamzite zastaveni motoru (nepouzivane)
    elif r.find("MST") != -1:
        log.write("MST\n")
        for motor in range(0, 4):
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, 3, 0, motor, 0, 0, 0,
                                                     0)
            x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(x)
            sleep(st)
    #reseni prazdnych radku a radku s "#"
    elif r == "":
        nothing, temp = Gcode.M104(0)
        for motor in range(0, 4):
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, motor, 2047)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(byte)
            sleep(0.001)
        if os.path.exists("/home/pi") or os.path.exists("/home/rpi"):
            os.system("kill " + str(emerg_pid))
            GPIO.output(4, GPIO.LOW)
        ser.write(temp)
        log.write("Empty string\n")
        log.close()
    elif r == "#":
        nothing, temp = Gcode.M104(0)
        for motor in range(0, 4):
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, motor, 2047)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(byte)
            sleep(0.001)
        if os.path.exists("/home/pi") or os.path.exists("/home/rpi"):
            os.system("kill " + str(emerg_pid))
            GPIO.output(4, GPIO.LOW)
        ser.write(temp)
        log.write("String = #\n")
        log.close()
    else:
        nothing, temp = Gcode.M104(0)
        for motor in range(0, 4):
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, motor, 2047)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(byte)
            sleep(0.001)
        if os.path.exists("/home/pi") or os.path.exists("/home/rpi"):
            os.system("kill " + str(emerg_pid))
            GPIO.output(4, GPIO.LOW)
        ser.write(temp)
        log.write("Unknown string\n")
        log.close()
コード例 #7
0
ファイル: GUI.py プロジェクト: Angoosh/EPP_cutter
        def command(instance):
            t = self.command.text
            global mode
            if t.find("G0") != -1:
                print("G0")
                x = t.find("X")
                y = t.find("Y")
                a = t.find("A")
                b = t.find("B")
                if (x == -1) or (y == -1) or (a == -1) or (b == -1):
                    self.terminal.text += "Command must be in form: G0 X Y A B\n"
                    return
                try:
                    xx = int(t[x + 1:y - 1])
                    yy = int(t[y + 1:a - 1])
                    aa = int(t[a + 1:b - 1])
                    bb = int(t[b + 1:])
                except:
                    self.terminal.text += "Command must be in form: G0 X Y A B\n"
                    return
                x, y, a, b = Gcode.G0(xx, yy, aa, bb)
                ser.write(x)
                sleep(0.001)
                ser.write(y)
                sleep(0.001)
                ser.write(a)
                sleep(0.001)
                ser.write(b)
                self.terminal.text += t + "\n"
                self.command.text = ""
            elif t.find("G1") != -1:
                print("G1")
                x = t.find("X")
                y = t.find("Y")
                a = t.find("A")
                b = t.find("B")
                if (x == -1) or (y == -1) or (a == -1) or (b == -1):
                    self.terminal.text += "Command must be in form: G1 X Y A B\n"
                    return
                try:
                    xx = int(t[x + 1:y - 1])
                    yy = int(t[y + 1:a - 1])
                    aa = int(t[a + 1:b - 1])
                    bb = int(t[b + 1:])
                except:
                    self.terminal.text += "Command must be in form: G1 X Y A B\n"
                    return
                x, y, a, b = Gcode.G1(xx, yy, aa, bb)
                ser.write(x)
                sleep(0.001)
                ser.write(y)
                sleep(0.001)
                ser.write(a)
                sleep(0.001)
                ser.write(b)
                self.terminal.text += t + "\n"
                self.command.text = ""
            elif t.find("G28") != -1:
                print("G28")
                x, y, a, b = Gcode.G28()
                for motor in range(0, 4):
                    b2, b3, b4, b5, b6, b7, b8 = i.SAP(193, motor, 1)
                    b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(
                        1, b2, b3, b4, b5, b6, b7, b8)
                    m = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
                    ser.write(m)
                    sleep(0.001)
                    b2, b3, b4, b5, b6, b7, b8 = i.SAP(194, motor, 2047)
                    b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(
                        1, b2, b3, b4, b5, b6, b7, b8)
                    s = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
                    ser.write(s)
                    sleep(0.001)
                ser.write(x)
                sleep(0.001)
                ser.write(y)
                sleep(0.001)
                ser.write(a)
                sleep(0.001)
                ser.write(b)
                self.terminal.text += t + "\n"
                self.command.text = ""
                self.xTravel.text = "0"
                self.yTravel.text = "0"
                self.aTravel.text = "0"
                self.bTravel.text = "0"
            elif t.find("G90") != -1:
                global mode
                mode = Gcode.G90()
                print("G90")
                self.terminal.text += t + "\n"
                self.command.text = ""
            elif t.find("G91") != -1:

                mode = Gcode.G91()
                print("G91")
                self.terminal.text += t + "\n"
                self.command.text = ""
            elif t.find("M104") != -1:
                a = t.find("S")
                if a == -1:
                    self.terminal.text += "Command must be in form: M104 S\n"
                    return
                temp = int(t[a + 1:])
                heat, send = Gcode.M104(temp)
                print(heat)
                ser.write(send)
                self.terminal.text += t + "\n"
                self.command.text = ""
            elif t.find("MST") != -1:
                for motor in range(0, 4):
                    b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(
                        1, 3, 0, motor, 0, 0, 0, 0)
                    x = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
                    ser.write(x)
                print("MST")
                self.terminal.text += t + "\n"
                self.command.text = ""
            elif t == "":
                self.terminal.text += "No command specified\n"
            elif t.find("command") != -1:
                if len(t) > 8:
                    x = t[8:]
                    subprocess.call(x, shell=True)
                else:
                    self.terminal.text += "Must be in form command <com>"
            else:
                self.terminal.text += "Unknown command: " + self.command.text + "\n"
                self.command.text = ""
コード例 #8
0
def cli(x):
    """
    This is CLI for hot wire EPP cutter. For help enter help.
    
    Instructions are:
        help - shows help
        port - takes one argument, for connecting to selected port
        listports - lists all available ports, no arguments
        connect - connect to port on which cutter is, no arguments
        disconnect - to disconnect from cutter, no arguments
        gcode - takes one argument, gcode which will be printing from
        cut - for cutting, no arguments
        stop - immediate stop of cutting, no arguments
        exit - to exit application, note that sender will continue sending gcode to the cutter
        G0, G1, G28, G90, G91, M104, MST - as genetral cutter commands, arguments:
            G0 X Y A B
            G1 X Y A B
            G28
            G90
            G91
            M104 S
        
        RESET - for resetting TMCM-6110, reconnect required    
        command - for direct single line shell command input. If needed more commands
                  it must be in form: <first command> ; <second command> ; ...
                  
    Default port is /dev/ttyACM0
    dimensions: X,A = 890;Y,B = 415
    """
    t = x
    global mode
    global serPort
    global ser
    global file
    global globX, globY, globA, globB

    #obsluha vlozenych prikazu
    if t.find("G0") != -1:
        x = t.find("X")
        y = t.find("Y")
        a = t.find("A")
        b = t.find("B")
        if (x == -1) or (y == -1) or (a == -1) or (b == -1):
            print("Command must be in form: G0 X Y A B\n")
            return
        try:
            xx = int(t[x + 1:y - 1])
            yy = int(t[y + 1:a - 1])
            aa = int(t[a + 1:b - 1])
            bb = int(t[b + 1:])
        except:
            print("Command must be in form: G0 X Y A B\n")
            return
        x, y, a, b = Gcode.G0(xx, yy, aa, bb)
        if mode == "REL":
            globX = globX + xx
            globY = globY + yy
            globA = globA + aa
            globB = globB + bb
            if globX <= 900 and globY <= 420 and globA <= 900 and globB <= 420:
                ser.write(x)
                sleep(0.001)
                ser.write(y)
                sleep(0.001)
                ser.write(a)
                sleep(0.001)
                ser.write(b)
            else:
                print("max travel X,A = 900 Y,B = 420")
                print("X = " + str(globX))
                print("Y = " + str(globY))
                print("A = " + str(globA))
                print("B = " + str(globB))
        else:
            if xx <= 900 and yy <= 420 and aa <= 900 and bb <= 420:
                globX = xx
                globY = yy
                globA = aa
                globB = bb
                ser.write(x)
                sleep(0.001)
                ser.write(y)
                sleep(0.001)
                ser.write(a)
                sleep(0.001)
                ser.write(b)
            else:
                print("max travel X,A = 900 Y,B = 420")
    elif t.find("G1") != -1:
        x = t.find("X")
        y = t.find("Y")
        a = t.find("A")
        b = t.find("B")
        if (x == -1) or (y == -1) or (a == -1) or (b == -1):
            print("Command must be in form: G1 X Y A B\n")
            return
        try:
            xx = int(t[x + 1:y - 1])
            yy = int(t[y + 1:a - 1])
            aa = int(t[a + 1:b - 1])
            bb = int(t[b + 1:])
        except:
            print("Command must be in form: G1 X Y A B\n")
            return
        x, y, a, b = Gcode.G1(xx, yy, aa, bb)
        if mode == "REL":
            globX = globX + xx
            globY = globY + yy
            globA = globA + aa
            globB = globB + bb
            if globX <= 900 and globY <= 420 and globA <= 900 and globB <= 420:
                ser.write(x)
                sleep(0.001)
                ser.write(y)
                sleep(0.001)
                ser.write(a)
                sleep(0.001)
                ser.write(b)
            else:
                print("max travel X,A = 900 Y,B = 420")
                print("X = " + str(globX))
                print("Y = " + str(globY))
                print("A = " + str(globA))
                print("B = " + str(globB))
        else:
            if xx <= 900 and yy <= 420 and aa <= 900 and bb <= 420:
                globX = xx
                globY = yy
                globA = aa
                globB = bb
                ser.write(x)
                sleep(0.001)
                ser.write(y)
                sleep(0.001)
                ser.write(a)
                sleep(0.001)
                ser.write(b)
            else:
                print("max travel X,A = 900 Y,B = 420")
    elif t.find("G28") != -1:
        x, y, a, b = Gcode.G28()
        for motor in range(0, 4):
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(193, motor, 1)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            m = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(m)
            sleep(0.001)
            b2, b3, b4, b5, b6, b7, b8 = i.SAP(194, motor, 2047)
            b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(1, b2, b3, b4, b5, b6, b7,
                                                     b8)
            s = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
            ser.write(s)
            sleep(0.001)
        globX, globY, globA, globB = 0, 0, 0, 0
        ser.write(x)
        sleep(0.001)
        ser.write(y)
        sleep(0.001)
        ser.write(a)
        sleep(0.001)
        ser.write(b)
        sleep(0.001)
    elif t.find("G90") != -1:
        mode = Gcode.G90()
    elif t.find("G91") != -1:
        mode = Gcode.G91()
    elif t.find("M104") != -1:
        a = t.find("S")
        if a == -1:
            print("Command must be in form: M104 S\n")
            return
        temp = int(t[a + 1:])
        heat, send = Gcode.M104(temp)
        ser.write(send)
    elif t.find("RESET") != -1:
        RESET()
    #zadani serioveho portu
    elif t.find("port") != -1:
        serPort = t[5:]
    #pripojeni k portu
    elif t.find("connect") != -1:
        try:
            ser = Gcode.connection(serPort)
            sleep(0.2)
            config.func()
            for motor in range(0, 4):
                b2, b3, b4, b5, b6, b7, b8 = i.SAP(4, motor, 2047)
                b1, b2, b3, b4, b5, b6, b7, b8, b9 = par(
                    1, b2, b3, b4, b5, b6, b7, b8)
                byte = bytearray([b1, b2, b3, b4, b5, b6, b7, b8, b9])
                ser.write(byte)
                sleep(0.001)
        except:
            ""
    #odpojeni od portu
    elif t.find("disconnect") != -1:
        ser.close()
        ser = Exceptions()
    #zadani cesty k gcode souboru
    elif t.find("gcode") != -1:
        y = t[6:]
        gcoload(y)
    #spusteni rezani
    elif t.find("cut") != -1:
        if file != "":
            sendComm()
            print("Starting sender")
            sleep(1)
            openSender()
        else:
            print("no file for cutting selected")
    #zastaveni
    elif t.find("stop") != -1:
        STOP()
    #vypnuti CLI
    elif t.find("exit") != -1:
        pid = os.getpid()
        subprocess.call("kill " + str(pid), shell=True)
    #zadani shell prikazu
    elif t.find("command") != -1:
        if len(t) > 8:
            x = t[8:]
            subprocess.call(x, shell=True)
        else:
            subprocess.call(input("command: "), shell=True)
    elif t.find("listports") != -1:
        PortString = subprocess.check_output("ls /dev/tty*",
                                             shell=True).decode('utf-8')
        PortsAvailable = re.findall(r"ttyUSB[\w\.-]+|ttyACM[\w\.-]+",
                                    PortString)
        print(PortsAvailable)
    #vypsani help
    elif t.find("help") != -1:
        print(cli.__doc__)
    #osetreni nezadaneho nebo spatne zadaneho prikazu
    elif t == "":
        print("No command given\n")
    else:
        print("Unknown command: " + t)