Пример #1
0
def main():
    print('setup swift ...')

    swift = SwiftAPI()

    print('sleep 2 sec ...')
    sleep(2)

    print('device info: ')
    print(swift.get_device_info())

    movements = [
        {
            'x': 180,
            'y': 180,
            'z': 30
        },
        {
            'x': 180,
            'y': -180,
            'z': 30
        },
        {
            'x': 250,
            'y': 0,
            'z': 150
        },
        {
            'x': 150,
            'y': 0,
            'z': 30
        },
    ]

    for movement in movements:
        print('\nset ' + ' '.join(
            ["%s%d" % (key.upper(), value)
             for key, value in movement.items()]))
        swift.set_position(wait=True, **movement)
        sleep(0.1)
        while swift.get_is_moving():
            sleep(0.1)
        swift.set_buzzer()

    print('done ...')
    while True:
        sleep(1)
Пример #2
0
def main():
    logging.info('setup swift ...')
    swift = SwiftAPI()
    sleep(2)

    logging.info('device info: ')
    device_info = swift.get_device_info()
    logging.info(device_info)
    logging.info('firmware version:')
    fw_version = tuple(int(number) for number in device_info[2].split('.'))
    logging.info(fw_version)

    print('set mode to 3D print: %s' % send_cmd_sync_ok(swift, 'M2400 S2'))

    print('enable fan: %s' % send_cmd_sync_ok(swift, 'M106'))

    print('set temperature units: %s' % send_cmd_sync_ok(swift, 'M149 C'))

    # print('temperature hack: %s' % send_cmd_sync_ok(swift, 'M2213 V0'))

    print('set hotend to 205: %s' % send_cmd_sync_ok(swift, 'M104 S205'))

    print('wait for hotend...')
    while True:
        sleep(10)
        swift.flush_cmd()
        temp = send_cmd_sync_ok(swift, 'M105', TEMP_RESPONSE_REGEX)
        logging.info("temp is: %s" % temp)
        try:
            temp = float(temp)
        except ValueError:
            ValueError("Temp response was not a float: %s" % temp)

        if temp > 190:
            break

    print("retracting extruder...")
    response = send_cmd_sync_ok(swift, "G2204 E-60 F200")
    logging.debug("response: %s" % response)
    while True:
        response = send_cmd_sync_ok(swift, "G2204 E-10 F1000")
        logging.debug("response: %s" % response)

    print('done ...')
    while True:
        sleep(1)
Пример #3
0
#logger_init(logging.VERBOSE)
#logger_init(logging.DEBUG)
logger_init(logging.INFO)

print('setup swift ...')

#swift = SwiftAPI(dev_port = '/dev/ttyACM0')
#swift = SwiftAPI(filters = {'hwid': 'USB VID:PID=2341:0042'})
swift = SwiftAPI()  # default by filters: {'hwid': 'USB VID:PID=2341:0042'}

print('sleep 2 sec ...')
sleep(2)

print('device info: ')
print(swift.get_device_info())

print('\nset X350 Y0 Z100 F1500 ...')
# for the non-pro swift by current firmware,
# you have to specify all arguments for x, y, z and the speed
swift.set_position(330, 0, 100, speed=1500, timeout=20)
swift.flush_cmd()  # avoid follow 5 command timeout

print('\nset X340 ...')
swift.set_position(330, 0, 150, speed=1500)
print('set X320 ...')
swift.set_position(320, 0, 150, speed=1500)
print('set X300 ...')
swift.set_position(300, 0, 150, speed=1500)
print('set X200 ...')
swift.set_position(200, 0, 150, speed=1500)
Пример #4
0
vlz = tkinter.StringVar()
vlw = tkinter.StringVar()

uxx.set(150)
uyy.set(0)
uzz.set(150)
uww.set(90)

vlx.set('X=150')
vly.set('Y=0')
vlz.set('Z=150')
vlw.set('W=90')

