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

Java Discussion :

Problème au niveau de la conversion d'une valeur via UDP


Sujet :

Java

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Parce que c'est sur fen que tu dois ajouter le JScrollPane ! this n'a aucun sens dans la méthode main() : le code ne s'exécute pas dans une instance.
    Mais de toute manière, il faut faire cet ajout avant la boucle.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package udp_temp;
    //Import Interface Graphique
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.FlowLayout;
    import java.awt.Dialog;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.TableColumn;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.UIManager;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.*;
    import javax.swing.table.DefaultTableModel;
    //Import UDP Connexion
    import java.io.*;
    import java.util.*;
    import java.util.zip.*;
    import java.net.*;
    import java.awt.event.ActionEvent;
    
    public class UDP_Temp extends JFrame{
        public UDP_Temp(){
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("JTable");
    
        
        // pense à donner une taille à ta fenêtre
        //this.setSize(600,400);
        // ou
        //this.pack();
        
    
        String  title[] = {"Rotor Temerature"};
                                                                 // exit on failure
      }
         public static void main(String[] args) {
             try
            {
        
    
                    UDP_Temp fen = new UDP_Temp();
    
                    DefaultTableModel model = new DefaultTableModel(new String[]{"Time(s)", "Temperature(°C)"},0);
    
    
                    JTable table = new JTable(model);
                    //table.setModel(model); //ne sert à rien
    
                    JScrollPane scrollpane  = new JScrollPane(table);
                     fen.getContentPane().add(scrollpane  );
    
                     // éventuellement, tu peux ajouter ce qui suit (le décommenter), si tu veux que la JTable scroll automatiquement sur la dernière ligne
    
    		   /*scrollpane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {  
    		        
    			   private int lastmax=-1;
    
    				public void adjustmentValueChanged(AdjustmentEvent e) {  
    		        	if ( !e.getValueIsAdjusting() ) {
    						int max=e.getAdjustable().getMaximum();
    						int pos=e.getAdjustable().getValue();
    						
    						if ( lastmax==-1 || lastmax==pos+e.getAdjustable().getVisibleAmount()) {
    							e.getAdjustable().setValue(max);  
    						}
    						lastmax=max;
    		        	}
    		        }
    		    });*/
    
                      // si tu veux les titres de la JTable, décommente ce qui suit :
                      /*
                         fen.getContentPane().add(table.getTableHeader(), BorderLayout.NORTH);
                         scrollpane.setRowHeaderView(table.getTableHeader())
                       */
    
    
                     fen.setVisible(true);
        
    
    
            // get machine IP address - two methods
            int receivePort=999, i;  
            InetAddress remoteIPaddress;                                    // IP address of remote host
            int remotePort;     
            float x;
            float t;
            t=0;
            // port on remote host to send frames too
            byte[] buffer = new byte[65507];                                // array to put datagrams in
            DatagramPacket dp = new DatagramPacket(buffer, buffer.length);  // create packet for datagrams
                  // open DatagramSocket to receive and a DatagramePacket to hold the datagrams
            DatagramSocket ds = new DatagramSocket(receivePort);
                  // loop forever reading datagrams from the DatagramSocket
            while (true)
                 {
                   ds.receive(dp);                                         // wait for next datagram
                   byte[] data = dp.getData();                             // get datagram contents
                  for  (i=93;i<=dp.getLength();i++)
                     System.out.print(" " + ((data[i])));
                     x=(((data[99]<<8)+data[100])<<4)/10000f;
                    
    
                     t=t+1;
                     System.out.println(t);
                     
                     
                     model.addRow(new Object[]{ t, x }); //  suffit à ajouter la ligne de données
                                     
    
                     for  (i=0;i<dp.getLength();i++)
                     if(data[i]<32) data[i]='*';
                     String s = new String(data, 0, 93);         // create a string from the data
                     System.out.println(" UDP data '" + s + "'\n");
    
                    }
                  }
            catch (IOException se) {System.err.println("error " + se);}
            System.exit(1); 
    }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #22
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    Merci bcp le problème est resolu;
    J'ai voulu mettre le tableau dans un autre interface graphique cad je vais créer une interface qui contient trois boutons: reception, affichage et annuler. donc en cliquant sur reception il va juste implemeter le prograamme udp et calculer les valeurs de x etde t sans le mettre dans le tebleau, en cliquant sur affichage il va affiher sur le tableau et annuler sortir de programe
    donc pour ce faire j'ai crée une classe public get_x pour calculer la valeur de x et t (temperature e temp) voila le code qui a beaucop des erreurs:
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package projefin;
    import  javax.swing.*;
    import  java.awt.*;
    import  java.awt.event.*;
    import java.awt.*; 
    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
     
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JButton;
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.FlowLayout;
    import java.awt.Dialog;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.TableColumn;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.UIManager;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.*;
    import javax.swing.table.DefaultTableModel;
    //Import UDP Connexion
    import java.io.*;
    import java.util.*;
    import java.util.zip.*;
    import java.net.*;
    import java.awt.event.ActionEvent;
     
    //public class Butoac {
     
        /**
         * @param args the command line arguments
         */
       /* public static void main(String[] args) {
            // TODO code application logic here
        }
    }*/
    //le listener est la classe test      
    public class Projefin extends JFrame implements ActionListener
    {
     
        /** Constructeur de test */
        public Projefin()
        {
            //titre de la fenetre
            super("Final Project");    
            //panel
            JPanel  pan=new JPanel();
            pan.setLayout(new BorderLayout());
    .....
            //
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setContentPane(pan);
            pack(); //permet de mettre une bonne dimension a la fenetre
            setVisible(true);
        }
         public float get_x() { 
            try
            {
     ......
                 {
                   ds.receive(dp);                                         // wait for next datagram
                   byte[] data = dp.getData();                             // get datagram contents
                   for  (i=93;i<=dp.getLength();i++)
                     System.out.print(" " + ((data[i])));
                     x=(((data[99]<<8)+data[100])<<4)/10000f;
                     t=t+1;
                     return t,x;
                    }
                  }
            catch (IOException se) {System.err.println("error " + se);}
            System.exit(1);
            return 0,0;  
       }
        /**
         * obligatoire car test implémente l'interface ActionListener
         */
        public  void    actionPerformed(ActionEvent e)
        {
            //quand on a cliqué sur le bouton ici
            System.out.println("Ici !");
     
     
                     // éventuellement, tu peux ajouter ce qui suit (le décommenter), si tu veux que la JTable scroll automatiquement sur la dernière ligne
    		   scrollpane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {  		        
    			   private int lastmax=-1;
    				public void adjustmentValueChanged(AdjustmentEvent e) {  
    		        	if ( !e.getValueIsAdjusting() ) {
    						int max=e.getAdjustable().getMaximum();
    						int pos=e.getAdjustable().getValue();
     
    						if ( lastmax==-1 || lastmax==pos+e.getAdjustable().getVisibleAmount()) {
    							e.getAdjustable().setValue(max);  
    						}
    						lastmax=max;
    		        	}
    		        }
    		    });
                     fen.setVisible(true);
                     float t,x;
                     [x,t]=fen.get_x();
                     model.addRow(new Object[]{ t, x });
        }
     
        public  static  void    main(String args[])
        {
            //new Projefin();
                Projefin frm = new Projefin();
                frm.setSize( 250, 175 );     
        frm.setVisible( true );
        }
    }
    Les erreurs sont ;
    public float get_x() au niivea de return , je peut pas mettre retun x,t donc je sais pas est ce qu'il fat mettre dans un tableaau ou quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                     float t,x;
                     [x,t]=fen.get_x();
                     model.addRow(new Object[]{ t, x });
    pour rempir l tableau j'ai besoin de t et x donc il m affiche un message d'erreur au niveau de rappel de fonction;
    J'ai fait l'action de boton affichage alors pour les deux autre bouton j'ai pas pu le faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            but.addActionListener(this);
    je sis pas comment differencier entre les action
    pour boutn reception onn principe je dois faire un appel a la fonction get_x c tout mais je sais pas est ce mon idée est jste surtt cncernant les valeurs de t et x et est c qu'il vont se changer ou bien il va mm'afficher la mem valeurr de températue
    Merci d'avance
    merci d'avance

  3. #23
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par ingws Voir le message
    public float get_x() au niivea de return , je peut pas mettre retun x,t donc je sais pas est ce qu'il fat mettre dans un tableaau ou quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                     float t,x;
                     [x,t]=fen.get_x();
                     model.addRow(new Object[]{ t, x });
    pour rempir l tableau j'ai besoin de t et x donc il m affiche un message d'erreur au niveau de rappel de fonction;
    Pour ce genre de chose, il vaut mieux faire une classe, avec 2 attributs (par exemple un classe Mesure, avec un attribut date et température) : ainsi, tu peux retourner une instance de Mesure. Pour la Jtable, il suffira d'implémenter un modèle spécifique.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #24
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    j'ai pas bien cmpris votre réponse: cad je doit crée une classe ave deux fonction séparés de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class mesure {
           public mesure() { 
          //this.donnees = donnees; 
          //this.titres = titres; 
       } 
          public float get_temperature() { 
    ....
          return temp; 
       }
                public float get_time() { 
    ....
          return time; 
       }
    ou bien je peux crée une seul fonction avec deux paramètres de sortie car le calcul de température et proportionnel au calcul d t

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    On ne peut pas en Java avoir une méthode qui retourne 2 valeurs : pour contourner ça, on encapsule les 2 valeurs dans une classe, dont l'instance devient la valeur unique retournée par la méthode.

    Donc oui, l'idée de la classe c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Mesure {
        private final int temps;
        private final float temperature;
        public Mesure(int temps, float temperature){
             this.temps=temps;
             this.temperature=temperature;
        }
        public int getTemps() {
            return temps;
        }
        public float getTemperature() {
            return temperature;
        }
    }
    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
    public Mesure get_x() {  // getMesure() serait plus significatif ! 
            try
            {
     ......
                 {
                   ds.receive(dp);                                         // wait for next datagram
                   byte[] data = dp.getData();                             // get datagram contents
                   for  (i=93;i<=dp.getLength();i++)
                     System.out.print(" " + ((data[i])));
                     x=(((data[99]<<8)+data[100])<<4)/10000f;
                     t=t+1;
                     return new Mesure(t,x);
                    }
                  }
            catch (IOException se) {System.err.println("error " + se);}
            System.exit(1);
            return null; 
       }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Mesure mesure=fen.get_x();
                     model.addRow(new Object[]{ mesure.getTemps(), mesure.getTemperature() });// on pourrait directement ajouter mesure en utilisant un modèle de table adapté
    Si le but est juste d'ajouter la ligne à la JTable et pas d'en faire autre chose, la méthode get_x() peut aussi retourne directement le tableau si tu préfères (pas besoin de classe dans ce cas) :

    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
    public Object[] get_x() {  // getMesure() serait plus significatif ! 
            try
            {
     ......
                 {
                   ds.receive(dp);                                         // wait for next datagram
                   byte[] data = dp.getData();                             // get datagram contents
                   for  (i=93;i<=dp.getLength();i++)
                     System.out.print(" " + ((data[i])));
                     x=(((data[99]<<8)+data[100])<<4)/10000f;
                     t=t+1;
                     return Object[]{t,x};
                    }
                  }
            catch (IOException se) {System.err.println("error " + se);}
            System.exit(1);
            return null; 
       }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Object[] row=fen.get_x();
                     model.addRow(row);
    Mais si tu veux en faire autre chose, comme par exemple, calculer une moyenne, ce sera moins pratique.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #26
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    J'ai tester la premiere solution mais il m'affiche que le prmier ligne de taleau cad comme si il lit pas la boucle voila la fonction mesure en détail
    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
    public mesure get_mesure() { 
            try
            {
             // get machine IP address - two methods
            int receivePort=999, i;  
            InetAddress remoteIPaddress;                                    // IP address of remote host
            int remotePort;     
            float x,t;
            //String h;
            x=0;t=0;
            // port on remote host to send frames too
            byte[] buffer = new byte[65507];                                // array to put datagrams in
            DatagramPacket dp = new DatagramPacket(buffer, buffer.length);  // create packet for datagrams
                  // open DatagramSocket to receive and a DatagramePacket to hold the datagrams
            DatagramSocket ds = new DatagramSocket(receivePort);
                  // loop forever reading datagrams from the DatagramSocket
            while (true)
                 {
                   ds.receive(dp);                                         // wait for next datagram
                   byte[] data = dp.getData();                             // get datagram contents
                   for  (i=93;i<=dp.getLength();i++)
                    //System.out.print(" " + ((data[i])));
                     x=(((data[99]<<8)+data[100])<<4)/10000f;
                     t=t+1;
                     return new mesure(t,x);
                    }
                  }
            catch (IOException se) {System.err.println("error " + se);}
            System.exit(1);
            return null;  
       }
    ici rappel

    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
     
        public  void    actionPerformed(ActionEvent e)
        {
            //try {
                //quand on a cliqué sur le bouton ici
                System.out.println("Ici !");
                JFrame  frm=new JFrame();
                frm.setLocationRelativeTo(null);
                frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frm.setTitle("Temperature");
                frm.setSize(500,600);
                Projefin fen = new Projefin();
                DefaultTableModel model = new DefaultTableModel(new String[]{"Time(s)", "Temperature(°C)"},0);
                JTable table = new JTable(model);
                JScrollPane scrollpane  = new JScrollPane(table);
                frm.getContentPane().add(scrollpane  );
                frm.setVisible(true);
                 mesure mesure1=fen.get_mesure();
                 model.addRow(new Object[]{ mesure1.get_time(), mesure1.get_temperature() });
                             }

  7. #27
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Non, mais, forcément, si tu mets un return dans un while, ça ne fait que la première itération et ça sort.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #28
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    donc c quoi la solution ppour qu'il calcul tous ls valeurs et ne sort pss

  9. #29
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    J'ai enlevée boucle while d la focntion et je l'ajout juste dans l'apel de fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                         frm.setVisible(true);
     
                         while (true){
                        mesure mesure1=fen.get_mesure();
                     model.addRow(new Object[]{ mesure1.get_time(), mesure1.get_temperature() });
     
                         System.out.println(mesure.get_time());
                             }}
    il m'affice rien maintenant

  10. #30
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    j'ai ajouté un condition a boucle while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                       float t,x;
                         t=0;x=0;
                         mesure mesure1=fen.get_mesure();
                         t=mesure1.get_time();
                         while ((true)&(t<0)){
     
                     model.addRow(new Object[]{ mesure1.get_time(), mesure1.get_temperature() });
                         //Object[] row=fen.get_x();
                         //model.addRow(row);
                         System.out.println(mesure1.get_time());
                             }}
    il m afiche just les titre de tableau
    et lorsque j'ai fait comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                       float t,x;
                         t=0;x=0;
                         mesure mesure1=fen.get_mesure();
                         t=mesure1.get_time();
                         while ((true)&(t>0)){
                         //mesure mesure1=fen.get_mesure();
                     model.addRow(new Object[]{ mesure1.get_time(), mesure1.get_temperature() });
                         //Object[] row=fen.get_x();
                         //model.addRow(row);
                         System.out.println(mesure1.get_time());
                             }}
    il m affiche en java
    1
    1
    1...
    sans afficher le tableau et sans changer la valeur de t

  11. #31
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Dans le premier cas où il ne t'affiche rien, je pense qu'il y a des erreurs et que tu ne les affiches pas. Ta méthode get_mesure() (au passage, il y a des conventions en Java !) doit lire les données dans un tableau non initialisée (de ce que je vois dans ton code,il n'y a plus de lecture des données UDP).

    Normalement, ta boucle d'origine produit une valeur par itération et l'ajoute dans une JTable : cette méthode produit donc plusieurs valeurs. Tu ne peux pas donc en retourner qu'une, ou alors les autres seront perdues. Pour retourner quelque chose, il te faut mettre toutes les mesures dans une liste et retourner la liste : aussi faudrait-il que la boucle ne soit pas infinie, sinon, on ne fera la boucle et on ne retournera jamais rien (jusqu'à explosion des limites de stockage de la liste).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    float t,x;
                         t=0;x=0;
                         mesure mesure1=fen.get_mesure();
                         t=mesure1.get_time();
                         while ((true)&(t>0)){
                         //mesure mesure1=fen.get_mesure();
                     model.addRow(new Object[]{ mesure1.get_time(), mesure1.get_temperature() });
                         //Object[] row=fen.get_x();
                         //model.addRow(row);
                         System.out.println(mesure1.get_time());
                             }}
    ça c'est n'importe quoi : t ne change pas dans la boucle, donc ça ajoute la même mesure à l'infini. Quelle intérêt ici de faire une boucle.
    Attention par rapport au & (opérateur bitwise) : ça fonctionne ici, mais c'est normalement &&. Je crois qu'il faut revoir toutes les bases de Java.

    Maintenant, ce que je ne comprends pas c'est ce que tu cherches à faire : au début, tu cherchais à lire des mesures de température et à les mettre dans une JTable. Ça fonctionnait ça, non ? Maintenant, que cherches tu à faire en plus ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #32
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    c vrai mon but est de remplir le tableau avec les valeurs de température et et d temps mais juste maintenant j'ai voulu ajouter des boutons dans une une iterface graphiqu et de lui dire n'est pas remplir le tebleau que lorrsqueje clique sur le bouton remplir par exemple car je veux aouter un autre bouton test pour tester les valeurs de temperature. dnc ce pour cela j'ai penser aune methode qui me renvoient les valeu de Temperature et de temp

  13. #33
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    J'ai pas bien compris votre remarque conccernat la list cad je laisse ma classe de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class mesure{
        private final float temps;
        private final float temperature;
        public atr_tem_t(float temps, float temperature){
             this.temps=temps;
             this.temperature=temperature;
        }
        public float get_temperature() { 
             return temperature;
                    }
                public float get_time() { 
              return temps; 
       }
    }
    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
         public mesure get_mesure() { 
            try
            {
                List list = new List();
             // get machine IP address - two methods
            int receivePort=999, i;  
            InetAddress remoteIPaddress;                                    // IP address of remote host
            int remotePort;     
            float x,t;
            //String h;
            x=0;t=0;
            // port on remote host to send frames too
            byte[] buffer = new byte[65507];                                // array to put datagrams in
            DatagramPacket dp = new DatagramPacket(buffer, buffer.length);  // create packet for datagrams
                  // open DatagramSocket to receive and a DatagramePacket to hold the datagrams
            DatagramSocket ds = new DatagramSocket(receivePort);
                  // loop forever reading datagrams from the DatagramSocket
            while (true)
                 {
                   ds.receive(dp);                                         // wait for next datagram
                   byte[] data = dp.getData();                             // get datagram contents
                   for  (i=93;i<=dp.getLength();i++)
                    //System.out.print(" " + ((data[i])));
                     x=(((data[99]<<8)+data[100])<<4)/10000f;
                     t=t+1;
                     list.add(x);
                     list.add(t);
                     list = Collections.unmodifiableList(list);
                     return new list;
                    }
                  }
            catch (IOException se) {System.err.println("error " + se);}
            System.exit(1);
            return null;  
       }
    il m affiche ces messages d'erreur:
    no suitale method ffor add float:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                     list.add(x);
                     list.add(t)
    method .unmodifiableList cannot b applied in give type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                     list = Collections.unmodifiableList(list);
    expected ( or [:

  14. #34
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par ingws Voir le message
    c vrai mon but est de remplir le tableau avec les valeurs de température et et d temps mais juste maintenant j'ai voulu ajouter des boutons dans une une iterface graphiqu et de lui dire n'est pas remplir le tebleau que lorrsqueje clique sur le bouton remplir par exemple
    Pour ça faut voir exactement : s'il s'agit de démarrer ou pas le process, il n'y a pas besoin des valeurs stockées dans une liste. S'il s'agit que le process tourne en tâche de fond, et accumule les valeurs, pour de les afficher que quand on clique sur un bouton, effectivement il faut les stocker, mais je ne vois pas trop l'intérêt, et puis tu risques de remplir la mémoire de données qui ne seront affichées que plus tard ou même jamais. S'il s'agit de relever les températures, mais ne les afficher dans la JTable que sur demande, genre j'active, je n'active pas, il n'y a pas besoin de stocker dans une liste.
    Ensuite, il faut aussi envisager une autre solution : stocker les valeurs sans les afficher directement (pas dans une JTable), mais dans un fichier, ou une base (faut voir la fréquence de relevés, par rapport aux performances), et à part avoir une JTable qui permet de visualiser le résultat d'une sélection sur les données stockées. Pas besoin de liste non plus (au lieu de faire un addRow() dans un modèle de table, on fait un saveRow() (ou un logRow()).

    Citation Envoyé par ingws Voir le message
    car je veux aouter un autre bouton test pour tester les valeurs de temperature. dnc ce pour cela j'ai penser aune methode qui me renvoient les valeu de Temperature et de temp
    Pour ça tu n'as pas besoin de stocker les valeurs dans une liste : elles sont dans la JTable, tu peux les récupérer par la JTable (par la sélection).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #35
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    donc si j'ai bien compris je fais comme suit :
    1. Exécuter le programme de reception udp (pour le calcul de la temperature et t )
    2. Sauvegarder les données dans une base de données
    3. Création d'un jtable rempli à partir de la base de données
    mais juste je n'ai pas compris ce que vous voulez dire quoi par la fréquence de process

  16. #36
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, en principe, c'est ça.

    Par fréquence, je parlais de la fréquence de prise de mesures : si tu prends une mesure toutes les minutes, tu peux la sauvegarder dans une base de données. Si tu en prends une toute les millisecondes, la charge va être difficilement être supportée par la plupart des bases, si tu enregistres les données une à une (on peut faire du traitement différé par lot, mais c'est peut-être un peu trop complexe pour toi).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #37
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    Ok, je vais tester la méthode de sauvegarde de données dans la base de données, ce sera plus facile pour moi. Mais juste une autre question : est-ce qu'il est possible de calculer le temp d'exécution de chaque tâche, c'est-à-dire est-ce que on peut par exemple lorsqu'on fait un test sur la valeur de température avoir une idée sur de combien est le délai de ce test.

  18. #38
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    Autrement dit, je veux savoir comment je peux faire pour que la détection des température se fasse en temp reel

  19. #39
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Du vrai temps réel, tu n'en feras pas en Java de base (il y a bien RTSJ, mais je n'y connais rien, donc je ne peux pas en parler). En plus, si l'OS n'est pas lui même temps réel, il ne faut pas y compter. En fait, je pense que tu voudrais connaitre le temps à la prise de mesure et ta sonde ne te fournit pas cette information (quoique ton avant-dernier message suggère que c'est le temps de mesure que tu veux).
    L'approche naïve consiste à utiliser System.currentTimeMillis(), ou System.nanoTime(), mais ce n'est pas très précis : il faut voir quelle précision t'est nécessaire et suffisante. Par ailleurs, je ne connais pas d'autres moyens.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  20. #40
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le temps réel c'est un programmation très spécifique où chaque tâche dispose d'une tranche de temps bien précise pour s'exécuter, est capable de donner à l'avance combien ce temps sera et de le respecter, où le controlleur est capable de tuer immédiatement les tâches qui déborde et tout planifier de manière garantie. C'est très loin d'être à la portée d'un OS de base ou de java et c'est plutôt le trucqu'on utilisera dans les processus industriels où on doit garantir par exemple, qu'entre la lecture de la donnée de température d'un capteur et la mise en sécurité de l'installation pour éviter une explosion il se passe exactement moins de X nano secondes.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [TP] Problème avec mon programme de conversion
    Par Panzer95 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 28/05/2006, 18h36
  2. Probleme au niveau de la connexion de tomcat avec oracle8i
    Par hamska2 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 08/05/2006, 00h53
  3. [JMF] Problème au niveau de RTP
    Par Alienx dans le forum Multimédia
    Réponses: 2
    Dernier message: 05/03/2006, 15h50
  4. [Thread] petit problème au niveau du reveil d'un thread
    Par sagitarium dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 13/01/2006, 11h35
  5. PROBLEME haut niveau BACKUP
    Par Dev_Michael dans le forum Administration
    Réponses: 7
    Dernier message: 10/03/2005, 15h32

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