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 : Buffer de taille fixe en buffer de taille aléatoire selon donné reçu? [ Divers / Débutant(e) ] (Bouboukick)

mardi 20 mai 2008 à 11:28:47 | Buffer de taille fixe en buffer de taille aléatoire selon donné reçu?

Bouboukick

bonjour je lis les informations recu via mon port com comme ceci :

Code :
 
byte[] readBuffer = newbyte[20];
 
try{

while(inputStream.available() > 0){
int numBytes = inputStream.read(readBuffer);
}
 
System.out.print(new String(readBuffer));
}
Le problème est qu'avec ce code j'ai 20 caractère qui s'affiche or je voudrai obtenir juste les infos envoier .

Je doit utiliser length??

mais comment??
j'ai essai byte[] readBuffer = new byte[length]; //erreur
byte[] readBuffer = new byte.length; //erreur

donc je sais pas


c'est peut etre pas ça??

merci pour votre aide

  Je suis sous NetBeans 6.1et mandriva 2008

Bretzel : Tout est be qui finit bien!!

mardi 20 mai 2008 à 11:59:56 | Re : Buffer de taille fixe en buffer de taille aléatoire selon donné reçu?

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

si tu veux tout lire tu peux utiliser:
- la méthode readFully de l'objet java.io.RandomAccessFile
- la classe java.util.Scanner
- la méthode ci-dessous :
public byte[] readFully(InputStream in) {
  try {
    byte buffer[] = new byte[in.available()];
    int n=0, offset=0;
    while(true) {
      int i = in.available();
      n=in.read(buffer, offset, i);
      if (n<=0 || n == i) {
        if (n!=-1)  offset+=n;
        break;
      }
      offset+=n;
    }
    in.close();
    return buffer;
  } catch (IOException e) {
    return null;
  }
}


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

mardi 20 mai 2008 à 12:15:25 | Re : Buffer de taille fixe en buffer de taille aléatoire selon donné reçu?

Bouboukick

J'ai testé ta réponse un peu partout dans mon programme mais rien à y faire.
Ou doit je le placer?

voici mon prog


package blackbox;
import java.io.*;
import java.util.*;
import javax.comm.*;

public class Read implements Runnable, SerialPortEventListener {
    static CommPortIdentifier portId;
    static Enumeration          portList;
    InputStream              inputStream;
    SerialPort              serialPort;
    Thread              readThread;
    public static void main(String[] args) {
    boolean              portFound = false;
    String              defaultPort = "/dev/ttyS0";

     if (args.length > 0) {
        defaultPort = args[0];
    }
  
    portList = CommPortIdentifier.getPortIdentifiers();

    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
        if (portId.getName().equals(defaultPort)) {
            System.out.println("Found port: "+defaultPort);
            portFound = true;
            Read reader = new Read();
        }
        }
    }
    if (!portFound) {
        System.out.println("port " + defaultPort + " not found.");
    }
    
    }
    public Read() {
    try {
        serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
    } catch (PortInUseException e) {}

    try {
        inputStream = serialPort.getInputStream();
    } catch (IOException e) {}

    try {
        serialPort.addEventListener(this);
    } catch (TooManyListenersException e) {}

    serialPort.notifyOnDataAvailable(true);

    try {
        serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,
                       SerialPort.STOPBITS_1,
                       SerialPort.PARITY_NONE);
    } catch (UnsupportedCommOperationException e) {}

    readThread = new Thread(this);

    readThread.start();
    }

   
   
   
    public void run() {
    try {
        Thread.sleep(20000);
    } catch (InterruptedException e) {}
    }

    public void serialEvent(SerialPortEvent event) {
    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:
        break;

    case SerialPortEvent.DATA_AVAILABLE:
       
           
            byte[] readBuffer = new byte[20];

        try {
        while (inputStream.available() > 0) {
            int numBytes = inputStream.read(readBuffer);
        }

        System.out.print(new String(readBuffer));
        } catch (IOException e) {}

        break;
    }
    }


}




Merci deja de ton aide
Bretzel : Tout est be qui finit bien!!

mardi 20 mai 2008 à 13:21:40 | Re : Buffer de taille fixe en buffer de taille aléatoire selon donné reçu?