info = tkinter.Label(
    mainFrame,
    text=swift.get_device_info(),
    font=("Helvetica", 11),
)
#info = tkinter.Label(mainFrame, text = 'xxxx xxxx xxxx xxxx xxxx',font=("Helvetica", 16),)
info.grid(column=2, row=20, columnspan=4)

ux = tkinter.Scale(mainFrame,
                   orient=tkinter.VERTICAL,
                   length=350,
                   from_=110,
                   to=350,
                   variable=uxx,
                   command=get_slider,
                   label='x Achse',
                   resolution=0.5)
ux.grid(column=0, row=1, rowspan=40)
Пример #5
0
import sys, os
from time import sleep

sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

# from uf.wrapper.uarm_api import UarmAPI
from uf.wrapper.swift_api import SwiftAPI
from uf.utils.log import *

print('Start Testing')

swiftPro = SwiftAPI()

sleep(2)
print(swiftPro.get_device_info())

while True:
    print('\nset X340 ...')
    swiftPro.set_position(340, 0, 150)
    print('set X320 ...')
    swiftPro.set_position(320, 0, 150)
    print('set X300 ...')
    swiftPro.set_position(300, 0, 150)
    print('set X200 ...')
    swiftPro.set_position(200, 0, 150)
    print('set X190 ...')
    swiftPro.set_position(190, 0, 150)
    swiftPro.flush_cmd()
    swiftPro.set_buzzer()
    print('doneOnce')
    sleep(10)
