串口通讯中查找某个串口的问题
for (int i = 0; i < 255; i++){
sp2 = new System.IO.Ports.SerialPort();
sp2.BaudRate = 19200;
sp2.PortName = "COM" + i.ToString();
try
{
sp2.Open();
sp2.Write("CO_READ_SMS");
T.Elapsed += new System.Timers.ElapsedEventHandler(timer4_Tick);
T.AutoReset = true;
T.Start();
Thread.Sleep(6000);
T.Enabled = false;
if (GetPhone == 2)
{
comboBox1.Text = "";
comboBox1.Text = "COM" + i.ToString();
sp2.Close();
s = i;
}
else if (GetPhone == 5)
{
sp2.Close();
}
sp2.DiscardOutBuffer();
sp2.DiscardInBuffer();
sp2.Dispose();
}
catch
{
continue;
}
}
当第一次执行到“ sp2.Write("CO_READ_SMS");”时,没问题,第二次执行到这里时,就突然中断了,程序也没任何提示,是咋回事啊?
问题补充:
好像偶尔能正常执行,但大多数时候都会出现问题 Winform 串口通信 通讯 SerialPort --------------------编程问答-------------------- 是不是频繁Open和Close导致的,你把Open和Close放在循环外试试 --------------------编程问答-------------------- catch
{
continue;
}
会不会是你从第二次开始就一直有异常,于是直接循环完结束程序了。
sp2.PortName = "COM" + i.ToString();
你确定你的电脑有那么多端口,255个哎,一旦某个端口不存在,就会引发异常,但是你在catch里又没有进行错误提示,于是每次异常就直接进入下一次循环,继续出错继续下一次,一直到最后。
把异常信息显示出来看看
catch(Exception ex)
{
MessageBox.Show(ex.Message);
continue;
}
补充:.NET技术 , C#