Twinuts

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

exemple pour la méthode (j'ai la flème pour faire un exemple avec tout) :
replace le case :
case SerialPortEvent.DATA_AVAILABLE:
  byte[] readBuffer = new byte[20];
  try {
    while (inputStream.available() > 0) {
      int numBytes = inputStream.read(readBuffer);
    }
    System.out.print(new String(readBuffer));
  } catch (IOException e) {}
break;

par:
case SerialPortEvent.DATA_AVAILABLE:
  byte[] readBuffer = readFully(inputStream);
  System.out.print(new String(readBuffer));
  break;


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

mardi 20 mai 2008 à 17:00:46 | Re : Buffer de taille fixe en buffer de taille aléatoire selon donné reçu?

Bouboukick

Il me met une erreur sur le readFully.
et je sais pas pourquoi quelqu'un sait pourquoi?

et si vous savais quoi mettre exactement je suis prenant un truc tout fait je suis prenant lol car je m'arrache les cheveux la au secours

Bretzel : Tout est be qui finit bien!!

mardi 20 mai 2008 à 17:16:25 | Re : Buffer de taille fixe en buffer de taille aléatoire selon donné reçu?

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

c'est un joke là ?

bref raz le bol de perdre mon temps...




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

mercredi 21 mai 2008 à 14:57:15 | Re : Buffer de taille fixe en buffer de taille aléatoire selon donné reçu?

Bouboukick

Réponse acceptée !
J'ai trouvé merci pour ton aide voici mon bout de code me permettant de n'avoir que les données envoiées:


Code :
case SerialPortEvent.DATA_AVAILABLE:
String chaine = "";
byte[] readBuffer = newbyte[20];
try
{
while(inputStream.available() > 0)
{
int numBytes = inputStream.read(readBuffer);
for(int i=0; i<numBytes; i++)
{
chaine = chaine + (char)readBuffer[i];
}
}
System.out.println(chaine);
}
catch(IOException e){}
break;



Bretzel : Tout est be qui finit bien!!



Cette discussion est classé dans : buffer, taille, byte, length, readbuffer


Répondre à ce message

Sujets en rapport avec ce message

Pb pour envoyer un fichier.... [ par egire ] bonjour, j'ai un petit problème en java pour envoyer un fichier, je vais vous éxpliquer : Le but est de faire un serveur et un client, le client deman comment recuperer le contenu d'un fichier sur le net [ par byob ] Bonjour,j'ai regarder de nombreux post sur le sujet pour m'en inspirer mais je n'arrive pas à qqc de concret.Ce que j'aimerais faire : lire les 128 pr textfield [ par ikramta ] bonjour tout le mande .j'ai utilisé JTextField pour instencier une zone de texte mais l'orsque je l'exécute dans la fenetre sa taille est minimale ;co Problème utilisation jtree [ par Fredoxmm ] bonjour,je réalise pour une appli, une petite gestion d'explorateur de fichier. L'utilsiateur choisi grace à un chooser un dossier, et cela est censé Afficher une image sur une form. [ par deck_bsd ] Yop à tous,Voila , j'utilise une méthode GetPicture() qui me renvoie une image au format BYTE stream . Je me demandai comment a partir de cette variab Petit probleme [ par fass1190 ] Bonjour, je débute dans la programmation, et j ai un exercice que je n arrive pas a résoudre : " L'indice de Quételet, est révélateur de l'état d"une JTextEditor et JPanel probleme de taille [ par size_one_1 ] bonjour a tous,je suis pas tres experimente en java,voici mon probleme :je cree un JPanelet je souhaite mettre a l interieur un JTextEditorle probleme taille de l'intérieur d'une fenêtre [ par Patrice H ] Je sais retrouver la taille de l'écran (sa résolution) mais je voudrai connaître la taille utilisable d'une fenêtre c'est à dire sans la barre de titr probleme de scrolling / tile [ par hisoka56 ] Bonjour, je suis en train de realiser des tests pour l'affichage d'un jeu en 2d vue du dessus et je me cantonne a un probleme, j'ai codé une méthode q


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



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,25 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é.