Пример #6
0
def main():
    print('setup swift ...')
    swift = SwiftAPI()
    sleep(2)

    print('device info: ')
    device_info = swift.get_device_info()
    print(device_info)
    print('firmware version:')
    fw_version = tuple(int(number) for number in device_info[2].split('.'))
    print(fw_version)
    fw_has_b_angles = (fw_version >= (3, 1, 16))

    print('EEPROM Values: ')
    print('-> reference_angle_value:')
    # in uArmParams.h
    # define EEPROM_ON_CHIP                         0
    # define EEPROM_REFERENCE_VALUE_ADDR            800
    # define EEPROM_REFERENCE_VALUE_B_FLAG_ADDR     818
    # define EEPROM_REFERENCE_VALUE_B_ADDR          820
    # define DATA_TYPE_BYTE                         1
    # define DATA_TYPE_INTEGER                      2
    #
    # in uArmCalibration.cpp
    # uint8_t reference_angle_flag =
    #     getE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_B_FLAG_ADDR, DATA_TYPE_BYTE);
    # reference_angle_value[X_AXIS] =
    #     getE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR, DATA_TYPE_INTEGER);
    # reference_angle_value[Y_AXIS] =
    #     getE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+2, DATA_TYPE_INTEGER);
    # reference_angle_value[Z_AXIS] =
    #     getE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+4, DATA_TYPE_INTEGER);
    reference_angle_flag = 0
    if fw_has_b_angles:
        reference_angle_flag = send_cmd_sync_ok(swift, 'M2211 N0 A818 T1')
    reference_angle_value = []
    reference_angle_addr = 800
    if reference_angle_flag:
        reference_angle_addr = 820
    for offset in range(0, 6, 2):
        reference_angle_value.append(
            send_cmd_sync_ok(
                swift, 'M2211 N0 A%d T2' % (reference_angle_addr + offset),
                SIMPLE_RESPONSE_REGEX))
    print(reference_angle_value)

    print("-> height offset:")
    # in uArmParams.h
    # define EEPROM_HEIGHT_ADDR	    910
    # define DATA_TYPE_FLOAT        4

    # in uArmCalibration.cpp
    # getE2PROMData(EEPROM_ON_CHIP, EEPROM_HEIGHT_ADDR, DATA_TYPE_FLOAT);
    height_offset = send_cmd_sync_ok(swift, "M2211 N0 A910 T4",
                                     SIMPLE_RESPONSE_REGEX)
    print(height_offset)

    print("-> front offset:")
    # in uArmParams.h
    # define EEPROM_FRONT_ADDR      920

    # in uArmCalibration.cpp
    # getE2PROMData(EEPROM_ON_CHIP, EEPROM_FRONT_ADDR, DATA_TYPE_FLOAT);
    front_offset = send_cmd_sync_ok(swift, "M2211 N0 A920 T4",
                                    SIMPLE_RESPONSE_REGEX)
    print(front_offset)

    # print('resetting...')
    # swift.reset()

    # swift.set_servo_detach(2, wait=True)
    # sleep(1)
    # swift.set_servo_detach(1, wait=True)
    # sleep(1)
    # swift.set_servo_detach(0, wait=True)
    swift.set_servo_detach(wait=True)
    print("Servos detatched")

    # print("now you can position the arm on the X-Z plane (rotation locked at zero)")

    while True:
        sleep(1)
        print("Make your selection:")
        print(" - Press enter to get calibration data")
        print(" - Press s to set reference angle")
        if fw_has_b_angles:
            print(" - Press b to set reference angle B")
        else:
            print(" - [reference angle B not supported by firmware %s]" %
                  fw_version)
        print(" - Press h to zero height")
        print(" - Press Ctrl-C to exit")
        raw_in = input("...")
        # swift.set_servo_attach(wait=True)
        # print("get_position: %s" % swift.get_position())

        # hack to update current position on device
        send_cmd_sync_ok(swift, "M2400 S1")

        values = OrderedDict()

        # Raw sensor values
        response = send_cmd_sync_ok(swift, "P2242")
        values['sensor'] = OrderedDict([(token[0], token[1:])
                                        for token in response.split(" ")[1:]])

        # Cartesian coordinates
        response = send_cmd_sync_ok(swift, "P2220")
        values['cartesian'] = OrderedDict([
            (token[0], token[1:]) for token in response.split(" ")[1:]
        ])

        # angle values
        values['angle'] = OrderedDict()
        for index, name in [(0, 'B'), (1, 'L'), (2, 'R')]:
            response = send_cmd_sync_ok(swift, "P2206 N%s" % index)
            values['angle'][name] = response.split(" ")[1][1:]

        print("; ".join([
            ", ".join([
                "%s:%+07.2f" % (key, float(value))
                for key, value in values[dictionary].items()
            ]) for dictionary in ['sensor', 'cartesian', 'angle']
        ]))

        if raw_in == "s":
            print("M2401: %s" % send_cmd_sync_ok(swift, "M2401 V22765"))
        elif fw_has_b_angles and raw_in == "b":
            print("M2401: %s" % send_cmd_sync_ok(swift, "M2401 B"))
        elif raw_in == "h":
            print("M2410: %s" % send_cmd_sync_ok(swift, "M2410"))
        else:
            logging.warning("did not understand command: %s" % raw_in)

        # swift.set_buzzer()
        # swift.set_servo_detach(wait=True)

    print('done ...')
    while True:
        sleep(1)
