Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : RS232 [ Divers / Général ] (didoux95)

mardi 6 mai 2008 à 21:42:39 | RS232

didoux95

Bonjour à tous, ..

J'ai un petit mais relativelment embêtant.
En fait c'est que je viens de me rendre compte que mon application recoit pas les données qui sont censées lui parvenir (au travers d'un port RS232). Pour tester mon appli, j'ai créer deux ports virutels aux quels j'ai connecté un émulateur et mon programme. Comme je ne recevais rien, j'ai essayé avec deux emaulateurs (connectés l'un à l'autre). Comme les deux emulateurs recoivents les données, c'est que le problème vient de mon code (du moins, c'est ce que je penses). J'ai ajouté des "System.out.println(" ici ... ");"  un peut partout dans la classe qui gère le RS232 (notemment dans les évènement). Et il ne s'affiche jamais rien .. :( .. comme si le programme ne recevait jamais aucune données ou notifications (d'où l'absence d'évènement ..).

Pour communiqué (enfin .. essayé xD),  j'utilise l'API rxtx

Voici le code que j'utilise pour ouvrir et initialiser la connexion..

public boolean open () throws SerialConnectionException {
  
  //If there is no selected port
  if (tmpPort.equals(""))
   configure();
  
  //If we are using a port, we close it before opening an other
  if (isOpen())
   close();
  
  //Connection's way
  try {
   
   //Trying to get authorization for this application
   CommPortIdentifier cpi = CommPortIdentifier.getPortIdentifier(tmpPort);
   serialPort = (SerialPort)cpi.open(appName, 1000);
   
   //Opening
   System.out.println("Opening .. ;o) !! =]");
   serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
   serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
   serialPort.addEventListener(new SerialPortEventListener () {
    public void serialEvent (SerialPortEvent spe) {
     System.out.print("event !!");
     switch (spe.getEventType()) {
      case SerialPortEvent.BI :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.OE :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.FE :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.PE :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.CD :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.CTS :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.DSR :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.RI :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.OUTPUT_BUFFER_EMPTY :
       System.out.println("enfin !");
       break;
      case SerialPortEvent.DATA_AVAILABLE :
       System.out.println("reception donnees .. :p ");
       recieveData();
       break;
     }
    }
   });
   
   open = true;
   
  }catch (NoSuchPortException nspe) {
   throw new SerialConnectionException("The asked port does not exists .. ");
  }catch (PortInUseException piue) {
   throw new SerialConnectionException("The asked port is already used by an other program .. ");
  }catch (UnsupportedCommOperationException ucoe) {
   throw new SerialConnectionException("The defined port does not support minimal configuration ..");
  }catch (TooManyListenersException tmle) {
   
  }

  //Is port open ?
  return open;
  
 }



En vous remerciant pr avance de bien vouloir me donner un 'tit coup de pouce :p
Merci ..

mercredi 7 mai 2008 à 19:45:16 | Re : RS232

didoux95

Réponse acceptée !

Bonjour
Je suis parvenu à trouvé une solution (sans utiliser les évènements ..) :

   //This is the reading thread (read input data)
   new Thread () {
    
    public void run () {
     
     //We do it allways (while theprogram is running)
     while (true) {
      
      //Where data will be saved
      String temporaryData = "";
      
      try {
       
       //Where data come from
       BufferedReader br = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
       
       //Getting each trame of "dataNulber" bytes
       int dataNumber = 11;
       for (int a=0; a<dataNumber; a++) {
        
        //Sleep while there is no data available
        while (!br.ready());
        
        //Saving data
        temporaryData += " " + br.read();
        
       }
       
      }catch (Exception e) {e.printStackTrace();}
      
      //Validing data ..
      inData = temporaryData;
      
      //To inform that all recieved data are available
      dataListener.dataAvailable(new RS232DataEvent(this));
      
     }
     
    }
    
   }.start();
   


voila.




Cette discussion est classé dans : system, out, println, enfin, serialportevent


Répondre à ce message

Sujets en rapport avec ce message

[java]creation de fichier ... [ par suber600 ] voila je dois creer un fichier composé d entier et de double. le fichier ne doit pas etre lisible par un editeur de texte comment dois je faire ? je v Besoin d'aide programme etudiants, assez simple [ par The Waxy Man ] J'ai re-besoin d'aide !!!ERREUR:C:\jdk1.3\bin\javaw.exe -classpath "C:\jdk1.3\jre\lib\rt.jar;C:\DATA\2ti\Eleves\Englebert" Englebertjava.lang.NullPoi prob avec vector et fichier [ par bruno270579 ] je dois faire un projet en java et j'ai une colle je dois faire un objet Client qui contiendrai les champs suivant String nom, prenom, adresse; et un URGENT!!! Problème avec applets et jdbc [ par PhilippeA ] Bonjour,voilà j'ai créer un fichier java me permettant d'accéder à une base access. Ca marche. Mais il faut que je passe ce fichier en applet donc j'a Problème APPLET JDBC ACCESS [ par PhilippeA ] Bonjour,voilà j'ai créer un fichier java me permettant d'accéder à une base access. Ca marche. Mais il faut que je passe ce fichier en applet donc j'a Problème APPLET JDBC ACCESS [ par PhilippeA ] Bonjour,voilà j'ai créer un fichier java me permettant d'accéder à une base access. Ca marche. Mais il faut que je passe ce fichier en applet donc j'a Problème APPLET JDBC ACCESS [ par PhilippeA ] Bonjour,voilà j'ai créer un fichier java me permettant d'accéder à une base access. Ca marche. Mais il faut que je passe ce fichier en applet donc j'a free et jdbc [URGENT !!!] [ par kerlutinhoec ] bien le bonjour !Bon, moi, je suis emmerdé par jdbc.J'utilise le driver org.gjt.mm.mysql.Driver pour essayer de me co a une bdd type MySQL.Alors le pr free et jdbc [URGENT !!!] [ par kerlutinhoec ] bien le bonjour !Bon, moi, je suis emmerdé par jdbc.J'utilise le driver org.gjt.mm.mysql.Driver pour essayer de me co a une bdd type MySQL.Alors le pr System.out.println en série... [ par eraserhead ] Salut à tous,Voici le problème que je dois résoudre:Une machine m produit des pièces numérotées à partir de 1 qu'elle dispose sur un tapis roulant t (


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.