ModbusFactory modbus = new ModbusFactory();
TcpClient tcpClient = new TcpClient("127.0.0.1", 5000);
var master = modbus.CreateMaster(tcpClient);
var data = master.ReadHoldingRegisters(0, 0, 2);这是我的NModbus代码。在这种情况下,我希望只获得响应ReadHoldingRegisters()的结果数据。但是,我不仅想获得响应数据,还想获得请求字节数组。

上面的图片是ModbusSlave程序的通信日志。它显示带有时间戳的RX/TX。如何在我的C# NModbus代码中获得这样的RX/TX日志?
NModbus GitHub文档中没有可用的日志记录方法。
发布于 2022-08-22 07:05:25
public class GetLogMessage : ModbusLogger
{
public List<string> _message { get; set; } = new List<string>();
public GetLogMessage(LoggingLevel minimumLoggingLevel) : base(minimumLoggingLevel)
{
}
protected override void LogCore(LoggingLevel level, string message)
{
_message.Add(message);
if (level == LoggingLevel.Trace) _message.Add(message);
Trace.WriteLine($"[{level}]".PadRight(4) + message);
}
}我找到了如何得到一个追踪日志。首先,我们创建一个继承ModbusLogger的新类。然后创建LogCore和Constructure。
现在我们可以在_message中获取RX/TX数据。
GetLogMessage logger = new GetLogMessage(LoggingLevel.Trace);
ModbusFactory modbus = new ModbusFactory(null,true, logger);
TcpClient client = new TcpClient("127.0.0.1", 5000);
IModbusMaster master = modbus.CreateMaster(client);
ushort[] res = master.ReadHoldingRegisters(0,0,2);
var getlog = logger._message;
Console.WriteLine(getlog[0]);
Console.WriteLine(getlog[5]);结果

https://stackoverflow.com/questions/73411129
复制相似问题