串口改进:原来使用try尝试1-20个串口 搜寻比较慢,如果串口号大于20还搜不到。
改进:使用系统自带接口获取串口,然后通过try尝试哪个串口可用,然后添加到comboBox
private void SearchAndAddSerialToComboBox(SerialPort MyPort, ComboBox MyBox)
{
//将可用端口号添加到ComboBox
// string[] MyString = new string[20]; //最多容纳20个,太多会影响调试效率
// string Buffer; //缓存
// MyBox.Items.Clear(); //清空ComboBox内容
// for (int i = 1; i < 20; i++) //循环
// {
// try //核心原理是依靠try和catch完成遍历
// {
// Buffer = "COM" + i.ToString();
// MyPort.PortName = Buffer;
// MyPort.Open(); //如果失败,后面的代码不会执行
// MyString[i - 1] = Buffer;
// MyBox.Items.Add(Buffer); //打开成功,添加至下俩列表
// MyPort.Close(); //关闭
// }
// catch
// {
//
// }
// }
// MyBox.Text = MyString[0]; //初始化
MyBox.Items.Clear();
string[] strport = System.IO.Ports.SerialPort.GetPortNames();
if (strport == null)
{
//MessageBox.Show("本机没有串口!", "Error");
return;
}
foreach (string s in System.IO.Ports.SerialPort.GetPortNames())
{
try
{
MyPort.PortName = s;
MyPort.Open(); //如果失败,后面的代码不会执行
MyBox.Items.Add(s); //打开成功,添加至下俩列表
MyPort.Close(); //关闭
}
catch
{ }
}
}