• Recent
    • Tags
    • Popular
    • Register
    • Login
    1. Home
    2. rstoeck

    Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

    Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website Mango 5 Documentation Website
    R
    • Profile
    • Following 0
    • Followers 0
    • Topics 3
    • Posts 7
    • Best 0
    • Controversial 0
    • Groups 0

    rstoeck

    @rstoeck

    0
    Reputation
    580
    Profile views
    7
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    rstoeck Unfollow Follow

    Latest posts made by rstoeck

    • RE: NullPointerException when trying to create RTU or ASCII Slave

      Adding to this discussion: the listener.start() calls into RtuSlave.start(), which immediately calls SerialSlave.start():

      in SerialSlave:

      
          @Override
          public void start() throws ModbusInitException {
              try {
                  serialPort = SerialUtils.openSerialPort(serialParameters);
                  transport = new StreamTransport(serialPort.getInputStream(), serialPort.getOutputStream());
                  transport.start("Modbus4J SerialSlave");  // <--- This line throws the exception
              }
              catch (Exception e) {
                  throw new ModbusInitException(e);
              }
          }
      
      

      The line that throws the NullPointerException is the third line, the transport.start("Modbus4J SerialSlave").

      This calls into the StreamTransport class of seroUtils.jar, which we do not have the source code for.

      Would it be possible for me to get this source code so that I can debug this problem?

      posted in Modbus4J general discussion
      R
      rstoeck
    • NullPointerException when trying to create RTU or ASCII Slave

      We are trying to see if Modbus4J will work in our upcoming product. We are making a slave (server) application.

      I can get the TCP slave to work just fine, but when I try to create an RTU or ASCII slave, I get a NullPointerException immediately after calling ModbusSlaveSet start() method.

      Here's the code:

      
      public static void main(final String[] args)
          throws Exception
      {
          ModbusSlaveSet listener;
      
          boolean tcp = false;  // TCP works, but RTU and ASCII do not
      
          final ModbusFactory modbusFactory = new ModbusFactory();
          if (tcp)
          {
              listener = modbusFactory.createTcpSlave(false);
          }
          else
          {
              final SerialParameters serialParams = new SerialParameters();
              serialParams.setCommPortId("/dev/ttyUSB0");
              serialParams.setBaudRate(9600);
              serialParams.setDataBits(8);
              serialParams.setStopBits(1);
              serialParams.setParity(2);
              listener = modbusFactory.createRtuSlave(serialParams);
          }
      
          final BasicProcessImage processImage = new BasicProcessImage(1);
          processImage.setAllowInvalidAddress(true);
          processImage.setInvalidAddressValue((short)0);
      
          listener.addProcessImage(processImage);
      
          new Thread(new Runnable()
          {
              public void run()
              {
                  try
                  {
                      listener.start();
                  }
                  catch (ModbusInitException e)
                  {
                      e.printStackTrace();
                  }
              }
          }).start();
      }
      
      

      Here's the output:

      
      Stable Library
      =========================================
      Native lib Version = RXTX-2.1-7
      Java lib Version   = RXTX-2.1-7
      RXTX Warning:  Removing stale lock file. /var/lock/LCK..ttyUSB0
      com.serotonin.modbus4j.exception.ModbusInitException: java.lang.NullPointerException
      	at com.serotonin.modbus4j.serial.SerialSlave.start(SerialSlave.java:31)
      	at com.serotonin.modbus4j.serial.rtu.RtuSlave.start(RtuSlave.java:23)
      	at com.prozesstech.spectron.sandbox.Modbus4JTest$1.run(Modbus4JTest.java:103)
      	at java.lang.Thread.run(Thread.java:744)
      Caused by: java.lang.NullPointerException
      	at com.serotonin.messaging.StreamTransport.start(StreamTransport.java:32)
      	at com.serotonin.modbus4j.serial.SerialSlave.start(SerialSlave.java:28)
      	... 3 more
      
      

      Any idea what might be going on?

      Thanks,
      -Rob

      posted in Modbus4J general discussion
      R
      rstoeck
    • RE: NullPointerException when trying to create RTU or ASCII Slave

      We are trying to see if Modbus4J will work in our upcoming product. We are making a slave (server) application.

      I can get the TCP slave to work just fine, but when I try to create an RTU or ASCII slave, I get a NullPointerException immediately after calling ModbusSlaveSet start() method.

      Here's the code:

      
      public static void main(final String[] args)
          throws Exception
      {
          ModbusSlaveSet listener;
      
          boolean tcp = false;  // TCP works, but RTU and ASCII do not
      
          final ModbusFactory modbusFactory = new ModbusFactory();
          if (tcp)
          {
              listener = modbusFactory.createTcpSlave(false);
          }
          else
          {
              final SerialParameters serialParams = new SerialParameters();
              serialParams.setCommPortId("/dev/ttyUSB0");
              serialParams.setBaudRate(9600);
              serialParams.setDataBits(8);
              serialParams.setStopBits(1);
              serialParams.setParity(2);
              listener = modbusFactory.createRtuSlave(serialParams);
          }
      
          final BasicProcessImage processImage = new BasicProcessImage(1);
          processImage.setAllowInvalidAddress(true);
          processImage.setInvalidAddressValue((short)0);
      
          listener.addProcessImage(processImage);
      
          new Thread(new Runnable()
          {
              public void run()
              {
                  try
                  {
                      listener.start();
                  }
                  catch (ModbusInitException e)
                  {
                      e.printStackTrace();
                  }
              }
          }).start();
      }
      
      

      Here's the output:

      
      Stable Library
      =========================================
      Native lib Version = RXTX-2.1-7
      Java lib Version   = RXTX-2.1-7
      RXTX Warning:  Removing stale lock file. /var/lock/LCK..ttyUSB0
      com.serotonin.modbus4j.exception.ModbusInitException: java.lang.NullPointerException
      	at com.serotonin.modbus4j.serial.SerialSlave.start(SerialSlave.java:31)
      	at com.serotonin.modbus4j.serial.rtu.RtuSlave.start(RtuSlave.java:23)
      	at com.prozesstech.spectron.sandbox.Modbus4JTest$1.run(Modbus4JTest.java:103)
      	at java.lang.Thread.run(Thread.java:744)
      Caused by: java.lang.NullPointerException
      	at com.serotonin.messaging.StreamTransport.start(StreamTransport.java:32)
      	at com.serotonin.modbus4j.serial.SerialSlave.start(SerialSlave.java:28)
      	... 3 more
      
      

      Any idea what might be going on?

      Thanks,
      -Rob

      posted in Modbus4J general discussion
      R
      rstoeck
    • What does the "encapsulated" value do?

      In ModbusFactory createTcpSlave() and createUdpSlave() methods, they both take a boolean field named "encapsulated". What does this mean and when should it be used? Thanks.

      posted in Modbus4J general discussion
      R
      rstoeck
    • RE: What does the "encapsulated" value do?

      In ModbusFactory createTcpSlave() and createUdpSlave() methods, they both take a boolean field named "encapsulated". What does this mean and when should it be used? Thanks.

      posted in Modbus4J general discussion
      R
      rstoeck
    • Is the seroUtils.jar source code available?

      Is the source code for the seroUtils.jar available anywhere?

      posted in Modbus4J general discussion
      R
      rstoeck
    • RE: Is the seroUtils.jar source code available?

      Is the source code for the seroUtils.jar available anywhere?

      posted in Modbus4J general discussion
      R
      rstoeck