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 Android Discussion :

Problème de connexion Modbus TCP


Sujet :

API standards et tierces Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de royal380
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Par défaut Problème de connexion Modbus TCP
    Bonjour,

    Je développe actuellement une appli androïd pour communiquer avec un automate (actuellement Schneider M340) en Modbus TCP/IP.
    J'utilise pour ça la librairie Modbus4J.

    Le problème est que dans mon LogCat je vois un truc du style :
    "Modbu4j fail to connect"

    J'arrive pourtant bien à pinger l'automate et à m'y connecter avec une appli dispo sur le market "ModbusDroid".

    Voici mon petit 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
      m_Btn.setOnClickListener(new View.OnClickListener() 
    		  {
    			  private ReadResponse rep;
     
    			public void onClick(View v) 
    		      {
    		          // Perform action on click
     
    		            IpParameters ip = new IpParameters();  
    		            ip.setHost("192.168.70.87");  
    		            ip.setPort(502);  
    		            ModbusMaster mp = new ModbusFactory().createTcpMaster(ip, false);  
    		        try {  
    		            mp.init();  
    		            coucou.setText("OK");
    		        } catch (Exception ex) {  
    		            Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);  
    		            coucou.setText("N-OK");
    		        }  
     
     
    			    	  ModbusRequest req2 = null;
    						try {
    							req2 = new ReadHoldingRegistersRequest(0,0,5);
    						} catch (ModbusTransportException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}  
     
     
    						rep = null;
    						try {
    							rep = (ReadResponse) mp.send(req2);
    							coucou.setText("READ");
    						} catch (ModbusTransportException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    							coucou.setText("READ FAIL");
    						}  
     
     
     
     
    		    }  
     
     
    		  });
    Merci d'avance

  2. #2
    Membre averti Avatar de royal380
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Par défaut
    Bonjour,

    Je rajoute la copie de mon LogCat.

    J'essaye toujours de me connecter en vain...

    Si quelqu'un a une idée ?

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    06-12 09:38:16.281: W/System.err(3452): Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
    06-12 09:38:16.289: W/System.err(3452): 	at libcore.io.IoBridge.socket(IoBridge.java:583)
    06-12 09:38:16.289: W/System.err(3452): 	at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)
    06-12 09:38:16.289: W/System.err(3452): 	at java.net.Socket.checkOpenAndCreate(Socket.java:663)
    06-12 09:38:16.289: W/System.err(3452): 	at com.serotonin.modbus4j.ip.tcp.TcpMaster.openConnection(TcpMaster.java:117)
    06-12 09:38:16.289: W/System.err(3452): 	at com.serotonin.modbus4j.ip.tcp.TcpMaster.send(TcpMaster.java:63)
    06-12 09:38:16.289: W/System.err(3452): 	... 18 more
    06-12 09:38:16.289: W/System.err(3452): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
    06-12 09:38:16.289: W/System.err(3452): 	at libcore.io.Posix.socket(Native Method)
    06-12 09:38:16.289: W/System.err(3452): 	at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
    06-12 09:38:16.289: W/System.err(3452): 	at libcore.io.IoBridge.socket(IoBridge.java:568)
    06-12 09:38:16.289: W/System.err(3452): 	... 23 more

  3. #3
    Membre chevronné
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 175
    Par défaut
    Bonjour,

    avez vous ajouté a votre manifest la permission internet ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uses-permission android:name="android.permission.INTERNET"/>

  4. #4
    Membre averti Avatar de royal380
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Par défaut
    Oui j'ai essayé ça aujourd'hui et l'erreur est toujours présente .
    Je recherche actuellement du côté AsyncTask pour lancer la configuration et la connexion...

    Mais je n'y crois pas..

    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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.modbus"
        android:versionCode="1"
        android:versionName="1.0" >
     
    	<uses-permission android:name="android.permission.INTERNET"/>
     
        <uses-sdk
            android:minSdkVersion="7"
            android:targetSdkVersion="16" />
     
        <application
     
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.modbus.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
     
    </manifest>

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    En mode utilisateur, les sockets ne peuvent être que TCP et UDP... la librairie utilise-t-elle un autre protocole ?

    (par exemple, ouvrir un socket ICMP va envoyer EACCESS aussi).


    Mais cette erreur ressemble vraiment à un problème de permission internet !!

  6. #6
    Membre averti Avatar de royal380
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Par défaut
    J'ouvre uniquement un Maître TCP et je ne vois pas dans la doc quelque chose qui parle d'ICMP ... :/

    J'ai lu quelque part que depuis l'API 3 on ne pouvait plus créer une connexion à partir du thread principal. J'ai donc essayé avec une AsyncTask mais toujours rien...

    Je suis débutant sur Android donc j'ai surement foiré quelque part ...




    Ecoute du click qui lance la connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     m_Btn.setOnClickListener(new View.OnClickListener() 
    		  {
     
    		      public void onClick(View v) 
    		      {
    		    	  new ModbusConnection().execute();
     
    		      }       
    		  });
    Fonction Async :
    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
    private class ModbusConnection extends AsyncTask<Void, Void, String> {
     
    			protected String doInBackground(Void... params) {
     
    	                return connectA();
     
    	        }
    	        // onPostExecute displays the results of the AsyncTask.
    	        @Override
    	        protected void onPostExecute(String result) {
    	            textView.setText(result);
    	       }
     
     
    	    }
    Fonction de connexion :
    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
    private String connectA() {
     
    			  modFactory = new ModbusFactory();
    			  ip = new IpParameters();
    			  ip.setHost("192.168.70.87");  
    			  ip.setPort(502);
    	          ModbusMaster modMaster = modFactory.createTcpMaster(ip, false);
    			  try {
    					modMaster.init();
    					return "CONNEC OK";
    				} catch (ModbusInitException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    					return ("CONNEC N-OK");
    				}
     
    	  	  }

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut connexion Modbus tcp/ip
    salut royal 380.

    je suis entrain de faire ma toute première application sous android dans le cadre d'un projet. j'ai réussi à créer dynamiquement l'interface de commande de mes automates.

    actuellement, je suis bloqué depuis 1semaine au niveau de l’implémentation de la connexion ModBus/TCP.
    après plusieurs recherches sur le net, j'ai trouvé quelques personnes ayant été confronté à ce problème.Mais nul n'a semblé allée jusqu'au bout de ses recherches excepté toi.

    ça serait très gentil de poster ton code final afin qu'on puisse s'éclairer pour mener à bien notre projet.

    Merci et au plaisir de te lire.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/10/2010, 15h04
  2. Réponses: 0
    Dernier message: 03/04/2010, 00h40
  3. Problème de connexion Socket en TCP
    Par jerdream78 dans le forum Réseau
    Réponses: 11
    Dernier message: 26/02/2010, 12h05
  4. Connexion ModBus TCP
    Par j.sineau dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/03/2008, 08h10
  5. problème de connexion 2 PC
    Par guitalca dans le forum Développement
    Réponses: 3
    Dernier message: 22/09/2003, 14h04

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