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 :

[Stratégie] Lecture ponctuelle d'un flux continu


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Par défaut [Stratégie] Lecture ponctuelle d'un flux continu
    Je dispose d'une balance connectée sur le port série de mon ordinateur.
    Cette balance envoie le poids en continu sous le format "XXXX,XX\n".
    Toutefois je n'ai besoin de lire ce poids que de façon ponctuelle (quand l'utilisateur le demande).
    Pour l'instant je crée un flux (BufferedReader) pour lire une ligne et je détruit ce flux. Ce n'est pas très élégant et demande un peu de temps pour la création du flux. j'aimerai conserver ce flux mais je n'ai pas trouvé de méthode pour purger mon flux avant la lecture.

    Si quelqu'un dispose d'une solution plus élégante.

    Voici mon code de test (l'utilisateur fait "entrée" pour lire le poids et q pour quitter).

    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
     
    BufferedReader bufRead;
    BufferedReader clavier=new BufferedReader(new InputStreamReader(System.in));
    //lecture sur le flux entrée.
     
    try{
    	String lu=clavier.readLine();
    	while (!lu.equals("q")){
    		bufRead=new BufferedReader(new InputStreamReader(portSerie.getInputStream()));
    		System.out.println(bufRead.readLine());
    		bufRead.close();
    		lu=clavier.readLine();
    	}			
    }catch (IOException e){
    	e.printStackTrace();
    }

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Si tu veux toujours travailler avec le meme flux, l'ideal est de creer un thread qui ne fait que lire le port serie et qui update constamment le poids dans une variable d'instance..

    Lorsque l'utilisateur veut connaitre le poids il suffit d'aller lire la variable d'instance du thread..

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public class MonThread extends Thread
    {
     
      private String poids;
     
      private boolean running;
     
      public MonThread()
      {
       ...
       bufRead=new BufferedReader(new InputStreamReader(portSerie.getInputStream())); 
      }
     
      public String getPoids()
      {
        return poids;
      }
     
      public void run()
      {
         running = true;
        while(running)
        {
           poids = bufRead.readLine();
        }
        bufRead.close();
      }
     
      public void stopThread()
      {
        _running = false;
      }
    }
     
    Dans ton main:
    {
      MonThread t = new MonThread();
      t.start();
    ...
     
      // pour lire le poids
      String poids = t.getPoids();
    }
    Voila,

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Membre expérimenté

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Par défaut
    C'est génial! Pile poil ce que je cherchais.
    Il faut vraiment que je pense plus souvent au thread.
    Merci.

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

Discussions similaires

  1. Lecture de fichier ou flux XML
    Par olibara dans le forum C#
    Réponses: 4
    Dernier message: 12/12/2008, 17h18
  2. Lecture et traitement de flux
    Par yoyo33fc dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/03/2007, 16h38
  3. lecture binaire sur un flux
    Par zais_ethael dans le forum C++
    Réponses: 9
    Dernier message: 29/08/2006, 01h11
  4. Lecture de fond sonore en continue sur mon site
    Par snakejl dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/06/2006, 15h45
  5. Applet Java sur Boursorama (flux continu) - port 8000
    Par Invité dans le forum Applets
    Réponses: 4
    Dernier message: 02/02/2006, 23h05

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