我尝试每 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();
}
}
您忘记添加 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();
}
}
}