I found out the code stops at
public int Read(byte[] buffer, int offset, int size)
{
return _tcpClient.GetStream().Read(buffer, offset, size);
}
in TcpClientAdapter.cs class. This was called by
numBytesRead += streamResource.Read(mbapHeader,
numBytesRead, 6 - numBytesRead);
by ReadRequestResponse(IStreamResource streamResource) in
ModbusIpTransport.cs class. This was called by
return CreateMessageAndInitializeTransactionId<T>
(ReadRequestResponse(StreamResource));
by ReadResponse<T>() in ModbusIpTransport.cs. This was called by
response = ReadResponse<T>();
by UnicastMessage<T>(IModbusMessage message) where T : IModbusMessage,
new() in ModbusTransport.cs class. This was called by
ReadHoldingInputRegistersResponse response =
Transport.UnicastMessage<ReadHoldingInputRegistersResponse>(request);
by ReadRegisters(byte functionCode, byte slaveAddress, ushort
startAddress, ushort numberOfPoints) in ModbusMaster.cs.
tcpClient.GetStream() .DataAvailable == false and tcpClient.GetStream
() .ReadTimeout == -1.
Call stack is like this.
Modbus.dll!Modbus.IO.TcpClientAdapter.Read(byte[] buffer = {byte[6]},
int offset = 0, int size = 6) Line 47 C#
Modbus.dll!Modbus.IO.ModbusIpTransport.ReadRequestResponse
(Modbus.IO.IStreamResource streamResource =
{Modbus.IO.TcpClientAdapter}) Line 37 + 0x1e bytes C#
Modbus.dll!
Modbus.IO.ModbusIpTransport.ReadResponse<Modbus.Message.ReadHoldingInputRegistersResponse>
() Line 120 + 0x19 bytes C#
Modbus.dll!
Modbus.IO.ModbusTransport.UnicastMessage<Modbus.Message.ReadHoldingInputRegistersResponse>
(Modbus.Message.IModbusMessage message = {Read 10 input registers
starting at address 1.}) Line 136 + 0x4a bytes C#
Modbus.dll!Modbus.Device.ModbusMaster.ReadRegisters(byte
functionCode = 4, byte slaveAddress = 0, ushort startAddress = 1,
ushort numberOfPoints = 10) Line 190 + 0x29 bytes C#
Modbus.dll!Modbus.Device.ModbusMaster.ReadInputRegisters(byte
slaveAddress = 0, ushort startAddress = 1, ushort numberOfPoints = 10)
Line 75 + 0x1c bytes C#
Modbus.dll!Modbus.Device.ModbusIpMaster.ReadInputRegisters(ushort
startAddress = 1, ushort numberOfPoints = 10) Line 111 + 0x14 bytes C#