Android,通过modbus协议,读写plc寄存器值,急!!

「已注销」 2017-02-14 04:03:42
哪位给个例子,或者API,帮帮忙,折磨一天了。谢谢各位了。
...全文
707 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
private void write(final int data) {
        new Thread(new Runnable() {
                @Override
                public void run() {
                if (master == null) {
                    if (!initModbus()) {
                        return;
                    }
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            statetextView.setText("指令状态:失败");
                        }
                    });
                }
                WriteRegisterRequest writeRegisterRequest = null;
                try {
                    SharedPreferences sharedPreferences = getActivity().getSharedPreferences("System", 0);
                    int slaveId = sharedPreferences.getInt("Slave", 2);
                    int address = sharedPreferences.getInt("Register", 1);
                    writeRegisterRequest = new WriteRegisterRequest(slaveId, address, data);
                    WriteRegisterResponse writeRegisterResponse = (WriteRegisterResponse) master.send(writeRegisterRequest);
                    if (writeRegisterResponse.isException()) {
                        getActivity().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                statetextView.setText("指令状态:失败");
                            }
                        });
                        Log.v("exception", writeRegisterResponse.getExceptionMessage());
                    } else {
                        getActivity().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                statetextView.setText("指令状态:成功");
                            }
                        });
                        Log.v("write", "succeed");
                    }

                } catch (ModbusTransportException e) {
                    e.printStackTrace();
                } finally {
                    master.destroy();
                }
            }

        }).start();

    }


    private boolean initModbus() {
        ModbusFactory factory = new ModbusFactory();
        IpParameters params = new IpParameters();
        //设置IP地址以及端口号
        SharedPreferences sharedPreferences = getActivity().getSharedPreferences("System", 0);
        String IP = sharedPreferences.getString("IP", "192.168.1.21");
        if (IP == null) {
            Toast.makeText(getActivity(), "未设置IP,请先设置IP", Toast.LENGTH_LONG).show();
            return false;
        }
        params.setHost(IP);
        params.setPort(502);
//        params.setEncapsulated(false);
        //创建ModbusMaster以及设置超时时间
        master = factory.createTcpMaster(params, true);
        master.setTimeout(2000);
        master.setRetries(1);

        try {
            master.init();
            return true;
        } catch (Exception e) {
            Log.e("modbus", " exception : " + e.toString());
            return false;
        }
    }
https://download.csdn.net/download/qq_33813665/10024698
gexuehai1991 2018-07-10
  • 打赏
  • 举报
回复
https://blog.csdn.net/MickeyTaKigin/article/details/77803736

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