-
Notifications
You must be signed in to change notification settings - Fork 391
Open
Description
ByteQueue b = new ByteQueue("02040000001B01100000000A140101000000000000010100000000000000000000");
IncomingMessage message = new XaMessageParser(false).parseMessage(b);
XaMessageRequest request = (XaMessageRequest) message;
WriteRegistersRequest writeRegistersRequest= (WriteRegistersRequest) request.getModbusRequest();
StringBuilder sb = new StringBuilder();
for (byte bt : Arrays.copyOfRange(writeRegistersRequest.getData(),0,writeRegistersRequest.getData().length)) {
sb.append(String.format("%02X ", bt));
}
System.out.println(sb);WriteRegistersRequest 写入保持寄存器 里面有保持寄存器的数据
既然 其他的如 ReadHoldingRegistersResponse ReadInputRegistersResponse 等 返回类中 带有 getData()
而 对应 ReadInputRegistersRequest ReadHoldingRegistersRequest 没有数据 所有没有 getData()
相反
WriteRegistersResponse 返回 本身没有保持寄存器的数据 所有没有 getData()
但
WriteRegistersRequest 本身有保持寄存器的数据 却没有暴露 getDate() 方法 有点不太合理
应用如下 很多时候 我们需要创建一个 TCP server 应用modbus TCP 协议 即可 被动接收数据 如 16功能码 客户端只需不断的
给服务器发送 写入保持寄存器的指令 服务器即可获取数据 甚至服务器不需要回复,但我还没有想好如何构建modbusRespone 使用
modbus4j 而不使用字节拼接,即完成简单的modbus server 关于 16功能码的仿真,有任何人有建议吗?
Metadata
Metadata
Assignees
Labels
No labels


