Nmodbus4检查连接

问题描述

这是使用Modbus / tcp Nmodbus4的客户端的类。 在调用SendSingleInt方法的循环中,我关闭了服务器,我的应用程序崩溃,因为我无法检查连接是否存在。怎么处理?此外,客户端类位于类库中,并且不会对主程序引发异常。

public class ModbusTCPClient
{
    private string ipAddress;
    private int tcpPort;
    public TcpClient tcpClient;
    private ModbusIpMaster clpMaster;

    public ModbusTCPClient(string ip,int port)
    {
        ipAddress = ip;
        tcpPort = port; // 502
        tcpClient = new TcpClient();

        try
        {
            
            tcpClient.BeginConnect(ipAddress,tcpPort,null,null);
            // Create modbus master device on the tcp client
            clpMaster = ModbusIpMaster.CreateIp(tcpClient);

            //TryConnect();

        }
        catch (Exception err)
        {
            throw; //new Exception($"Não foi possível conectar o protocolo modbus no servidor {ip}.\r\n{err}");
        }

    }
    public void SendSingleInt(int intValue,byte deviceAddress = 1,byte valuePosition = 0)
    {

        if(clpMaster != null)
        {
            clpMaster.WriteSingleRegister(deviceAddress,valuePosition,Convert.ToUInt16(intValue));
        }

        
    }

解决方法

据我了解,您可以添加以下代码:

master.Transport.Retries = 1000;
master.Transport.ReadTimeout = 1000;
master.Transport.WriteTimeout = 1000;
serialPort.ReadTimeout                     
serialPort.WriteTimeout
,

在发布此问题之前,我尝试过使用try / catch,但这是行不通的; 后来我意识到我正在捕获InvalidOperationExceptions并从类中抛出一个新的Exception()! '¬¬