Java 编译modbus rs232时出错

Java 编译modbus rs232时出错,java,serial-port,modbus,plc,jssc,Java,Serial Port,Modbus,Plc,Jssc,我是java新手。。。我正在读modbus。PLC为从机,配置良好。我的java文件无法读取modbus值。下面给出了代码。错误出现在master.init;方法请帮我解决这个问题 package com.mod4j; import java.io.File; import gnu.io.SerialPort; import com.serotonin.io.serial.SerialParameters; import com.serotonin.*; import com.serotonin

我是java新手。。。我正在读modbus。PLC为从机,配置良好。我的java文件无法读取modbus值。下面给出了代码。错误出现在master.init;方法请帮我解决这个问题

package com.mod4j;
import java.io.File;
import gnu.io.SerialPort;
import com.serotonin.io.serial.SerialParameters;
import com.serotonin.*;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.code.DataType;
import com.serotonin.modbus4j.code.RegisterRange;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.locator.BaseLocator;
import com.serotonin.modbus4j.locator.NumericLocator;
import com.serotonin.modbus4j.msg.ReadCoilsRequest;
import com.serotonin.modbus4j.msg.ReadCoilsResponse;
import com.serotonin.modbus4j.msg.ReadDiscreteInputsRequest;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse;
import com.serotonin.modbus4j.msg.ReadInputRegistersRequest;
import com.serotonin.modbus4j.msg.ReadInputRegistersResponse;
import com.serotonin.modbus4j.msg.WriteCoilRequest;
import com.serotonin.modbus4j.msg.WriteCoilResponse;
import com.serotonin.modbus4j.msg.WriteRegistersRequest;
import com.serotonin.modbus4j.msg.WriteRegistersResponse;
import gnu.io.*;

public class Modbus4JTest
{

    public static void main(String[] args) throws Exception
    {  

   try 
   {
   SerialParameters params = new SerialParameters();
   params.setCommPortId("COM1");
   params.setBaudRate(9600);
   params.setDataBits(8);
   params.setStopBits(1);
   params.setParity(0);

   ModbusFactory modbusFactory = new ModbusFactory();
   ModbusMaster master = modbusFactory.createRtuMaster(params);
   master.setTimeout(100);
   master.setRetries(3);

   byte [] RIR,RHR,RDI,RCR;
   int slaveId=1;
   int startOffset=0;
   int numberOfRegisters=10;
   int numberOfBits=10;

   try
   {
        master.init();
        while (true) 
        {
                ReadInputRegistersRequest reqRIR = new ReadInputRegistersRequest(slaveId, startOffset, numberOfRegisters);
                System.out.println("ReadInputRegistersRequest reqRIR =" +reqRIR);
                ReadInputRegistersResponse resRIR = (ReadInputRegistersResponse) master.send(reqRIR);
                RIR = resRIR.getData();
                System.out.println("InputRegisters :" + RIR);

                ReadHoldingRegistersRequest reqRHR = new ReadHoldingRegistersRequest(slaveId, startOffset, numberOfRegisters);
                ReadHoldingRegistersResponse resRHR = (ReadHoldingRegistersResponse) master.send(reqRHR);
                RHR=resRHR.getData();
                System.out.println("HoldingRegister :" + RHR);

                ReadDiscreteInputsRequest reqRDI= new ReadDiscreteInputsRequest(slaveId, startOffset, numberOfBits);
                ReadCoilsResponse resRDI = (ReadCoilsResponse) master.send(reqRDI);
                RDI=resRDI.getData();
                System.out.println("DiscreteInput :" + RDI);

                ReadCoilsRequest reqRCR = new ReadCoilsRequest(slaveId, startOffset, numberOfBits);
                ReadCoilsResponse resRCR = (ReadCoilsResponse) master.send(reqRCR);
                RCR=resRCR.getData();   
                System.out.println("CoilResponce :" + RCR);

                short[] sdata = null;
                WriteRegistersRequest reqWR = new WriteRegistersRequest(slaveId, startOffset, sdata);
                WriteRegistersResponse resWR = (WriteRegistersResponse) master.send(reqWR);

                int writeOffset = 0;
                boolean writeValue = true;
                WriteCoilRequest reqWC = new WriteCoilRequest(slaveId, writeOffset, writeValue);
                WriteCoilResponse resWC = (WriteCoilResponse) master.send(reqWC);

                Thread.sleep(1000);
             }//end while
        }//end try
       catch (Exception e) 
       {

            e.printStackTrace();
   }//end catch

  finally 
   {
       master.destroy();
   }//end finally
 }//end try
catch (Exception e)
{
    e.printStackTrace();
}//end catch

}// end main
    }//end class Modbus4JTest
这是我正在运行的java文件

下面是我编译后得到的错误。。 请建议出了什么问题,请在。。。 有任何一步一步的教程或任何演示视频请给我链接在 阿亚兹。nadaf@gmail.com

Exception in thread "main" java.lang.NoClassDefFoundError:      
jssc/SerialPortException
at com.serotonin.io.serial.SerialUtils.openSerialPort(SerialUtils.java:94)
at com.serotonin.modbus4j.serial.SerialMaster.init(SerialMaster.java:58)
at com.serotonin.modbus4j.serial.rtu.RtuMaster.init(RtuMaster.java:45)
at com.mod4j.Modbus4JTest.main(Modbus4JTest.java:58)
Caused by: java.lang.ClassNotFoundException: jssc.SerialPortException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more
看起来您正在使用。它基于用于串行通信的Java Simple Serial Connector,因此请确保在编译时找到jSSC。您可能需要单独下载它,因为您将获得一个与jSSC类相关的ClassNotFoundException

我不知道任何教程,但我可能会建议你看看。这里有一个简单的例子