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)
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)
#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)
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)
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)
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)
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)
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':