title: Parallel Port communication Rxtx or javax.comm
body: <p>Currently I am trying to communicate with a Parallel port via Java, but this has proven to be troublesome. I am currently doing a brain research using EEG and I want to send simple "event markers" to the EEG system, which must happen via Parallel Port. I have used both javax.comm and RXTX but for some reason I cannot manage to write output to the port. The test-code is as follows:</p>
  
  <pre><code>import gnu.io.*; // RXTX
  // import javax.comm.*; // javax.comm
  
  public class PrlCom {
  private String msg= "1";
  
  private OutputStream outputStream;
  private InputStream inputStream;
  
  private ParallelPort parallelPort; // can be both Rxtx or javax.comm 
  private CommPortIdentifier port;
  
  // CONSTANTS
  public final String PARALLEL_PORT = "LPT1";
  public final String[] PORT_TYPE = { "Serial Port", "Parallel Port" };
  
  public static void main(String[] args) {
      new PrlCom();
  }
  public PrlCom(){
      openParPort();
  }
  
  public void openParPort() {
      try {
          // get the parallel port connected to the EEG-system (used to be printer)
          port = CommPortIdentifier.getPortIdentifier(PARALLEL_PORT);
  
          System.out.println("\nport.portType = " + port.getPortType());
          System.out.println("port type = " + PORT_TYPE[port.getPortType() - 1]);
          System.out.println("port.name = " + port.getName());
  
          // open the parallel port -- open(App name, timeout)
          parallelPort = (ParallelPort) port.open("CommTest", 50);
          outputStream = parallelPort.getOutputStream();
          inputStream = parallelPort.getInputStream();
  
          System.out.println("Write...");
          outputStream.write(toBytes(msg.toCharArray()));
          System.out.println("Flush...");
          outputStream.flush();
      } catch (NoSuchPortException nspe) {
          System.out.println("\nPrinter Port LPT1 not found : " + "NoSuchPortException.\nException:\n" + nspe + "\n");
      } catch (PortInUseException piue) {
          System.out.println("\nPrinter Port LPT1 is in use : " + "PortInUseException.\nException:\n" + piue + "\n");
      } catch (IOException ioe) {
          System.out.println("\nPrinter Port LPT1 failed to write : " + "IOException.\nException:\n" + ioe + "\n");
      } catch (Exception e) {
          System.out.println("\nFailed to open Printer Port LPT1 with exeception : " + e + "\n");
      } finally {
          if (port != null &amp;&amp; port.isCurrentlyOwned()) {
              parallelPort.close();
          }
  
          System.out.println("Closed all resources.\n");
       }
  }
  </code></pre>
  
  <p>I got the toBytes() function from <a href="https://stackoverflow.com/questions/5513144/converting-char-to-byte">Converting char[] to byte[]</a> . I also directly tried spam.getBytes(), which made no difference.</p>
  
  <p>After running this code with the javax.comm package, the parallel port is not recognized. If I run the code with RXTX(gnu.io), I get an IOException. The entire printed output is then as follows</p>
  
  <pre><code>Stable Library
  =========================================
  Native lib Version = RXTX-2.1-7
  Java lib Version   = RXTX-2.1-7
  
  port.portType = 2
  port type = Parallel Port
  port.name = LPT1
  Output stream opened
  Write...
  
  Printer Port LPT1 failed to write : IOException.
  Exception:
  java.io.IOException: The device is not connected.
      in writeByte
  
  Closed all resources.
  </code></pre>
  
  <p>With Rxtx, the code can make a connection with the Parallel Port thus. However, it is unable to write a byte to the output stream. Can someone please tell me how to resolve this?</p>
  
  <p>I have read in many of the other topics how outdated a parallel port is and that I should use USB. However, I am working with an EEG-system (BioSemi ActiveTwo with ActiView software) to measure brain activity and, sadly, I don't have the possibility to change this. A Parallel port-USB converter is also no option. (Odd though, that something so technologically advanced uses such outdated hardware).</p>
  
  <p>Thank you so much!</p>