Search in sources :

Example 1 with SerialConnection

use of net.wimpi.modbus.net.SerialConnection in project openhab1-addons by openhab.

the class ModbusSerialSlave method getConnection.

@Override
protected ModbusSlaveConnection getConnection(ModbusSlaveEndpoint endpoint) {
    ModbusSlaveConnection connection = super.getConnection(endpoint);
    if (connection == null) {
        return null;
    }
    if (!(connection instanceof SerialConnection)) {
        throw new IllegalStateException("Should not happen: wrong connection type for slave " + name);
    }
    SerialConnection serialConnection = (SerialConnection) connection;
    ((ModbusSerialTransaction) transaction).setSerialConnection(serialConnection);
    return connection;
}
Also used : SerialConnection(net.wimpi.modbus.net.SerialConnection) ModbusSerialTransaction(net.wimpi.modbus.io.ModbusSerialTransaction) ModbusSlaveConnection(net.wimpi.modbus.net.ModbusSlaveConnection)

Example 2 with SerialConnection

use of net.wimpi.modbus.net.SerialConnection in project openhab1-addons by openhab.

the class SerialAITest method main.

public static void main(String[] args) {
    SerialConnection con = null;
    ModbusSerialTransaction trans = null;
    ReadInputRegistersRequest req = null;
    ReadInputRegistersResponse res = null;
    String portname = null;
    int unitid = 0;
    int ref = 0;
    int count = 0;
    int repeat = 1;
    try {
        // 1. Setup the parameters
        if (args.length < 4) {
            printUsage();
            System.exit(1);
        } else {
            try {
                portname = args[0];
                unitid = Integer.parseInt(args[1]);
                ref = Integer.parseInt(args[2]);
                count = Integer.parseInt(args[3]);
                if (args.length == 5) {
                    repeat = Integer.parseInt(args[4]);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
                printUsage();
                System.exit(1);
            }
        }
        // 2. Set slave identifier for master response parsing
        ModbusCoupler.getReference().setUnitID(unitid);
        System.out.println("net.wimpi.modbus.debug set to: " + System.getProperty("net.wimpi.modbus.debug"));
        // 3. Setup serial parameters
        SerialParameters params = new SerialParameters();
        params.setPortName(portname);
        params.setBaudRate(115200);
        params.setDatabits(8);
        params.setParity("None");
        params.setStopbits(1);
        params.setEncoding("ascii");
        params.setEcho(false);
        params.setReceiveTimeoutMillis(500);
        if (Modbus.debug) {
            System.out.println("Encoding [" + params.getEncoding() + "]");
        }
        // 4. Open the connection
        con = new SerialConnection(params);
        con.open();
        // 5. Prepare a request
        req = new ReadInputRegistersRequest(ref, count);
        req.setUnitID(unitid);
        req.setHeadless();
        if (Modbus.debug) {
            System.out.println("Request: " + req.getHexMessage());
        }
        // 6. Prepare the transaction
        trans = new ModbusSerialTransaction(con);
        trans.setRequest(req);
        // 7. Execute the transaction repeat times
        int k = 0;
        do {
            trans.execute();
            res = (ReadInputRegistersResponse) trans.getResponse();
            if (Modbus.debug) {
                System.out.println("Response: " + res.getHexMessage());
            }
            for (int n = 0; n < res.getWordCount(); n++) {
                System.out.println("Word " + n + "=" + res.getRegisterValue(n));
            }
            k++;
        } while (k < repeat);
        // 8. Close the connection
        con.close();
    } catch (Exception ex) {
        ex.printStackTrace();
        // Close the connection
        con.close();
    }
}
Also used : ReadInputRegistersRequest(net.wimpi.modbus.msg.ReadInputRegistersRequest) SerialConnection(net.wimpi.modbus.net.SerialConnection) ModbusSerialTransaction(net.wimpi.modbus.io.ModbusSerialTransaction) ReadInputRegistersResponse(net.wimpi.modbus.msg.ReadInputRegistersResponse) SerialParameters(net.wimpi.modbus.util.SerialParameters)

Example 3 with SerialConnection

use of net.wimpi.modbus.net.SerialConnection in project openhab1-addons by openhab.

the class SerialDITest method main.

public static void main(String[] args) {
    SerialConnection con = null;
    ModbusSerialTransaction trans = null;
    ReadInputDiscretesRequest req = null;
    ReadInputDiscretesResponse res = null;
    String portname = null;
    int unitid = 0;
    int ref = 0;
    int count = 0;
    int repeat = 1;
    try {
        // 1. Setup the parameters
        if (args.length < 4) {
            printUsage();
            System.exit(1);
        } else {
            try {
                portname = args[0];
                unitid = Integer.parseInt(args[1]);
                ref = Integer.parseInt(args[2]);
                count = Integer.parseInt(args[3]);
                if (args.length == 5) {
                    repeat = Integer.parseInt(args[4]);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
                printUsage();
                System.exit(1);
            }
        }
        // 2. Set slave identifier for master response parsing
        ModbusCoupler.getReference().setUnitID(unitid);
        System.out.println("net.wimpi.modbus.debug set to: " + System.getProperty("net.wimpi.modbus.debug"));
        // 3. Setup serial parameters
        SerialParameters params = new SerialParameters();
        params.setPortName(portname);
        params.setBaudRate(115200);
        params.setDatabits(7);
        params.setParity("None");
        params.setStopbits(2);
        // params.setEcho(true);
        if (Modbus.debug) {
            System.out.println("Encoding [" + params.getEncoding() + "]");
        }
        // 4. Open the connection
        con = new SerialConnection(params);
        con.open();
        // 5. Prepare a request
        req = new ReadInputDiscretesRequest(ref, count);
        req.setUnitID(unitid);
        req.setHeadless();
        if (Modbus.debug) {
            System.out.println("Request: " + req.getHexMessage());
        }
        // 6. Prepare the transaction
        trans = new ModbusSerialTransaction(con);
        trans.setRequest(req);
        // 7. Execute the transaction repeat times
        int k = 0;
        do {
            trans.execute();
            res = (ReadInputDiscretesResponse) trans.getResponse();
            if (Modbus.debug) {
                System.out.println("Response: " + res.getHexMessage());
            }
            BitVector inputs = res.getDiscretes();
            byte[] ret = new byte[inputs.size()];
            for (int i = 0; i < count; i++) {
                System.out.println("Bit " + i + " = " + inputs.getBit(i));
            }
            k++;
        } while (k < repeat);
        // 8. Close the connection
        con.close();
    } catch (Exception ex) {
        ex.printStackTrace();
        // Close the connection
        con.close();
    }
}
Also used : ReadInputDiscretesResponse(net.wimpi.modbus.msg.ReadInputDiscretesResponse) BitVector(net.wimpi.modbus.util.BitVector) ReadInputDiscretesRequest(net.wimpi.modbus.msg.ReadInputDiscretesRequest) SerialConnection(net.wimpi.modbus.net.SerialConnection) ModbusSerialTransaction(net.wimpi.modbus.io.ModbusSerialTransaction) SerialParameters(net.wimpi.modbus.util.SerialParameters)

Aggregations

ModbusSerialTransaction (net.wimpi.modbus.io.ModbusSerialTransaction)3 SerialConnection (net.wimpi.modbus.net.SerialConnection)3 SerialParameters (net.wimpi.modbus.util.SerialParameters)2 ReadInputDiscretesRequest (net.wimpi.modbus.msg.ReadInputDiscretesRequest)1 ReadInputDiscretesResponse (net.wimpi.modbus.msg.ReadInputDiscretesResponse)1 ReadInputRegistersRequest (net.wimpi.modbus.msg.ReadInputRegistersRequest)1 ReadInputRegistersResponse (net.wimpi.modbus.msg.ReadInputRegistersResponse)1 ModbusSlaveConnection (net.wimpi.modbus.net.ModbusSlaveConnection)1 BitVector (net.wimpi.modbus.util.BitVector)1