至此modbus_TCPmast管理類基本已經寫完並做了一個測試的APP大家可以試一試稍後我把APP的源代碼上傳上去
上一節使用jamod庫做了一個簡單的讀取,在完善代碼的過程中其中寫入多寄存器的時候碰到了點問題我把代碼貼出來大家注意一下
在寫入保持寄存器時需要用到這個請求的方法
public WriteSingleRegisterRequest(int ref, Register registers)
但是Register是個抽象類 new不出來 所以各種搜索,弄不好,突然發現jamod裏面竟然有demo瞬間明白了,真正的類在這裏呢
public class SimpleRegister extends SynchronizedAbstractRegister implements Register
jamod demo存放的地方大家有時間看一下
/**
* @函數名稱: write_F06_4x(寫入 功能碼6 4x區)
* @功能: 功能碼06 寫入4x分區(保持寄存器) 單個寄存器數據 此部分的寄存器可讀可寫 03功能碼讀取 06寫入 16寫入多個
* @輸入參數: 寄存器起始地址 需要設置的值
* @輸出類型:無
* @作者: 騰飛
* function code 06 write single register
*/
public void write_F06_4x(final int register_addr,final int value){
new Thread(new Runnable() {
@Override
public void run() {
try{
connect_device();
//準備請求
SimpleRegister new_out = new SimpleRegister(value);
WriteSingleRegisterRequest req=new WriteSingleRegisterRequest(register_addr,new_out); //寫入單個寄存器
req.setUnitID(unitID);//
//準備處理
ModbusTCPTransaction trans = new ModbusTCPTransaction(mconnection);//開始處理
trans.setRequest(req);//設置地址
trans.execute();
WriteSingleRegisterResponse res=(WriteSingleRegisterResponse) trans.getResponse();//獲取獲取寫入線圈請求響應
modbus_callback.mcallback(6,false,"function code 06 write single register");
}catch (Exception e){
modbus_callback.mcallback(6,false,e.getMessage());
}
}
}).start();
}