Skip to content

Commit

Permalink
Merge branch 'experimental' into connection-rework
Browse files Browse the repository at this point in the history
Conflicts:
	printrun/printcore.py
	pronsole.py
	pronterface.py
  • Loading branch information
iXce committed Sep 5, 2012
2 parents f5378ea + 7da8a71 commit bff5a8f
Show file tree
Hide file tree
Showing 7 changed files with 278 additions and 79 deletions.
139 changes: 85 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,80 +5,44 @@ Printrun consists of printcore, pronsole and pronterface, and a small collection
* pronterface.py is a graphical host software with the same functionality as pronsole
* webinterface.py is a browser-usable remote control function for Pronterface

# INSTALLING DEPENDENCIES
# GETTING PRINTRUN

## Windows

A precompiled version is available at http://koti.kapsi.fi/~kliment/printrun/
This section suggests using precompiled binaries, this way you get everything bundled into one single package for an easy installation.

Download the following, and install in this order:
If you want the newest, shiniest features, you can run Printrun from source using the instructions further down this README.

1. http://python.org/ftp/python/2.7.2/python-2.7.2.msi
2. http://pypi.python.org/packages/any/p/pyserial/pyserial-2.5.win32.exe
3. http://downloads.sourceforge.net/wxpython/wxPython2.8-win32-unicode-2.8.12.0-py27.exe
4. http://launchpad.net/pyreadline/1.7/1.7/+download/pyreadline-1.7.win32.exe
5. http://pyglet.googlecode.com/files/pyglet-1.1.4.zip

For the last one, you will need to unpack it, open a command terminal,
go into the the directory you unpacked it in and run
`python setup.py install`

## Ubuntu/Debian
`sudo apt-get install python-serial python-wxgtk2.8 python-pyglet`
## Windows

## Fedora 15
`sudo yum install pyserial wxpython pyglet`
A precompiled version is available at http://koti.kapsi.fi/~kliment/printrun/

## Mac OS X Lion
## Mac OS X

A precompiled version is available at http://koti.kapsi.fi/~kliment/printrun/

1. Ensure that the active Python is the system version. (`brew uninstall python` or other appropriate incantations)
2. Download an install [wxPython2.8-osx-unicode] matching to your python version (most likely 2.7 on Lion,
check with: python --version) from: http://wxpython.org/download.php#stable
Known to work PythonWX: http://superb-sea2.dl.sourceforge.net/project/wxpython/wxPython/2.8.12.1/wxPython2.8-osx-unicode-2.8.12.1-universal-py2.7.dmg
3. Download and unpack pyserial from http://pypi.python.org/packages/source/p/pyserial/pyserial-2.5.tar.gz
4. In a terminal, change to the folder you unzipped to, then type in: `sudo python setup.py install`
5. Repeat 4. with http://http://pyglet.googlecode.com/files/pyglet-1.1.4.zip
## Linux
### Ubuntu/Debian

The tools will probably run just fine in 64bit on Lion, you don't need to mess
with any of the 32bit settings. In case they don't, try
5. export VERSIONER_PYTHON_PREFER_32_BIT=yes
in a terminal before running Pronterface
You can run Printrun directly from source, as there are no packages available yet. Fetch and install the dependencies using

## Mac OS X (pre Lion)
`sudo apt-get install python-serial python-wxgtk2.8 python-pyglet`

A precompiled version is available at http://koti.kapsi.fi/~kliment/printrun/
### Fedora 15 and newer

1. Download and install http://downloads.sourceforge.net/wxpython/wxPython2.8-osx-unicode-2.8.12.0-universal-py2.6.dmg
2. Grab the source for pyserial from http://pypi.python.org/packages/source/p/pyserial/pyserial-2.5.tar.gz
3. Unzip pyserial to a folder. Then, in a terminal, change to the folder you unzipped to, then type in:

`defaults write com.apple.versioner.python Prefer-32-Bit -bool yes`

`sudo python setup.py install`
You can run Printrun directly from source, as there are no packages available yet. Fetch and install the dependencies using

