각 포트를 열어서 <mccon>
을 연속적으로 보내려고합니다.이 경우 내 마이크로 컨트롤러는 <connected>\n
에 응답하고 그 후에 C# 코드는 각 루프마다 종료해야합니다.C#의 Arduino 포트 감지
serialPort.PortName = str;
줄에 문제가 있습니다. 두 번 반복 한 후에는 더 이상 계속되지 않습니다.
수동으로 시도해 보았습니다. 나는 드롭 다운을 만들고 하나씩 포트를 선택했다. 두 번째 포트 이후에는 직렬 포트를 변경할 수 없습니다. 하지만 두 번 시도를 선택하면 문제가 없습니다.
나는 C++에서 OOP를 알고있다. 하지만 저는 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'로 정의됩니다. 아마도 'serialPort'자체 대신에'tmp'를 사용해서는 안됩니다. 둘 다'SerialPort' 유형입니다. –