首页 新闻 搜索 专区 学院

C# nmodbus TCP无法从传输连接中读取数

0
[已解决问题] 解决于 2015-09-30 15:53

无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败

            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,学习中难免碰到这样的问题。

PKSEO_dudu的主页 PKSEO_dudu | 初学一级 | 园豆:9
提问于:2015-04-29 14:40
< >
分享
最佳答案
0

 telnet 192.168.16.201 3084 能连上吗?

奖励园豆:5
dudu | 高人七级 |园豆:37617 | 2015-04-29 15:33

可以连接上   ping也是正常的

dudu 还有可能是啥问题?

PKSEO_dudu | 园豆:9 (初学一级) | 2015-04-29 15:41

@PKSEO_dudu: 解决这类的TCP问题,最有效的方法是抓包

dudu | 园豆:37617 (高人七级) | 2015-04-29 15:51

@dudu: 用Fiddler 这类的工具 是吧! 

PKSEO_dudu | 园豆:9 (初学一级) | 2015-04-29 15:57

@PKSEO_dudu: Windows下推荐Wireshark,分享园子里的2篇博文:

Wireshark基本介绍和学习TCP三次握手

wireshark tcp 协议分析

dudu | 园豆:37617 (高人七级) | 2015-04-29 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册