Интегриране на РепРап в Blender

From RepRap
Revision as of 13:29, 28 February 2012 by Radoslav (talk | contribs)
Jump to: navigation, search

Това е първият ми опит за интегриране на РепРап в Blender.
За целта ще използваме последната версия на Blender [1], PySerial [2].

Необходим софтуер:

1. Blender 3.61
2. pyserial (инсталация за python3)

Хардуер:
1. RepRap Prusa с инсталиран Sprinter [3] firmware.

Последователност в Blender:

Примерна връзка на репрап в Блендер:

import sys
sys.path.append('/usr/local/lib/python3.2/dist-packages/') # path to pyserial for python 3.2

from serial import Serial
import glob

printer.write(word.encode('ascii'))

def scanserial():
    """scan for available ports. return a list of device names."""
    baselist=[]
#       if os.name=="nt":
#       try:
#           key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM")
#               i=0
#               while(1):
#                   baselist+=[_winreg.EnumValue(key,i)[1]]
#                   i+=1
#       except:
#           pass

    return baselist+glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + glob.glob("/dev/tty.*") + glob.glob("/dev/cu.*") + glob.glob("/dev/rfcomm*")

def testport():        
    """Test found available port from scanserial() function and returns 'port name' or 'none' '"""
    ok = 'none'
    
    port_name = scanserial()
    print(port_name)
    print('Number of ports found: ', len(port_name))
    
    num = len(port_name)
    print('Found port numbers: ', num)
    
    for port_name[num-1] in port_name:
        
        printer = Serial(port_name[num-1], 115200, timeout = 5)
        answer = printer.readline().strip()
        printer.close()
        print(answer.decode('ascii'))
        if ('start' in answer.decode('ascii')):
            ok = port_name[num-1]
            print('OK port is: ', ok)
        else:
            pass
    
    if ok is not 'none':            
        return ok
    else:
        print( 'Port not found.' )
        
    
def move(axis, direction, value, speed):
    """Moves given 'axis' in '+' or '-' 'direction' with 'value' and 'speed'"""
    axis = str(axis)    # X, Y, Z, E
    direction = str(direction)  # '+' or '-'
    value = str(value)  # relative move 
    speed = str(speed)  # set speed of movement from 0 to 3000

    word = 'G1 ' + axis + direction + value + ' F' + speed + '\r\n' 
    print( word.strip() )
    
    return word.encode('ascii')    

port = testport()
baud = 115200

print(port)
if ('ACM' in port):
    printer = Serial(port, baud, timeout = 5)
    print(printer.readline().strip().decode('ascii'))
    word = 'G91\r\n'
    printer.write(word.encode('ascii'))
    word = move('X', '-', 15, 600)
    printer.write(word)
else: pass

if printer.isOpen():
    printer.close()
print('That\'s all folks.')