Alternatively, you can run python in 32 bit mode by setting the following environment variable before running the setup.py command:
`sudo yum install pyserial wxpython pyglet`

This alternative approach is confirmed to work on Mac OS X 10.6.8.
### Archlinux

`export VERSIONER_PYTHON_PREFER_32_BIT=yes`
Packages are available in AUR. Just run

`sudo python setup.py install`
`yaourt printrun`

Then repeat the same with http://http://pyglet.googlecode.com/files/pyglet-1.1.4.zip
and enjoy the `pronterface`, `pronsole`, ... commands directly.

# USING PRONTERFACE

To use pronterface, you need:

* python (ideally 2.6.x or 2.7.x),
* pyserial (or python-serial on ubuntu/debian),
* pyglet
* pyreadline (not needed on Linux) and
* wxPython

Download and install the above, and start pronterface.py
When you're done setting up Printrun, you can start pronterface.py in the directory you unpacked it.
Select the port name you are using from the first drop-down, select your baud rate, and hit connect.
Load an STL (see the note on skeinforge below) or GCODE file, and you can upload it to SD or print it directly.
The "monitor printer" function, when enabled, checks the printer state (temperatures, SD print progress) every 3 seconds.
Expand Down Expand Up @@ -133,6 +97,73 @@ sender, or the following code example:
p.resume()
p.disconnect()

# RUNNING FROM SOURCE

Run Printrun for source if you want to test out the latest features.

## Dependencies

To use pronterface, you need:

* python (ideally 2.6.x or 2.7.x),
* pyserial (or python-serial on ubuntu/debian),
* pyglet
* pyreadline (not needed on Linux) and
* wxPython

Please see specific instructions for Windows and Mac OS X below. Under Linux, you should use your package manager directly (see the "GETTING PRINTRUN" section)

## Windows

Download the following, and install in this order:

1. http://python.org/ftp/python/2.7.2/python-2.7.2.msi
2. http://pypi.python.org/packages/any/p/pyserial/pyserial-2.5.win32.exe
3. http://downloads.sourceforge.net/wxpython/wxPython2.8-win32-unicode-2.8.12.0-py27.exe
4. http://launchpad.net/pyreadline/1.7/1.7/+download/pyreadline-1.7.win32.exe
5. http://pyglet.googlecode.com/files/pyglet-1.1.4.zip

For the last one, you will need to unpack it, open a command terminal,
go into the the directory you unpacked it in and run
`python setup.py install`

## Mac OS X Lion

1. Ensure that the active Python is the system version. (`brew uninstall python` or other appropriate incantations)
2. Download an install [wxPython2.8-osx-unicode] matching to your python version (most likely 2.7 on Lion,
check with: python --version) from: http://wxpython.org/download.php#stable
Known to work PythonWX: http://superb-sea2.dl.sourceforge.net/project/wxpython/wxPython/2.8.12.1/wxPython2.8-osx-unicode-2.8.12.1-universal-py2.7.dmg
3. Download and unpack pyserial from http://pypi.python.org/packages/source/p/pyserial/pyserial-2.5.tar.gz
4. In a terminal, change to the folder you unzipped to, then type in: `sudo python setup.py install`
5. Repeat 4. with http://http://pyglet.googlecode.com/files/pyglet-1.1.4.zip

The tools will probably run just fine in 64bit on Lion, you don't need to mess
with any of the 32bit settings. In case they don't, try
5. export VERSIONER_PYTHON_PREFER_32_BIT=yes
in a terminal before running Pronterface

## Mac OS X (pre Lion)

A precompiled version is available at http://koti.kapsi.fi/~kliment/printrun/

1. Download and install http://downloads.sourceforge.net/wxpython/wxPython2.8-osx-unicode-2.8.12.0-universal-py2.6.dmg
2. Grab the source for pyserial from http://pypi.python.org/packages/source/p/pyserial/pyserial-2.5.tar.gz
3. Unzip pyserial to a folder. Then, in a terminal, change to the folder you unzipped to, then type in:

