无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败
string ipAddress = "192.168.16.201"; int tcpPort = 3084; TcpClient tcpClient = new TcpClient(); IAsyncResult asyncresult = tcpClient.BeginConnect(ipAddress, tcpPort, null, null); asyncresult.AsyncWaitHandle.WaitOne(1000); if (!asyncresult.IsCompleted) { tcpClient.Close(); Console.WriteLine("Cannot to Connect Server"); return; } ModbusIpMaster master = ModbusIpMaster.CreateIp(tcpClient); // byte slaveID = 1; //开始地址为0 ushort startAddress = 0; ushort numOfPoints = 22; master.Transport.Retries = 0; master.Transport.ReadTimeout = 300; try { ushort[] register = master.ReadHoldingRegisters(1, startAddress, numOfPoints); float temperatureValue = Convert.ToSingle(register[14]) / 10; float humidityValue = Convert.ToSingle(register[15]) / 10; Console.WriteLine("温度:" + temperatureValue + "湿度:" + humidityValue); } catch (Exception ex) { Console.WriteLine(ex.Message); }
InnerException = {"由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。"}
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
在 Modbus.IO.TcpClientAdapter.Read(Byte[] buffer, Int32 offset, Int32 size)
在 Modbus.IO.ModbusIpTransport.ReadRequestResponse(IStreamResource streamResource)
用串口助手发送命令:01 04 00 00 00 01 31 CA
可以正常接收数据:01 04 02 00 F2 38 B5
由于本人不是很数据nmodbus,学习中难免碰到这样的问题。
telnet 192.168.16.201 3084 能连上吗?
可以连接上 ping也是正常的
dudu 还有可能是啥问题?
@PKSEO_dudu: 解决这类的TCP问题,最有效的方法是抓包
@dudu: 用Fiddler 这类的工具 是吧!