Bonjour
Je suis debutant en java, et j'ai un gros probleme, je dois communique avec un automate via un port com, mais qd je lui envnoi une commande celjui-ci ne me repond pas alors je ne c pas s'il a bien recu la commande.
Je vous met mon source pour savoir si il y a un probleme avec lui:
je veux afficher la reponse de l'automate, mais le probleme c qu'il n'y a rien du tout meme pas un mesage d'erreur
import javax.comm.*;
import com.sun.comm.Win32Driver;
import java.io.*;
import java.util.*;
/*
Cette classe permet de tester les ports séries disponibles
en les listant puis en créant un stream d'entrée et de sortie
*/
public class Comm
{
CommPortIdentifier portId;
BufferedReader in;
BufferedWriter out;
//PrintWriter out;
//InputStream in;
OutputStream outStream;
SerialPort serialPort;
/*
Constructeur de la classe Comm qui prend en paramètre le port série à utiliser.
Dans un premier temps on liste les ports disponibles sur le pc
*/
public Comm (String com)
{
//System.out.println("listage des ports série disponibles:");
listePortsDispo();
//initialisation du driver
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize();
try
{
//ouverture du port série:
portId=CommPortIdentifier.getPortIdentifier(com);
serialPort=(SerialPort)portId.open("UtilisationFlux",30000);
//on sélectionne tous les paramètres de la connexion série:
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
System.out.println("Ouverture du port "+com);
//pour lire et écrire avec des streams:
in=new BufferedReader(
new InputStreamReader(serialPort.getInputStream()));
outStream=serialPort.getOutputStream();
out=new BufferedWriter(
new OutputStreamWriter(serialPort.getOutputStream()));
}
catch (Exception e)
{
e.printStackTrace();
}
}//fin constructeur
/**
* Méthode de communication.
*/
public String communique() {
String compteur = null;
String commande=null;
try {
commande="$01S0A0002";
int longueur=commande.length();
//demande de lecture des compteurs
out.write(commande, 0 ,longueur);
out.flush();
//lecture des compteurs
compteur = in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return compteur;
}//fin comunique
public void listePortsDispo()
{
System.err.println("recherche...");
Enumeration portList=CommPortIdentifier.getPortIdentifiers();
if (portList==null)
{
System.err.println("Aucun port de communication détecté");
return;
}
while (portList.hasMoreElements())
{
portId=(CommPortIdentifier)portList.nextElement();
System.out.println("* "+portId.getName());
} // while
} //fin de la methode listePortsDispo()**/
/**
* Méthode de fermeture des flux et port.
*/
public void close(){
try {
in.close();
outStream.close();
} catch (IOException e) {
e.printStackTrace();
}
serialPort.close();
}// fin close
public static void main(String args[])
{
Comm test=new Comm ("COM1");
String reponse = test.communique();
System.out.println(reponse);
test.close();
}
}//fin de la classe Comm
Merci d'avance