`defaults write com.apple.versioner.python Prefer-32-Bit -bool yes`

`sudo python setup.py install`

Alternatively, you can run python in 32 bit mode by setting the following environment variable before running the setup.py command:

This alternative approach is confirmed to work on Mac OS X 10.6.8.

`export VERSIONER_PYTHON_PREFER_32_BIT=yes`

`sudo python setup.py install`

Then repeat the same with http://http://pyglet.googlecode.com/files/pyglet-1.1.4.zip

# LICENSE

```
Expand Down
13 changes: 1 addition & 12 deletions .pronsolerc.example → dot.pronsolerc.example
Original file line number Diff line number Diff line change
@@ -1,17 +1,6 @@
# Sample .pronsolerc file - copy this into your home directory and rename it to .pronsolerc
!print "Loaded " + self.rc_filename

macro loud
!if self.p.loud:
!self.p.loud = 0
!if hasattr(self,"cur_button") and self.cur_button is not None:
!self.onecmd('button %d "loud (off)" /c green loud' % self.cur_button)
!else:
!self.p.loud = 1
!if hasattr(self,"cur_button") and self.cur_button is not None:
!self.onecmd('button %d "loud (on)" /c yellow loud' % self.cur_button)
button 0 "loud (off)" /c "green" loud

macro fan
!global _fan
!if '_fan' in globals() and _fan:
Expand All @@ -24,4 +13,4 @@ macro fan
M106
!if hasattr(self,"cur_button") and self.cur_button is not None:
!self.onecmd('button %d "fan (on)" /c yellow fan' % self.cur_button)
button 1 "fan (off)" /c "green" fan
button 0 "fan (off)" /c "green" fan
2 changes: 1 addition & 1 deletion plater.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
glview = False
if "-nogl" not in sys.argv:
try:
import stlview
from printrun import stlview
glview = True
except:
pass
Expand Down
19 changes: 12 additions & 7 deletions printcore.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,14 +179,19 @@ def _listen(self):
#callback for errors
try: self.errorcb(line)
except: pass
# Teststrings for resend parsing # Firmware exp. result
# line="rs N2 Expected checksum 67" # Teacup 2
if line.lower().startswith("resend") or line.startswith("rs"):
toresend = self.resendfrom
try:
toresend = int(line.replace("N:", " ").replace("N", " ").replace(":", " ").split()[-1])
except:
if line.startswith("rs"):
toresend = int(line.split()[1])
self.resendfrom = toresend
line = line.replace("N:"," ").replace("N"," ").replace(":"," ")
linewords = line.split()
while len(linewords) != 0:
try:
toresend = int(linewords.pop(0))
self.resendfrom = toresend
#print str(toresend)
break
except:
pass
self.clear = True
self.clear = True

Expand Down
13 changes: 9 additions & 4 deletions pronsole.py
Original file line number Diff line number Diff line change
Expand Up @@ -621,9 +621,12 @@ def do_disconnect(self, l):

def help_disconnect(self):
print "Disconnects from the printer"

def do_load(self,l):
self._do_load(l)

def do_load(self, l):
if len(l) == 0:
def _do_load(self,l):
if len(l)==0:
print "No file name given."
return
print "Loading file:"+l
Expand Down Expand Up @@ -874,14 +877,16 @@ def help_shell(self):
def default(self, l):
if(l[0] in self.commandprefixes.upper()):
if(self.p and self.p.online):
print "SENDING:"+l
if(not self.p.loud):
print "SENDING:"+l
self.p.send_now(l)
else:
print "Printer is not online."
return
elif(l[0] in self.commandprefixes.lower()):
if(self.p and self.p.online):
print "SENDING:"+l.upper()
if(not self.p.loud):
print "SENDING:"+l.upper()
self.p.send_now(l.upper())
else:
print "Printer is not online."
Expand Down
Loading

0 comments on commit bff5a8f

Please sign in to comment.