Пример #7
0
class XYZSlider(QWidget):
    def __init__(self):
        print('here')
        self.a = QApplication(sys.argv)
        super().__init__()
        self.initUI()

    def show_ux(self):
        sys.exit(self.a.exec_())

    def initUI(self):

        self.setGeometry(10, 10, 1500, 500)

        self.addSliderZ()
        self.addSliderX()
        self.addSliderY()

        self.addGripperButton()

        self.connectButton = QPushButton('Connect', self)
        self.connectButton.clicked.connect(self.handleConnectButton)

        self.exitButton = QPushButton('Exit', self)
        self.exitButton.clicked.connect(self.handleExitButton)

        self.setGeometry(300, 300, 1500, 500)
        self.setWindowTitle('Control Sliders')

        self.sld1.setEnabled(False)
        self.sldX.setEnabled(False)
        self.sldY.setEnabled(False)
        self.gripperButton.setEnabled(False)
        self.mylayout()

        self.show()

    def mylayout(self):

        self.qwsld = QWidget()
        self.qwsld.setStyleSheet("Background-color: red")

        self.grid = QGridLayout(self.qwsld)
        self.setLayout(self.grid)

        self.subW = QWidget()
        self.grid.addWidget(self.subW, 1, 1)
        self.subGridW = QGridLayout(self.subW)
        self.setLayout(self.subGridW)

        self.dummyW = QWidget()

        connectButtonPos = {"r": 1, "c": 1}
        exitButtonPos = {"r": 1, "c": 2}
        gripperButtonPos = {"r": 2, "c": 1}
        self.grid.addWidget(self.dummyW, 2, 2)

        zSliderPos = {"r": 2, "c": 1}
        zLabelPos = {"r": zSliderPos['r'], "c": 2}

        xSliderPos = {"r": zSliderPos['r'] + 1, "c": zSliderPos['c']}
        xLabelPos = {"r": zLabelPos['r'] + 1, "c": zLabelPos['c']}

        ySliderPos = {"r": zSliderPos['r'] + 2, "c": zSliderPos['c']}
        yLabelPos = {"r": zLabelPos['r'] + 2, "c": zLabelPos['c']}

        print(connectButtonPos["r"], "  ", connectButtonPos["c"])

        self.subGridW.addWidget(self.connectButton, connectButtonPos["r"],
                                connectButtonPos["c"])

        self.subGridW.addWidget(self.exitButton, exitButtonPos["r"],
                                exitButtonPos["c"])

        self.subGridW.addWidget(self.gripperButton, gripperButtonPos["r"],
                                gripperButtonPos["c"])

        self.grid.addWidget(self.l1, zLabelPos["r"], zLabelPos["c"])

        self.grid.addWidget(self.sld1, zSliderPos["r"], zSliderPos["c"])

        self.grid.addWidget(self.lX, xLabelPos["r"], xLabelPos["c"])

        self.grid.addWidget(self.sldX, xSliderPos["r"], xSliderPos["c"])

        self.grid.addWidget(self.lY, yLabelPos["r"], yLabelPos["c"])

        self.grid.addWidget(self.sldY, ySliderPos["r"], ySliderPos["c"])

    def addGripperButton(self):
        self.gripper = True
        self.gripperButton = QPushButton('Gripper', self)
        self.gripperButton.clicked.connect(self.handleGripperButton)

    def handleConnectButton(self):
        print('In ConnectButton ')
        self.swift = SwiftAPI(dev_port='COM4')
        sleep(2)
        print(self.swift.get_device_info())
        print('set x=150, y=0, z=150')
        self.uarmZ = 150
        self.uarmX = 150
        self.uarmY = 0
        self.swift.set_position(x=self.uarmX,
                                y=self.uarmY,
                                z=self.uarmZ,
                                wait=True,
                                speed=2000)
        self.swift.set_gripper(self.gripper)

        self.sld1.setValue(self.uarmZ)
        self.sldX.setValue(self.uarmX)
        self.sldY.setValue(self.uarmY)
        self.sld1.setEnabled(True)
        self.sldX.setEnabled(True)
        self.sldY.setEnabled(True)
        self.gripperButton.setEnabled(True)

        self.connectButton.setEnabled(False)

    def handleGripperButton(self):
        self.gripper = False if self.gripper else True  #toggle
        self.swift.set_gripper(self.gripper)
        sleep(4)

    def handleExitButton(self):
        sys.exit()

