C# For 循环与 try catch 最后

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

我尝试每 5 秒运行一次 for 循环以从 COM 端口获取读数。成功时仅获取一次读数。即使出现错误也想运行循环。有时读数将在第四次迭代时可用。

下面是我正在使用的代码。我是开发新手。有人可以帮我吗?

using System;
using System.IO.Ports;


public class Program
{


    public static SerialPort? _serialPort;
    
    public static void Main(string[] args)
    {
        for (int i = 1; i<= 5; i++)

        Console.WriteLine(i);
        
             // Create a new SerialPort object
             _serialPort = new SerialPort();

            // Set the port name (COM1, COM2, etc.)
            _serialPort.PortName = "COM3";


            // Set baud rate
            _serialPort.BaudRate = 9600;

            // Set parity (none, odd, even, mark, space)
            _serialPort.Parity = Parity.None;

            // Set data bits
            _serialPort.DataBits = 8;

                // Set stop bits (one, two, or more)
            _serialPort.StopBits = StopBits.One;

            // Set handshake (none, requestToSend, requestToSendXOnXOff, xOnXOff)
                _serialPort.Handshake = Handshake.None;

            // Set read/write timeouts
            _serialPort.ReadTimeout = 500;
            _serialPort.WriteTimeout = 500;
            Console.WriteLine("hello");

            {
                
                try
                {

                    // Open the serial port
                    _serialPort.Open();


                    Console.WriteLine("Totals list");
                    // Write data to the serial port
                    _serialPort.WriteLine("T");

                    // Read data from the serial port
                    response = _serialPort.ReadLine();
                    Console.WriteLine("    Totals list: " + response);

                    Console.WriteLine("Data list");
                    // Write data to the serial port
                    _serialPort.WriteLine("D");

                    // Read data from the serial port
                    response = _serialPort.ReadLine();
                    Console.WriteLine("    Data list: " + response);

                    }
                    catch (Exception ex)
                    {
                    Console.WriteLine("Hello");
                    Console.WriteLine("Error: " + ex.Message);
                    
                    }
                    finally
                    {
                        // Close the serial port
                        if (_serialPort.IsOpen) 
                        {
                            _serialPort.Close();
                            Console.WriteLine("Serial port closed.");
                            }
                    }
                    Console.WriteLine("Press any key to exit...");
                    

        }
        Console.ReadKey();

    }
}
c# loops for-loop iteration
1个回答
0
投票

您忘记添加 for 循环括号{}。您的 for 循环仅运行

Console.WriteLine(i);

public class Program
{


    public static SerialPort? _serialPort;
    
    public static void Main(string[] args)
    {
        for (int i = 1; i<= 5; i++)
        {
            Console.WriteLine(i);
        
             // Create a new SerialPort object
             _serialPort = new SerialPort();

            // Set the port name (COM1, COM2, etc.)
            _serialPort.PortName = "COM3";


            // Set baud rate
            _serialPort.BaudRate = 9600;

            // Set parity (none, odd, even, mark, space)
            _serialPort.Parity = Parity.None;

            // Set data bits
            _serialPort.DataBits = 8;

                // Set stop bits (one, two, or more)
            _serialPort.StopBits = StopBits.One;

            // Set handshake (none, requestToSend, requestToSendXOnXOff, xOnXOff)
                _serialPort.Handshake = Handshake.None;

            // Set read/write timeouts
            _serialPort.ReadTimeout = 500;
            _serialPort.WriteTimeout = 500;
            Console.WriteLine("hello");

            {
                
                try
                {

                    // Open the serial port
                    _serialPort.Open();


                    Console.WriteLine("Totals list");
                    // Write data to the serial port
                    _serialPort.WriteLine("T");

                    // Read data from the serial port
                    response = _serialPort.ReadLine();
                    Console.WriteLine("    Totals list: " + response);

                    Console.WriteLine("Data list");
                    // Write data to the serial port
                    _serialPort.WriteLine("D");

                    // Read data from the serial port
                    response = _serialPort.ReadLine();
                    Console.WriteLine("    Data list: " + response);

                    }
                    catch (Exception ex)
                    {
                    Console.WriteLine("Hello");
                    Console.WriteLine("Error: " + ex.Message);
                    
                    }
                    finally
                    {
                        // Close the serial port
                        if (_serialPort.IsOpen) 
                        {
                            _serialPort.Close();
                            Console.WriteLine("Serial port closed.");
                            }
                    }
                    Console.WriteLine("Press any key to exit...");
                    

        }
        Console.ReadKey();
      }
    }
}

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