Modbus使用jLibModbus和jSerialComm库截断了消息

问题描述

我具有以下配置:

Modbus poll应用程序在通过USB串行适配器连接到Linux嵌入式设备的Windows计算机上运行:

slaveId=10,serialBaudrate=38400,serialDataBits=8,serialParity=EVEN,serialStopBits=1,serialPortFactory=JSerialComm,serialPortId=/dev/ttymxc1,

使用Modbus轮询(模拟Modbus主站)时,我尝试使用“写入多个寄存器”功能每10毫秒写入123个寄存器。 在Linux设备上,我正在运行一个java类,该类使用jLibModbus v1.2.9.7库(它将是modbus从站)和jSerialComm v2.6.2,可以正确读取前10-20条消息,然后我在日志中不断看到:

INFO: Frame recv: 0000
WARNING: null

我已如下编辑SerialPortJSerialComm类的'open'方法

public void open() throws SerialPortException {
    SerialParameters sp = getSerialParameters();
    port = com.fazecast.jSerialComm.SerialPort.getCommPort(sp.getDevice());
    port.openPort();
    
    port.setComPortParameters(sp.getBaudrate(),sp.getDataBits(),sp.getStopBits(),sp.getParity().getValue(),true);
    port.setFlowControl(com.fazecast.jSerialComm.SerialPort.FLOW_CONTROL_disABLED);
    port.setComPortTimeouts(com.fazecast.jSerialComm.SerialPort.TIMEOUT_READ_SEMI_BLOCKING
        | com.fazecast.jSerialComm.SerialPort.TIMEOUT_WRITE_BLOCKING,0);

    in = port.getInputStream();
    out = port.getoutputStream();
}

我也尝试过使用不同的超时配置,但没有任何运气。
有什么可能是错误的吗?
谢谢,谢谢。
安德里亚

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)