基本信息
源码名称:android Modbus Rtu 通讯例子
源码大小:22.28M
文件格式:.rar
开发语言:Java
更新时间:2019-06-03
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
ModbusRtuConnect例子



package com.modbusconnect;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.ToggleButton;

import com.modbusconnect.rtuwrapper.connection.ModbusRtuConnection;
import com.modbusconnect.rtuwrapper.io.ModbusRtuTransaction;
import com.modbusconnect.rtuwrapper.messaging.ModbusException;
import com.modbusconnect.rtuwrapper.messaging.ReadCoilRequest;
import com.modbusconnect.rtuwrapper.messaging.ReadCoilResponse;
import com.modbusconnect.rtuwrapper.messaging.ReadRegisterRequest;
import com.modbusconnect.rtuwrapper.messaging.ReadRegisterResponse;
import com.modbusconnect.rtuwrapper.messaging.WriteCoilRequest;
import com.modbusconnect.rtuwrapper.messaging.WriteCoilResponse;
import com.modbusconnect.rtuwrapper.messaging.WriteRegisterRequest;
import com.modbusconnect.rtuwrapper.messaging.WriteRegisterResponse;

import static com.modbusconnect.rtuwrapper.ModbusConstants.VENDOR_ID;

public class MainActivity extends AppCompatActivity {

    TextView textView;
    EditText etRegNum;
    EditText etRegVal;
    EditText editText;
    ToggleButton toggleButton;

    Button buttonWriteRegister;
    Button buttonWriteCoil;
    Button buttonSetAllCoils;
    Button buttonReadRegs;
    Button buttonReadCoils;

    ModbusRtuConnection connection;
    ModbusRtuTransaction transaction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView) findViewById(R.id.textView);
        editText = (EditText) findViewById(R.id.editText);
        toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
        etRegNum = (EditText) findViewById(R.id.etRegNum);
        etRegVal = (EditText) findViewById(R.id.etRegVal);

        System.out.println(etRegNum.getText().toString());

        Button buttonConnect = (Button) findViewById(R.id.buttonConnect);
        buttonConnect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                connect();
            }
        });

        buttonWriteRegister = (Button) findViewById(R.id.buttonWriteRegister);
        buttonWriteRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int address = Integer.parseInt(etRegNum.getText().toString());
                int value = Integer.parseInt(etRegVal.getText().toString());
                WriteRegisterRequest request = new WriteRegisterRequest(address, value);
                WriteRegisterResponse response;
                try {
                    transaction.execute(request);
                    response = (WriteRegisterResponse) transaction.getResponse();
                    log("reg "   address   " = "   response.getValue());
                } catch (ModbusException e) {
                    e.printStackTrace();
                }
            }
        });
        buttonWriteCoil = (Button) findViewById(R.id.buttonWriteCoil);
        buttonWriteCoil.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int address = Integer.parseInt(editText.getText().toString());
                boolean value = toggleButton.isChecked();
                WriteCoilRequest request = new WriteCoilRequest(address, value);
                WriteCoilResponse response;
                try {
                    transaction.execute(request);
                    response = (WriteCoilResponse) transaction.getResponse();
                    log("coil "   address   " = "   response.getValue());
                } catch (ModbusException e) {
                    e.printStackTrace();
                }
            }
        });
        buttonSetAllCoils = (Button) findViewById(R.id.buttonWriteAllCoils);
        buttonSetAllCoils.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setAllCoilsOnOff();
            }
        });
        buttonReadRegs = (Button) findViewById(R.id.buttonReadRegs);
        buttonReadRegs.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ReadRegisterRequest request = new ReadRegisterRequest();
                ReadRegisterResponse response;
                for (int i = 0; i < 7; i  ) {
                    request.setData(i, 0);
                    try {
                        transaction.execute(request);
                    } catch (ModbusException e) {
                        e.printStackTrace();
                    }
                    try {
                        response = (ReadRegisterResponse) transaction.getResponse();
                        log("reg "   i   " = "   response.getValue());
                    } catch (ModbusException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        buttonReadCoils = (Button) findViewById(R.id.buttonReadCoils);
        buttonReadCoils.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ReadCoilRequest request = new ReadCoilRequest();

                ReadCoilResponse response;
                for (int i = 1000; i < 1007; i  ) {
                    request.setData(i, false);
                    try {
                        transaction.execute(request);
                    } catch (ModbusException e) {
                        e.printStackTrace();
                    }
                    try {
                        response = (ReadCoilResponse) transaction.getResponse();
                        log("coil "   i   " = "   response.getValue());
                    } catch (ModbusException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        enableUi(false);
    }

    @Override
    protected void onDestroy() {
        if (connection != null) {
            connection.disconnect();
        }
        super.onDestroy();
    }

    private void enableUi(boolean enable) {
        buttonWriteRegister.setEnabled(enable);
        buttonWriteCoil.setEnabled(enable);
        buttonSetAllCoils.setEnabled(enable);
        buttonReadRegs.setEnabled(enable);
        buttonReadCoils.setEnabled(enable);
    }

    private void log(String text) {
        textView.setText(textView.getText().toString()   " // "   text);
    }

    private void connect() {
        connection = new ModbusRtuConnection(getApplicationContext(), VENDOR_ID, false);
        connection.connect(new ModbusRtuConnection.OnConnectedToPlcListener() {
            @Override
            public void onConnected() {
                if (connection.isConnected()) {
                    transaction = new ModbusRtuTransaction(connection);
                }
                log("Connected - "   connection.isConnected());
                enableUi(true);
            }
        });
    }

    //setCoilsOnOff vals
    int current = 1000;
    int startAddress = 1000;
    int endAddress = 1006;
    boolean isUp = true;

    private void setAllCoilsOnOff() {
        if (connection == null || !connection.isConnected()) return;
        WriteCoilRequest request = new WriteCoilRequest();

        if (current == endAddress) {
            isUp = false;
        } else if (current == startAddress) {
            isUp = true;
        }

        try {
            if (isUp) {
                while (current < endAddress) {
                    request.setData(current, true);
                    transaction.execute(request);
                      current;
                }
                if (current == endAddress) {
                    request.setData(current, true);
                    transaction.execute(request);
                }
            } else {
                while (current > startAddress) {
                    request.setData(current, false);
                    transaction.execute(request);
                    current--;
                }
                if (current == startAddress) {
                    request.setData(current, false);
                    transaction.execute(request);
                }
            }
        } catch (ModbusException e) {
            e.printStackTrace();
        }
    }

}