Control the Parallel (or Serial) Port with Python

Computers & Mobile
Control the Parallel (or Serial) Port with Python

par.jpgSean writes “Here’s a follow-up to your recent perlParallel post. It’s a python module for controlling the parallel port. This module encapsulates the access for the parallel port. It provides backends for Python running on Windows and Linux. They also have a serial port controller here. Link.

0 thoughts on “Control the Parallel (or Serial) Port with Python

  1. saichele says:

    This is wonderful! Now how ’bout PHP? (not as groovy as python, but…)

  2. wrybread says:

    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

  3. wrybread says:

    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…

  4. alok says:

    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.

Discuss this article with the rest of the community on our Discord server!

current: @adafruit - previous: MAKE, popular science, hackaday, engadget, fallon, braincraft ... howtoons, 2600...

View more articles by Phillip Torrone

ADVERTISEMENT

Maker Faire Bay Area 2023 - Mare Island, CA

Escape to an island of imagination + innovation as Maker Faire Bay Area returns for its 15th iteration!

Buy Tickets today! SAVE 15% and lock-in your preferred date(s).

FEEDBACK