Я пытаюсь открыть каждый порт и отправить <mccon>
серийно, для чего мой микроконтроллер ответит <connected>\n
, после чего код C# должен выйти из каждого цикла.Обнаружение порта Arduino в C#
У меня проблема на линии serialPort.PortName = str;
. После двух итераций это не продолжается.
Я тоже пытался сделать это вручную. Я сделал выпадающий список и выбрал порты один за другим. После второго порта он не позволяет изменять последовательный порт. Но в случае, если я выбираю в течение двух попыток, он работает нормально.
Я знаю ООП на C++. Но я новичок в C#. Я не уверен, почему цикл выходит из строя.
public Form1()
{
InitializeComponent();
send_button.Enabled = false;
//Availabe COM ports
SerialPort tmp;
foreach(string str in SerialPort.GetPortNames())
{
tmp = new SerialPort(str);
if (tmp.IsOpen == false)
{
serialPort.PortName = str;
try
{
//Open serial port
serialPort.Open();
serialPort.BaudRate = 9600;
serialPort.WriteTimeout = 10;
serialPort.ReadTimeout = 10;
serialPort.Write("<mccon>");
readtxt.Text = serialPort.ReadTo("\n");
if (readtxt.Text == "<connected>")
{
send_button.Enabled = true;
port_combobox.Enabled = false;
break;
}
else
{
serialPort.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
то, что 'serialPort' определяется как? Вы имеете в виду 'tmp'? Является ли это переменной-членом? –
@DavidHope 'serialPort' определен в Form1.Designer.cs как' SerialPort'. Возможно, я не должен использовать 'tmp' вместо использования' serialPort'. Оба типа «SerialPort» –