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


Reply via email to