#----------------------Z----------------

    def changeValueSld1(self):
        txt = "Z: " + str(self.sld1.value())
        self.l1.setText(txt)
        #print('changeValue slider is: ', self.sld1.value())

    def sliderReleaseSld1(self):
        print('sliderreleased slider is: ', self.sld1.value())
        self.uarmZ = self.sld1.value()
        self.swift.set_position(z=self.uarmZ, wait=True, speed=2000)

    def addSliderZ(self):
        self.sld1 = QSlider(Qt.Horizontal, self)
        p = self.sld1.palette()
        p.setColor(self.sld1.backgroundRole(), Qt.red)
        self.sld1.setPalette(p)
        self.sld1.setFocusPolicy(Qt.NoFocus)
        self.sld1.setGeometry(30, 40, 1000, 30)
        self.sld1.setMaximum(150)
        self.sld1.setMinimum(0)
        self.sld1.setTickPosition(QSlider.TicksBelow)
        self.sld1.setTickInterval(5)
        self.sld1.sliderReleased.connect(self.sliderReleaseSld1)
        self.sld1.valueChanged.connect(self.changeValueSld1)
        self.l1 = QLabel(self)
        self.l1.setForegroundRole(QPalette.Dark)
        self.l1.setText('Z:')

#-----------x-----------------------------------------------

    def addSliderX(self):
        self.sldX = QSlider(Qt.Horizontal, self)
        p = self.sldX.palette()
        p.setColor(self.sldX.backgroundRole(), Qt.red)
        self.sldX.setPalette(p)
        self.sldX.setFocusPolicy(Qt.NoFocus)
        self.sldX.setGeometry(30, 40, 1000, 30)
        self.sldX.setMaximum(350)
        self.sldX.setMinimum(100)
        self.sldX.setTickPosition(QSlider.TicksBelow)
        self.sldX.setTickInterval(5)
        self.sldX.sliderReleased.connect(self.sliderReleaseSldX)
        self.sldX.valueChanged.connect(self.changeValueSldX)

        self.lX = QLabel(self)
        self.lX.setForegroundRole(QPalette.Dark)
        self.lX.setText('X:')

    def changeValueSldX(self):
        txt = "X: " + str(self.sldX.value())
        self.lX.setText(txt)
        #print('changeValue slider is: ', self.sld1.value())

    def sliderReleaseSldX(self):
        print('sliderreleased X slider : ', self.sldY.value())
        self.uarmX = self.sldX.value()
        self.swift.set_position(x=self.uarmX, wait=True, speed=2000)

#-----------Y-----------------------------------------------

    def addSliderY(self):
        self.sldY = QSlider(Qt.Horizontal, self)
        p = self.sldY.palette()
        p.setColor(self.sldY.backgroundRole(), Qt.red)
        self.sldY.setPalette(p)
        self.sldY.setFocusPolicy(Qt.NoFocus)
        self.sldY.setGeometry(30, 40, 1000, 30)
        self.sldY.setMaximum(100)
        self.sldY.setMinimum(-100)
        self.sldY.setTickPosition(QSlider.TicksBelow)
        self.sldY.setTickInterval(5)
        self.sldY.sliderReleased.connect(self.sliderReleaseSldY)
        self.sldY.valueChanged.connect(self.changeValueSldY)

        self.lY = QLabel(self)
        self.lY.setForegroundRole(QPalette.Dark)
        self.lY.setText('Y:')

    def changeValueSldY(self):
        txt = "Y: " + str(self.sldY.value())
        self.lY.setText(txt)
        #print('changeValue slider is: ', self.sld1.value())

    def sliderReleaseSldY(self):
        print('sliderreleased Y slider : ', self.sldY.value())
        self.uarmY = self.sldY.value()
        self.swift.set_position(y=self.uarmY, wait=True, speed=2000)
Пример #8
0
def str2bool(v):
    return v.lower() in ("yes", "true", "t", "1")


logger_init(logging.DEBUG)

print('setup swift ...')

swift = SwiftAPI(dev_port='/dev/ttyACM0')

print('sleep 2 sec ...')
sleep(2)

print('device info: ')
print(swift.get_device_info())

sock = socket.socket()
host = '192.168.0.27'  #ip of raspberry pi
port = 12345
sock.bind((host, port))
sock.listen(5)
while True:
    print('waiting for a connection')
    connection, client_address = sock.accept()
    try:
        print('client connected: {}'.format(client_address))
        while True:
            data = connection.recv(128).decode()
            print('received {}"'.format(str(data)))
            if data == 'position':