Hi everyone,

I am trying to write some bits to the parallel port using the java communications port and all is okay except that i need some clarification on something.

The parallel port is connected to circuit board that needs nine inputs(or better known as nine bits)
Now this is what i am doing to write the values to the parallel port

import javax.comm.*;
import java.io.*;
 
public class PortTest 
{
ParallelPort port;
int outputByte = 256;  //The byte value is 100000000

public void outputBits() 
{

try 
{
port.getOutputStream().write(outputByte);
} 

catch(Exception e) 
{ 
e.printStackTrace();
}
  
}

public static void main(String args[])
{
PortTest p1 = new PortTest();
p1.outputBits;
}

}

Now here is my problem, the output stream only seems to output to the first eights bits but does not output the last bit which is a zero. Now i know that a byte is eight bits but if i use a byte array it still does not work.

Basically my question is that i need to output nine bits but i seem to be able to only output eight bits and would really appreciate some guidance from anyone on this topic.

Any help is greatly appreciated

Thank You

Yours Sincerely

Richard West

Hi Richard,

Unfortunately I don't believe this is possible. You cannot output 9 bits to the Parallel Port using java.io.OutputStream.write(int b)

The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored

As you say, even using the overloaded byte[] method won't work. As a byte is 8 bits by its very nature.

If this circuit board is expecting a 9 bit binary value then I think you may be out of luck using Java. Maybe you could try using one of the classes which extend OutputStream. You might even have to write this portion of the code in C as a library and call it from Java. But don't forget that Java stores its numeric values in 2's Compliment - something to keep in mind.

Kate

Hi everyone,

Kate i think you are right on this one and i may have to find another way even maybe using JNI

Thank You

Richard West

This article has been dead for over six months. Start a new discussion instead.