<mccon>
各ポートを開いてシリアルに送信しようとしています。これに対してマイクロコントローラーが応答<connected>\n
し、その後 C# コードが for each ループを終了する必要があります。
回線で困っていserialPort.PortName = str;
ます。2 回繰り返した後、それ以上続行しません。
これも手動でやってみました。ドロップダウンを作成し、ポートを 1 つずつ選択しました。2 番目のポート以降は、シリアル ポートを変更できません。しかし、2 回以内に選択した場合、問題なく動作します。
私は 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);
}
}
}
}