在我的 Modbus Console.WriteLine 中查找错误

问题描述 投票:0回答:2

我有这个 C# 代码,它在

Console.WriteLine($"Register {startAddress + i}={registers[i]}");
行上产生错误。我尝试过双
))
,并将其放在声明中的任何地方。我根本看不出错误在哪里。我可能错过了一些简单的东西,但我只是没有看到它。

    namespace NModbus.TestDriver

{
    using System;
    using System.Net.Sockets;
    using Modbus.Device;
    using NModbus;


    class Program
    {
        static void Main(string[] args)
        {
                         using (TcpClient client = new TcpClient("192.168.111.169", 502))
                {
                    client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);

                    var master = ModbusIpMaster.CreateIp(client);
                    // read five input values
                  byte slaveId = 1;
                ushort startAddress = 1;
                ushort numRegisters = 5;

                // read five registers      
                ushort[] registers = master.ReadHoldingRegisters(slaveId, startAddress, numRegisters);

                for (int i = 0; i < numRegisters; i++)
                {
                    Console.WriteLine($"Register {startAddress + i}={registers[i]}");
                }
            }
        }
    }
}
modbus modbus-tcp minimalmodbus
2个回答
0
投票

在执行

Console.WriteLine
之前尝试定义字符串——所以for循环就像这样

             for (int i = 0; i < numRegisters; i++)
                {
                    string whateverName = $"Register {startAddress + i}={registers[i]}"
                    Console.WriteLine(whateverName);
                }

0
投票
namespace NModbus.TestDriver

{
    using System;
    using System.Net.Sockets;
    using NModbus;
    using Modbus.Device;


    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (TcpClient client = new TcpClient("192.168.111.169", 502))
                {
                    client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);

                    var master = ModbusIpMaster.CreateIp(client);
                    // read five input values
                    byte slaveId = 1;
                    ushort startAddress = 1;
                    ushort numRegisters = 5;

                    // read five registers      
                    ushort[] registers = master.ReadHoldingRegisters(slaveId, startAddress, numRegisters);

                    for (int i = 0; i < numRegisters; i++)
                    {
                        Console.WriteLine($"Register {startAddress + i}={registers[i]}");
                    }
                }
            }
            catch (Exception ex)
            {

                Console.WriteLine (ex.Message);
            }

        }
    }
}

你可以尝试这样对你的前任留言吗?

© www.soinside.com 2019 - 2024. All rights reserved.