def setUp(self):
     self.s3g_mock = mock.Mock(makerbot_driver.s3g)
     self.inquisitor = makerbot_driver.MachineInquisitor('/dev/dummy_port')
     self.inquisitor.create_s3g = mock.Mock()
     self.inquisitor.create_s3g.return_value = self.s3g_mock
     self.factory = makerbot_driver.MachineFactory()
     self.factory.create_inquisitor = mock.Mock()
     self.factory.create_inquisitor.return_value = self.inquisitor
 def create_parser(self):
     factory = makerbot_driver.MachineFactory()
     machine = factory.build_from_port(self.usb_info.get('COM'))
     assembler = makerbot_driver.GcodeAssembler(machine.profile)
     parser = machine.gcodeparser
     start, end, variables = assembler.assemble_recipe()
     parser.environment.update(variables)
     return parser
Exemple #3
0
 def _connect(
     self, port, condition
 ):  # TODO: move this to the machine's `connect` since that's the only place it is currently used
     machine_factory = makerbot_driver.MachineFactory(self._profile_dir)
     return_object = machine_factory.build_from_port(port.path,
                                                     condition=condition)
     s3g = return_object.s3g
     return s3g
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)
Exemple #5
0
 def new_machine_from_port(self, port, profile):
     machine = port.get_machine()
     if None is not machine:
         if None is not profile and profile != machine.get_profile():
             raise conveyor.error.ProfileMismatchException()
     else:
         if None is not profile:
             s3g_profile = profile._s3g_profile
         else:
             machine_factory = makerbot_driver.MachineFactory(
                 self._profile_dir)
             while True:
                 try:
                     return_object = machine_factory.build_from_port(
                         port.path, False)
                 except makerbot_driver.BuildCancelledError:
                     pass
                 else:
                     break
             s3g_profile = return_object.profile
         machine_name = port.get_machine_name()
         profile = _S3gProfile._create(s3g_profile.name, self, s3g_profile)
         machine = _S3gMachine._create(machine_name, self, profile)
     return machine
Exemple #6
0
    "--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)
 def setUp(self):
     self.factory = makerbot_driver.MachineFactory()
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)