예제 #1
0
 def setUp(self):
     self.md = makerbot_driver.MachineDetector()
     self.list_ports_mock = mock.Mock()
     self.md.list_ports_by_vid_pid = self.list_ports_mock
     self.s3g_mock = mock.Mock()
     self.md.create_s3g = mock.Mock()
     self.md.create_s3g.return_value = self.s3g_mock
예제 #2
0
파일: s3g.py 프로젝트: jsadusk/conveyor
 def __init__(self, config, server):
     conveyor.stoppable.StoppableThread.__init__(self)
     self._available = {}
     self._blacklist = {}
     self._config = config
     self._condition = threading.Condition()
     self._detector = makerbot_driver.MachineDetector()
     self._log = logging.getLogger(self.__class__.__name__)
     self._server = server
     self._stop = False
예제 #3
0
 def test_leaves_bot_open(self):
     ignore = raw_input("Please Verify a valid MakerBot is connected(Y/n)>")
     self.assertEqual(ignore.lower(), 'Y'.lower())
     md = makerbot_driver.MachineDetector()
     md.scan()
     availMachine = md.get_first_machine()
     self.assertTrue(availMachine != None)
     print(availMachine)
     bFact = makerbot_driver.BotFactory()
     s3gObj, profile = bFact.build_from_port(availMachine, False)
     # re-opening s3g here fails
     self.assertFalse(s3gObj.is_open())
예제 #4
0
 def autoConnect(self):
     self.connected = False
     machineDetector = makerbot_driver.MachineDetector()
     machineDetector.scan()
     machines = machineDetector.get_available_machines()
     ports = machines.keys()
     for port in ports:
         machineName = machineDetector.get_machine_name_from_vid_pid(machines[port]["VID"], machines[port]["PID"])
         if machineName != None:
             try:
                 self.connect(port, machineName)
             except Exception as e:
                 raise e
             if self.connected:
                 break
예제 #5
0
def main():
    parser = optparse.OptionParser()
    parser.add_option(
        "-m",
        "--machine",
        dest="machine",
        help="machine type to scan for, example ReplicatorSingle",
        default="The Replicator 2")
    parser.add_option("-p",
                      "--port",
                      dest="port",
                      help="The port you want to connect to (OPTIONAL)",
                      default=None)
    parser.add_option(
        "-s",
        "--sequences",
        dest="sequences",
        help="Flag to not use makerbot_driver's start/end sequences",
        default=False,
        action="store_true")

    (options, args) = parser.parse_args()

    if options.port is None:
        md = makerbot_driver.MachineDetector()
        md.scan(options.machine)
        port = md.get_first_machine()
        if port is None:
            print "Can't Find %s" % (options.machine)
            sys.exit()
    else:
        port = options.port
    factory = makerbot_driver.MachineFactory()
    obj = factory.build_from_port(port)

    reset = True
    filenames = []
    filename = True
    while filename:
        filename = str(obj.s3g.get_next_filename(reset)[:-1])
        reset = False
        if filename:
            filenames.append(filename)
    print(filenames)
예제 #6
0
    "-c",
    "--context",
    dest="context",
    help=
    "context for the eeprom_entry, as comma separated values surrounded by quotes",
    default="")
(options, args) = parser.parse_args()

context = options.context.replace(' ', '')
context = context.split(',')
for c in context:
    if c == '':
        context.remove(c)

if options.port is None:
    md = makerbot_driver.MachineDetector()
    md.scan(options.machine)
    port = md.get_first_machine()
    if port is None:
        print "Cant Find %s" % (options.machine)
        sys.exit()
else:
    port = options.port
factory = makerbot_driver.MachineFactory()
returnobj = factory.build_from_port(port)
r = getattr(returnobj, 's3g')

reader = makerbot_driver.EEPROM.EepromReader.factory(
    r, firmware_version=options.version)

print reader.read_data(options.eeprom_entry, context)
예제 #7
0
 def setUp(self):
     self.md = makerbot_driver.MachineDetector()
예제 #8
0
 def setUp(self):
     self.md = makerbot_driver.MachineDetector()
     self.list_ports_mock = mock.Mock()
     self.md.list_ports_by_vid_pid = self.list_ports_mock
예제 #9
0
def main():
    parser = optparse.OptionParser()
    parser.add_option(
        "-f", "--filename", dest="filename",
        help="gcode file to print", default=False)
    parser.add_option(
        "-m", "--machine", dest="machine",
        help="machine type to scan for, example ReplicatorSingle",
        default="The Replicator 2")
    parser.add_option(
        "-p", "--port", dest="port",
        help="The port you want to connect to (OPTIONAL)",
        default=None)
    parser.add_option(
        "-s", "--sequences", dest="sequences",
        help="Flag to not use makerbot_driver's start/end sequences",
        default=False, action="store_true")

    (options, args) = parser.parse_args()

    if options.port is None:
        md = makerbot_driver.MachineDetector()
        md.scan(options.machine)
        port = md.get_first_machine()
        if port is None:
            print "Can't Find %s" % (options.machine)
            sys.exit()
    else:
        port = options.port
    factory = makerbot_driver.MachineFactory()
    obj = factory.build_from_port(port)

    assembler = makerbot_driver.GcodeAssembler(getattr(obj, 'profile'))
    start, end, variables = assembler.assemble_recipe()
    start_gcode = assembler.assemble_start_sequence(start)
    end_gcode = assembler.assemble_end_sequence(end)

    filename = os.path.basename(options.filename)
    filename = os.path.splitext(filename)[0]

    parser = getattr(obj, 'gcodeparser')
    parser.environment.update(variables)
    parser.state.values["build_name"] = filename[:15]

    log.info('Using %s on %s with %s', factory, port, variables)

    def exec_line(line):
        while True:
            try:
                parser.execute_line(line)
                break
            except makerbot_driver.BufferOverflowError:
                try:
                    parser.s3g.writer._condition.wait(.2)
                except RuntimeError:
                    time.sleep(.2)

    if options.sequences:
        for line in start_gcode:
            exec_line(line)
    with open(options.filename) as f:
        for line in f:
            exec_line(line)
    if options.sequences:
        for line in end_gcode:
            exec_line(line)