Control the Parallel (or Serial) Port with Python
Recent Entries
- A Way to See the Wind
- Our Autobot in Odessa
- Arduino prototyping lap desk
- Projects: Failure and mounting a "scratch monkey"
- Battle Symets are GO!
- Screw-in coffin patent issues
- Beginner woodworking project for illusionists?
- Brickarms molds
- LED people remake
- <3 your maker: MAKE's Valentine's Day gift guide
Comments
Oldest comments listed first.
Leave a comment
Subscribe to MAKE Magazine!
Subscribe today, save 42% and get web access to MAKE free. MAKE Digital Edition is available only to subscribers.
$34.95 / 1 year
(4 Quarterly Issues)


































This is wonderful! Now how 'bout PHP? (not as groovy as python, but...)
Reply to this comment
Wondering why my post on using Pyserial to interface with external buttons didn't get posted? Is it just a long approval process, or was it rejected?
wrybread@gmail.com
Reply to this comment
Ok, reposting.
Here's a python script that uses PySerial to interact with buttons connected to your serial port. So you can use those buttons to do whatever you'd like on your computer. The circuit is super simple, just shorts 4 of the pins to ground:
http://www.ovelha.org/pasteler0/2005/11/17/howto-external-winamp-control/
I personally find it easier to splice an old serial cable than the way he did it. Cheaper too. And I hate to admit it, but there's been a couple of times that I didn't have a continuity meter handy and I simply spliced wires and connected them randomly until I got a reaction, and I havn't fried any serial ports yet.
And it works great with those USB to serial adaptors too.
Note that there's a really good Winamp plugin on that page that also interfaces with this circuit, and in that program are instructions to connect up to 15 buttons to a single serial port, and this script can probably be easily adapted to that. Also note that the above circuit works with the excellent Windows automation program Girder.
Feel free to email wrybread@gmail dot-you-know-what with any questions.
Anyway, here's the script, which for some reason is showing up double-spaced:
import serial # This is pyserial, you need that.
import time
# Adjust this for whatever number your comport is.
com_port = 1
print "Attempting to open your com port..."
try:
# Initialize our com port:
buttons = serial.Serial(com_port)
print "Successfully opened the com port."
print "Your com port returned the following information:\n"
print buttons
except:
print "Whoops, failed to initialize your com port"
print "\nListening for button presses..."
# Start monitoring button presses:
while True:
#modes are CTS, DSR, RI and CD. As in getCTS, getDSR, etc.
if buttons.getCTS():
print "Button 1 pressed!"
# Do something here.
if buttons.getDSR():
print "Button 2 pressed!"
# Do something here.
if buttons.getRI():
print "Button 3 pressed!"
# Do something here.
if buttons.getCD():
print "Button 4 pressed!"
# Do something here.
time.sleep(.02)
And to the person wishing for PHP support, I'd highly recommend sucking it up and learning Python...
Reply to this comment
The article is really wonderful.Well how to control a board with ATmega16 microcontroller connected to the serial port with buttons on the screen.The buttons on the screen should function as toggle switches and pressing them should control any device such as a dc motor connected to the controller.
Reply to this comment