IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Evenement et RS232


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 47
    Points
    47
    Par défaut Evenement et RS232
    Bonjour,

    J'ai un problème sur la lecture de trame numérique. J'ai suivi le tutorial sur la com RS232. Malheureusement j'ai des petits problèmes. Je ne lis que les 4 premiers octets du message envoyé. Je me suis assuré que le message était reçu en entier par l'ordinateur. Je ne sais pas quoi faire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Dans la  méthode de gestion des événements.
    case SerialPortEvent.DATA_AVAILABLE :
     
    try {
          //lecture 
           System.out.println((char)(serialPort.getInputStream().read()));
           } catch (IOException e) {System.out.println("lecture");}
    break;
    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    Bonsoir,

    Pour être un peu plus claire : le programme rentre dans la méthode de gestion des evenements moins de fois que ce qui rentre d'octet dans le port.
    Donc je pense que j'ai du mal paramétrer le listener.

    Voici la méthode de gestion de événement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public void serialEvent(SerialPortEvent event) 
    {
    count++;   //me permet de visualiser le nombre de fois que le programme est rentré dan la méthode				
    switch (event.getEventType()) {
    			case SerialPortEvent.BI :
    			case SerialPortEvent.OE :
    			case SerialPortEvent.FE :
    			case SerialPortEvent.PE :
    			case SerialPortEvent.CD :
    			case SerialPortEvent.CTS :
    			case SerialPortEvent.DSR :
    			case SerialPortEvent.RI :
    			case SerialPortEvent.OUTPUT_BUFFER_EMPTY :
                                System.out.println("out");
    				break;
    			case SerialPortEvent.DATA_AVAILABLE :
     
    				try {
    					//lecture 
                   System.out.println((char)(serialPort.getInputStream().read()));
    				} catch (IOException e) {}
    		        break;
    		}
    	}
    merci

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    Re bonsoir,

    Pour que ça marche il faut que je mette une tempo tous les 2 octets dans la méthode qui envoie les données. De plus la tempo change celon je ne sais quel critère. Enfin là je nage complet....

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Le problème vient du fait que tu es notifié de la réception de données (ie. plusieurs bytes) et pas seulement d'un seul byte.

    Voici une petite solution qui récupère tous les bytes dans un tableau avant de les afficher sous forme de String.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    public void serialEvent(SerialPortEvent event) 
    { 
    count++;   //me permet de visualiser le nombre de fois que le programme est rentré dan la méthode             
    switch (event.getEventType()) { 
             case SerialPortEvent.BI : 
             case SerialPortEvent.OE : 
             case SerialPortEvent.FE : 
             case SerialPortEvent.PE : 
             case SerialPortEvent.CD : 
             case SerialPortEvent.CTS : 
             case SerialPortEvent.DSR : 
             case SerialPortEvent.RI : 
             case SerialPortEvent.OUTPUT_BUFFER_EMPTY : 
                                System.out.println("out"); 
                break; 
             case SerialPortEvent.DATA_AVAILABLE : 
     
                try { 
                   //lecture 
                   InputStream is = serialPort.getInputStream();
                   byte[] data = new byte[is.available()];
                   is.read(data);              
                   System.out.println(new String(data)); 
                } catch (IOException e) {} 
                  break; 
          } 
       }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    Super ça marche

    Je pensais en fait qu'à chaque octet le listener rentrait en evenement et donc que je pouvais lire octet par octet.

    Est ce que tu pourrais me dire quand il rentre en evenement exactement ?

    merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Interception des évènement Copier/Couper/Coller
    Par youtch dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/10/2002, 17h09
  2. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46
  3. Evenement Change
    Par PierDIDI dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2002, 10h08
  4. develloppement avec ORBit: service d'evenement
    Par belmontv dans le forum CORBA
    Réponses: 3
    Dernier message: 06/06/2002, 22h56
  5. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo