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

Multimédia Java Discussion :

[javax.comm + applet


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut [javax.comm + applet
    Bonjour à toutes et tous!
    Je dois faire une applet qui communique avec une balance via le port COM1.
    Etant néophite dans cette API java qu'est javax.comm, j'ai donc élaboré un programme procédurale pour m'entrainer à communiquer avec ma balance! Jusque là tout va bien!

    Le problème survient lorsque que met mon code d'identification de mon port dans mon applet... J'ai bien le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException: name can't be null
    Donc jusque là pas de soucis. mais par contre j'ai un problème avec cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    o_port2 = CommPortIdentifier.getPortIdentifier("COM1");
    Mon applet bloque sur celle-ci... et je ne vois pas pourquoi puisque dans mon programme en mode console çà marche nickel !

    Merci d'avance pour votre aide... voici le code entier de mon applet ainsi que le message d'erreur dans son intégralité :

    Applet:
    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
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    /**
             * @var poids
             * Le poids reçu de la balance
             */
    	private String poidsRecu = null;
    	/**
             * @var poids
             * Le poids reçu de la balance
             */
    	private float poids = 0.0f;
    	/**
             * @var poidsPrecedent
             * Le poids reçu de la balance juste avant le dernier reçu
             */
    	private float poidsPrecedent = 0.0f;
    	/**
             * @var poidsFinal
             * Le poids final après test de stabilité reçu de la balance
             */
    	public float poidsFinal = 0.0f;
    	/**
             * @var threadPoids
             * Le thread qui va communiquer avec la balance
             */
    	private Thread threadPoids;
    	/**
             * @var portId
             * l' Identifiant de notre port série
             */
    	private CommPortIdentifier portId;
    	/**
             * @var reader
             * le buffer qui va stocké les flux reçu de la balance
             */
    	private BufferedReader reader;
    	/**
             * @var outStream
             * Flux envoyer par la balance
             */
    	private OutputStream outStream;
    	/**
             * Identificateur du port à utiliser pour la connexion
             * @var o_port2
             */
    	private CommPortIdentifier o_port2;
    	/**
             * Objet port identifié. Pour le traitement des flux I/O
             * @var o_portId
             */
    	private SerialPort o_portId = null;
    	/**
             * Constructeur de l' applet
             * Initialise les variables de classe ainsi que l' IHM
             * @param aucun
             * @return void
             */
    	public void start()
    	{
    		///////////////////////////////////////////////////////////
    		//				INITIALISATION DU THREAD
    		//////////////////////////////////////////////////////////
    	   if (threadPoids == null) {
    		   threadPoids = new Thread(this, "Poids");
    		   threadPoids.start();
    	   }
    	   	///////////////////////////////////////////////////////////
    		//				INITIALISATION DU DRIVER Win32
    		//////////////////////////////////////////////////////////
    	   	Win32Driver driver = new Win32Driver();
     
    	   	try 
    		{
    			driver.initialize();
    		} 
    		catch (NullPointerException e) {/*System.out.println("coucoucoucoucouc\n");*/}
     
     
    		try
    		{
     
    			o_port2 = CommPortIdentifier.getPortIdentifier("COM1"); 
     
    			o_portId = (SerialPort) o_port2.open("test", 1000);		
    			System.out.println("ok1");
     
    			o_portId.setSerialPortParams(1200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
    			System.out.println("ok2");
    			outStream = o_portId.getOutputStream();	
    			reader = new BufferedReader(new InputStreamReader(o_portId.getInputStream()));
     
     
    			outStream = o_portId.getOutputStream();	
    			reader = new BufferedReader(new InputStreamReader(o_portId.getInputStream()));
     
    		}
    		catch(NoSuchPortException e)
    		{
    			System.out.println("coucoucoucoucouc\n");
    			System.out.println("\nmessage: "+e.getMessage()+"\nCause: " +e.getCause());
    		}
    		catch (PortInUseException e)
    		{
    			// TODO Auto-generated catch block
    			System.out.println("coucoucoucoucouc\n");
    			System.out.println("\nmessage: "+e.getMessage()+"\nCause: " +e.getCause());
    		}
    		catch (UnsupportedCommOperationException e)
    		{
    			System.out.println("coucoucoucoucouc\n");
    			System.out.println("\nmessage: "+e.getMessage()+"\nCause: " +e.getCause());
    		}	
    		catch (IOException e)
    		{
    			System.out.println("coucoucoucoucouc\n");
    			System.out.println("\nmessage: "+e.getMessage()+"\nCause: " +e.getCause());
    		}
     
    	}
     
    	/**
             * Méthode qui lance notre thread
             * @return void
             */
        public void run() {
     
     
    		///////////////////////////////////////////////////////////
    		//				INITIALISATION DU PORT
    		//////////////////////////////////////////////////////////
     
     
    		JOptionPane j = new JOptionPane();
    		j.showMessageDialog(null, "poidsRecu: "+poidsRecu, "test", JOptionPane.INFORMATION_MESSAGE);
     
     
            while (threadPoids != null) {
     
                try {
                	threadPoids.sleep(1000);
     
                	poidsRecu = reader.readLine();
     
    				if (poidsRecu.contains("+") || poidsRecu.contains("-"))
    				{
    					poidsRecu = poidsRecu.replaceAll("[^0-9.-]", "");
    					poids = Float.parseFloat(poidsRecu);
     
    					if(isStable(poids, poidsPrecedent))
    					{
    						poidsFinal = poids;
    					}					
    				}	
     
                } catch (InterruptedException e){
                	System.out.println("coucoucoucoucouc\n");
                }
                catch (IOException e) {
                	System.out.println("coucoucoucoucouc\n");
        			// TODO Auto-generated catch block
        			//System.out.println("\nmessage: "+e.getMessage()+"\nCause: " +e.getCause());
        		}
                repaint();
            }
        }
     
        /**
         * méthode qui vérifie la stabilité du poids reçu par la balance
         * @return booléan
         * @param poid1 float
         * @param poid2 float
         */
        private boolean isStable(float poid1, float poid2)
        {
        	float poidTemoin = poid1 - poid2;
        	boolean bOk = false;
        	if (poidTemoin < 1 || poidTemoin > -1)
        	{
        		bOk = true;
        	}    		
        	return bOk;
        }
     
        public float retourne_poids()
        {
        	return poidsFinal;
        }
     
        public void paint(Graphics g) {
            String label = new String("Poids reçu: "+poids+"\n");
            label += "   poids stabilisé :" + poidsFinal;
            g.drawString(label, 5, 20);
        }
     
        /**
         * Méthode qui arrête notre thread
         * @return void
         */
        public void stop() {
        	threadPoids.stop();
        	threadPoids = null;
        }
    Erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.lang.NullPointerException: name can't be null
    	at java.io.FilePermission.init(Unknown Source)
    	at java.io.FilePermission.<init>(Unknown Source)
    	at java.lang.SecurityManager.checkDelete(Unknown Source)
    	at javax.comm.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:89)
    	at appletPese.start(appletPese.java:111)
    	at sun.applet.AppletPanel.run(Unknown Source)

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Juste question un peu au hasard (jamais fait en applet) ça ne serait pas un problème de droits ? Ton applet est signée ?

  3. #3
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut
    tu crois que si l'applet n'est pas signé.... je ne pourrais pas communiquer avec les ports séries...?
    Je vais creuser çà merci ! je n'y avait pas pensé!

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Presque certain oui que tu ne peux pas si l'applet n'est pas signée ...

  5. #5
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut
    Je cherche depuis tout à l'heure mais... je ne comprend pas vraiment comment signé une applet...

    Je n'ai, comme tu as pu le constater, qu'un fichier *.class au final...
    j'ia donc fait un *.jar
    utiliser keytool.exe ainsi que jarsigner amis ensuite.... rien ne change !
    J'ai toujours le même problème... et, sous eclipse, j'ai un truc d'afficher par défaut, mais sous firefox ou IE çà ne charge même pas....

    je suis un peu dans un bruillard à couper au couteau.... Si tu as une suggestion ou une façon de faire à me proposer... se serai avec une joie non dissimulée....

    Déjà merci pour ton aide précédente et je te remercie d'avance pour ton aide futur...

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Malheureusement là je ne suis pas du tout compétent en la matière mais je up ya sûrement qqun qui va répondre

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

Discussions similaires

  1. [Info]javax.comm fichier de configuration
    Par MrX dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/02/2009, 18h37
  2. [javax.comm] SerialPort
    Par zehle dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 25/10/2007, 13h53
  3. [JAR] + [javax.comm] Est-ce possible ?
    Par aravis dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 20/03/2007, 18h27
  4. Probleme avec l'API javax.comm
    Par rousni dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 16/06/2006, 12h48
  5. Décrocher avec javax.comm
    Par gskoala dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 08/04/2006, 21h15

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