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

API standards et tierces Java Discussion :

Problème avec l'API J2mod


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut Problème avec l'API J2mod
    Bonjour,

    J'ai pour projet de communiquer par TCP/Ip avec un module électronique. je me suis donc tourné vers TCP/Modbus. J'ai donc joint à mon projet j2mod.jar.

    j'arrive dans un premier temp à m'y connecter.

    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
     
      byte[] ad = new  byte[] {(byte)192, (byte)168, (byte)255, 1}; 
      InetAddress addr = InetAddress.getByAddress(ad);
      TCPMasterConnection con = new TCPMasterConnection(addr);
       con.setPort(Modbus.DEFAULT_PORT);
     
      try 
      {
           con.connect();
           System.out.println("vous êtes connecté");
       }
       catch (Exception e)
       {
           System.out.println(e.getMessage());
        }
       finally
       {
            Thread.sleep(1000);
            con.close();
       }
    Si je suis sur le même réseaux que mon module ça fonctionne sinon ça affiche une erreur.

    Donc jusque là j'ai saisie je pense le fonctionnement.

    Ensuite j'essaye de mettre en place une transaction dont voici le code :

    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
     
    ModbusTCPTransaction trans = new ModbusTCPTransaction();
    		ReadInputDiscretesRequest req = new ReadInputDiscretesRequest(10, 10);
    		req.setTransactionID(1);
     
    		ReadInputDiscretesResponse resp = new ReadInputDiscretesResponse();
    		trans.setConnection(con);
    		int fcode =req.getFunctionCode();
     
     try
    	    {
    	    	con.connect();
    			System.out.println("vous êtes connecté à "+ addr.getHostAddress()+" port : "+Modbus.DEFAULT_PORT);
     
    			try
    			{
    				trans.setRequest(ModbusRequest.createModbusRequest(fcode));
    				trans.execute();
    				resp = (ReadInputDiscretesResponse) trans.getResponse();
    				System.out.println("Réponse : "+resp.getHexMessage());
    			}
    			catch(Exception e)
    			{
    				System.out.println("erreur dans la tansaction (I/O) : "+e.getMessage());
    			}
     
     
    	    }catch(Exception e)
    	    {
    	    	System.out.println("erreur niveau réseaux : "+e.getMessage());
    	    }
    	    finally
    	    {
    	    	System.out.println("Déconnexion ...");
    	    	Thread.sleep(500);
    	    	con.close();
    	    	System.out.println("Déconnecté");
    	    }
    Cela me lève un exception NullPointerException sur la ligne :
    quelqu'un pourrais m'aiguiller.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    La ligne levant l'exception ne serait pas plutôt : "resp.getHexMessage()" ?
    Affiche la stack complète de l'exception pour être sûr.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    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
     
    byte[] ad = new  byte[] {(byte)192, (byte)168, (byte)255, 1}; 
    		InetAddress addr = InetAddress.getByAddress(ad);
    		TCPMasterConnection con = new TCPMasterConnection(addr);
    		con.setPort(Modbus.DEFAULT_PORT);
     
     
     
    		ModbusTCPTransaction trans = new ModbusTCPTransaction();
    		ReadInputDiscretesRequest req = new ReadInputDiscretesRequest(10, 10);
     
    		ReadInputDiscretesResponse resp = new ReadInputDiscretesResponse();
     
    		trans.setConnection(con);
    		int fcode =req.getFunctionCode();
     
    		trans.setRequest(ModbusRequest.createModbusRequest(fcode));
    		trans.setRequest(ModbusRequest.createModbusRequest(fcode));
    		trans.execute();	
     
                    con.close();
    Erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    java.lang.NullPointerException
    	at com.ghgande.j2mod.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:203)
    	at com.eveacom.socket.sockSero.go(sockSero.java:35)
    	at com.eveacom.main.MainClass.main(MainClass.java:22)
    la ligne 35 est bien trans.execute();

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    La ligne levant l'exception ne serait pas plutôt : "resp.getHexMessage()" ?
    Affiche la stack complète de l'exception pour être sûr.
    j'ai commentez et enlever
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resp.getHexMessage();
    cela ne viens pas de la à mon avis mais ce matin j'ai effectuer des test sur mes requête et j'ai remarquer quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.out.println("Requete que j'ai construite   : "+req.getHexMessage());
    				System.out.println("Requete construite Par Modbus : "+ModbusRequest.createModbusRequest(fcode).getHexMessage());
    me donne en sortie cela :

    Requete que j'ai construite : 00 00 00 00 00 06 00 02 00 0a 00 0a
    Requete construite Par Modbus : 00 00 00 00 00 06 00 02 00 00 00 00

    Wtf.

    Edit : Erreur trouver

    ce n'étais pas la réponse qui etait vide comme on pouvais le croire c'était la connexion qui était setter avant d'être connecter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     con.connect();
     
    trans.setConnection(con);
    mais il fallait faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    trans.setConnection(con);
     con.connect();

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

Discussions similaires

  1. [Flex3] Problème avec l'API de Logging du framework Flex 3
    Par gobgob dans le forum Flex
    Réponses: 1
    Dernier message: 26/10/2010, 10h35
  2. problème avec l'api FileDialog
    Par gnaoui_9999 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/07/2010, 15h40
  3. Problème avec l'API Quartz
    Par reeda dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 16/09/2008, 12h20
  4. Problème avec l'API "GetDlgItemText"
    Par olaf_le_preux dans le forum Windows
    Réponses: 11
    Dernier message: 18/01/2008, 10h20
  5. Problème avec les API
    Par Bertr@nd dans le forum Windows Forms
    Réponses: 20
    Dernier message: 14/07/2007, 14h53

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