Communication série RS232 [Fermé]

Signaler
Messages postés
1
Date d'inscription
mercredi 18 janvier 2017
Statut
Membre
Dernière intervention
18 janvier 2017
-
Bonjour, je suis en terminale SI et j’ai besoin de faire communiquer deux PC en liaison RS232 pou le projet que l’on a à réaliser. Pour cela, j’ai pris un programme sur internet que j’ai modifié, mais je n’y comprends pas grand chose. Ce programme reçoit les données du deuxième PC, mais il n’envoie pas, je ne comprends pas pourquoi.
Merci pour votre aide.

package ppetest;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.InputStream;
import static java.lang.System.out;
import java.util.Enumeration;


public class PPEtest implements SerialPortEventListener {

SerialPort serialPort;

private static final String PORT_NAMES[] = {
   "/dev/ttyUSB0", // Linux
 };
 /**


* A BufferedReader which will be fed by a InputStreamReader

* converting the bytes into characters

* making the displayed results codepage independent

*/
private BufferedReader input;
 /** The output stream to the port */
 private OutputStream output;
 /** Milliseconds to block while waiting for port open */
 private static final int TIME_OUT = 2000;
 /** Default bits per second for COM port. */
 private static final int DATA_RATE = 9600;


public void initialize() {
  CommPortIdentifier portId = null;
  Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

//First, Find an instance of serial port as set in PORT_NAMES.
  while (portEnum.hasMoreElements()) {
   CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
   for (String portName : PORT_NAMES) {
    if (currPortId.getName().equals(portName)) {
     portId = currPortId;
     break;
    }
   }
  }
  if (portId == null) {
   System.out.println("Could not find COM port.");
   return;
  }

try {
   // open serial port, and use class name for the appName.
   serialPort = (SerialPort) portId.open(this.getClass().getName(),
     TIME_OUT);

// Paramètres
   serialPort.setSerialPortParams(DATA_RATE,
     SerialPort.DATABITS_8,
     SerialPort.STOPBITS_1,
     SerialPort.PARITY_NONE);

// Ouvrir les ports
   input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
   output = serialPort.getOutputStream();

// add event listeners
   serialPort.addEventListener(this);
   serialPort.notifyOnDataAvailable(true);
  } catch (Exception e) {
   System.err.println(e.toString());
  }
 }

/**


* This should be called when you stop using the port.

* This will prevent port locking on platforms like Linux.

*/
public synchronized void close() {
  if (serialPort != null) {
   serialPort.removeEventListener();
   serialPort.close();
  }
 }

/**


* Handle an event on the serial port. Read the data and print it.

*/
public synchronized void serialEvent(SerialPortEvent oEvent) {
  if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
   try {
       String inputLine=input.readLine();
       System.out.println(inputLine);
    //output.write(valeur);
    //output = serialPort.getOutputStream();

//output.write(valeur);
 //in = serialPort.getInputStream();

} catch (Exception e) {
    System.err.println(e.toString());
   }
  }
  // Ignore all the other eventTypes, but you should consider the other ones.

}


public static void main(String[] args) throws Exception {
        // TODO code application logic here
        PPEtest main = new PPEtest();
  main.initialize();

Thread t=new Thread() {
   public void run() {
    //the following line will keep this app alive for 1000 seconds,
    //waiting for events to occur and responding to them (printing incoming messages to console).
    try {Thread.sleep(1000000);} catch (InterruptedException ie) {}
   }
  };
  t.start();
  System.out.println("Started");
    //tableau
    valeur = System.in.read();
    out.write(valeur); out.write
    System.out.println(valeur);

}


}