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:
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:
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.