Parallel Printer Port Access through Java
Have you ever tried to access the parallel port (printer port) inside a Java program? Well, if you have, you have probably already downloaded the commapi package that sun offers to perform this task, or tried using portio or any other thing that might resolve your problem. The fact that you are here indicates that none of these programs seem to work! And we need a solution... fast! Well folks, here it is [Windows - Linux]. It turns out that you can write code in C and Java can use it through the Java Native Interface (JNI). Take a look at the installation instructions to setup ParallelPort on your PC [Windows - Linux].
ParallelPort is a simple Java class that enables you to read and write bytes to and from the parallel ports on your computer. I have personally tested it on Windows 9x platforms with different types of processors (mainly Intel 486, Pentium MMX, Pentium II), and it presented me with no problems (send me an email if you are having problems). It can also run under Windows NT (and the like) but you need to install a kernel mode driver (see UserPort, below).
What you will find here:
I have programmed parport to be able to access the parallel port on my computer. (new: Linux version now available!)
API documentation for ParallelPort.
Example programs that use the parallel port (SimpleIO.java, Joystick.java).
Real life projects that use ParallelPort.
UserPort : a Windwos NT/2000/XP kernel mode driver for direct port I/O. You need to install UserPort if you plan to use Windows NT based operating systems.
Links to web sites and people that helped me complete this project.
And that is pretty much it.
Projects that use ParallelPort
DynaTour (by Nasron Cheong): The DynaTutor is a 5-axis arm robot that was origininally designed to be an introduction to computer interfacing. This project aims to rebuild the hardware driver for the robot and reimplement new software drivers. Finally, the combination of the two, along with some inverse kinematics, will be used to create a robot that will move chess pieces. The hardware is implemented on a prototyping board using a programmable logic device from Altera and some power drivers. The software is written in Java and employs a multithreaded mechanism to drive each motor 'concurrently'.
The Xobsen (by Elisha): The Xobsen is an interface between NES controllers and your PC audio software. It allows one of 6 midi messages to be associated with a button: note on, note off, controlller 00 increment/decrement, controller 01 increment/decrement. The user is able to select the MIDI out device but not the midi channel. Currently, the midi channel is the same as the port number on the xobsen.
Legacy Film to DVD Project (by Jim Carroll): This project has been ongoing for a year now. In brief it has been my attempt to convert my parents library of legacy super-8 mm film to DVD. I have actually got this working and have scanned several 400 foot rolls of film. If you want to learn how I did this and/or see some of the results, then read on.
NOTE: If you have used ParallelPort and want to be famous like the people above, document your project, take some pictures, put it up on the web and send me the link! I'll add your project here.
Links
Interfacing the PC Parallel Port:
http://www.beyondlogic.org/spp/parallel.htm
Java native interface tutorial:
http://java.sun.com/docs/books/tutorial/native1.1/TOC.html
Computing.net Q&A forum:
http://www.computing.net
Java from sun microsystems:
http://www.java.sun.com
Ian Harries's Digital Joystick page:
http://www.doc.ic.ac.uk/~ih/doc/joystick/
By Juan Gabriel Del Cid Portillo. Ported to Linux by Jonas Blank
Last revised: March 8th, 2005