YAY ;-) ... Guess we did something right ;-)
Chris Am 02.06.20, 10:37 schrieb "udeho" <ud...@student.kit.edu>: Hi, This was a problem with my Maven configuration. I'm sorry, I'm very inexperienced with Maven. Anyway, reading values from the holding register now works fine with drivers of version 0.7.0. Best Tim -----Original Message----- From: Christofer Dutz <christofer.d...@c-ware.de> Sent: Montag, 1. Juni 2020 23:27 To: udeho <ud...@student.kit.edu>; dev@plc4x.apache.org Subject: Re: [Modbus] Querying Values from Holding Register Hi, Are you perhaps mixing different versions? The api and driver versions should match. Chris ________________________________ Von: udeho <ud...@student.kit.edu> Gesendet: Montag, 1. Juni 2020 14:58 An: dev@plc4x.apache.org <dev@plc4x.apache.org> Betreff: RE: [Modbus] Querying Values from Holding Register Hi, I've just tried to do the same as below with the newly released 0.7.0 version. Unfortunately, I get the following errors: [main] INFO org.apache.plc4x.java.PlcDriverManager - Instantiating new PLC Driver Manager with class loader jdk.internal.loader.ClassLoaders$AppClassLoader@129a8472 [main] INFO org.apache.plc4x.java.PlcDriverManager - Registering available drivers... Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/plc4x/java/spi/connection/GeneratedDriverBase at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(Unknown Source) at java.base/java.security.SecureClassLoader.defineClass(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Unknown Source) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(Unknown Source) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(Unknown Source) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(Unknown Source) at java.base/java.util.ServiceLoader$2.hasNext(Unknown Source) at java.base/java.util.ServiceLoader$3.hasNext(Unknown Source) at org.apache.plc4x.java.PlcDriverManager.<init>(PlcDriverManager.java:53) at org.apache.plc4x.java.PlcDriverManager.<init>(PlcDriverManager.java:44) at modbus.playground.main(playground.java:108) Caused by: java.lang.ClassNotFoundException: org.apache.plc4x.java.spi.connection.GeneratedDriverBase at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 19 more I added the new version as a dependency in Maven, but in the pom.xml is also stated "Missing artifact org.apache.plc4x:plc4j-driver-modbus:jar:0.7.0". Used dependency in maven: <dependency> <groupId>org.apache.plc4x</groupId> <artifactId>plc4j-driver-modbus</artifactId> <version>0.7.0</version> </dependency> Best Tim -----Original Message----- From: Christofer Dutz <christofer.d...@c-ware.de> Sent: Mittwoch, 20. Mai 2020 11:28 To: dev@plc4x.apache.org Subject: Re: [Modbus] Querying Values from Holding Register Hi Tim, I guess you are using one of the "old generation" drivers (As you say it's working and the address seems to imply that). Perhaps you should either try the version 0.8.0-SNAPSHOT or wait for 2 more days till we release the 0.7.0 version. In the 0.7.0 version we have completely deleted all existing drivers and replaced them by new ones. While at it I took the liberty of making the Modbus a little more robust. So it would be great if you could give us feedback if your problem goes away magically when updating to these driver versions. Chris Am 20.05.20, 10:24 schrieb "udeho" <ud...@student.kit.edu>: Hi all, I have tried to query values from the holding register of a simulated modbus device and process them as integer using the following code: // read integer / holding register PlcDriverManager driverManager = new PlcDriverManager(); String conString = "modbus:tcp://localhost"; PlcConnection plcCon = driverManager.getConnection(conString); PlcReadRequest.Builder builder = plcCon.readRequestBuilder(); builder.addItem("value", "readholdingregisters:1"); PlcReadRequest readRequest = builder.build(); PlcReadResponse resp = readRequest.execute().get(); This runs well, but when I try to handle the result as integer (using resp.getInteger("value")) I always get null as result no matter what's in the register. For Boolean values in the coil this works without any problem (using getBoolean() of course). Another approach I tried is using the getAllByteArrays("value"); command, but I haven't found a way to get the returned collection of byte arrays into integers. Can you give me an indication of what my problem may be or what I'm doing wrong? Thank you very much in advance! Best Tim