Note that there are some explanatory texts on larger screens.

plurals
  1. PORXTX two way serial communication doesn't send data after first run
    primarykey
    data
    text
    <p>I edited an already-made example from the RXTX website. I am new in Java and Serial comm programming too.</p> <p>The app runs perfectly one time. It reads the buffer from the PIC and sends the number I enter. The LEDs light and the PIC sends back the same buffer, asking for a number. But when I enter it, the LEDs turn off, nothing lights up again and I get again the message asking for a number.</p> <p>There is nothing wrong with the micro controller's soft as it works perfectly with HyperTerminal. </p> <p>The code is below:</p> <pre><code>import gnu.io.CommPort; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * This version of the TwoWaySerialComm example makes use of the * SerialPortEventListener to avoid polling. * */ public class Test { public Test() { super(); } void connect ( String portName ) throws Exception { CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName); if ( portIdentifier.isCurrentlyOwned() ) { System.out.println("Error: Port is currently in use"); } else { CommPort commPort = portIdentifier.open(this.getClass().getName(),2000); if ( commPort instanceof SerialPort ) { SerialPort serialPort = (SerialPort) commPort; serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); InputStream in = serialPort.getInputStream(); OutputStream out = serialPort.getOutputStream(); serialPort.addEventListener(new SerialReader(in)); serialPort.notifyOnDataAvailable(true); (new Thread(new SerialWriter(out))).start(); } else { System.out.println("Error: Only serial ports are handled by this example."); } } } /** * Handles the input coming from the serial port. A new line character * is treated as the end of a block in this example. */ public static class SerialReader implements SerialPortEventListener { private InputStream in; private byte[] buffer = new byte[1024]; public SerialReader ( InputStream in ) { this.in = in; } public void serialEvent(SerialPortEvent arg0) { int data; try { int len = 0; while ( ( data = in.read()) &gt; -1 ) { if ( data == '\n' ) { break; } buffer[len++] = (byte) data; } System.out.print(new String(buffer,0,len)); } catch ( IOException e ) { e.printStackTrace(); System.exit(-1); } } } /** */ public static class SerialWriter implements Runnable { OutputStream out; public SerialWriter ( OutputStream out ) { this.out = out; } public void run () { try { int c = 0; while ( ( c = System.in.read()) &gt; -1 ) { this.out.write(c); } } catch ( IOException e ) { e.printStackTrace(); System.exit(-1); } } } public static void main ( String[] args ) { try { (new Test()).connect("COM3"); } catch ( Exception e ) { // TODO Auto-generated catch block e.printStackTrace(); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload