Skip to content

请问如何解析16功能码的数据 WriteRegistersRequest 似乎应该暴露 getData 方法 #73

@8502596

Description

@8502596

image

            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);

image

WriteRegistersRequest 写入保持寄存器 里面有保持寄存器的数据

既然 其他的如 ReadHoldingRegistersResponse ReadInputRegistersResponse 等 返回类中 带有 getData()
而 对应 ReadInputRegistersRequest ReadHoldingRegistersRequest 没有数据 所有没有 getData()

相反
WriteRegistersResponse 返回 本身没有保持寄存器的数据 所有没有 getData()

WriteRegistersRequest 本身有保持寄存器的数据 却没有暴露 getDate() 方法 有点不太合理

应用如下 很多时候 我们需要创建一个 TCP server 应用modbus TCP 协议 即可 被动接收数据 如 16功能码 客户端只需不断的

给服务器发送 写入保持寄存器的指令 服务器即可获取数据 甚至服务器不需要回复,但我还没有想好如何构建modbusRespone 使用

modbus4j 而不使用字节拼接,即完成简单的modbus server 关于 16功能码的仿真,有任何人有建议吗?

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions