//检测可用串口,并增加到comboBox_PortName
private void CheckAndAddAvailableSerialPort()
{
bool flag = true;
comboBox_PortName.Items.Clear();
for (int i = 1; i < 20; i++)
{
try
{
serialPort1.PortName = "COM" + i;
serialPort1.Open();
serialPort1.Close();
comboBox_PortName.Items.Add("COM" + i);
if(flag)
{
flag = false;
comboBox_PortName.Text = serialPort1.PortName;
}
}
catch
{ }
}
}
//
int availableSerialPortNumber;
//检测可用串口数量,返回availableSerialPortNumber
private int CheckAvailableSerialPortNumber()
{
availableSerialPortNumber=0;
//comboBox_PortName.Items.Clear();
for (int i = 1; i < 20; i++)
{
try
{
serialPort1.PortName = "COM" + i;
serialPort1.Open();
serialPort1.Close();
availableSerialPortNumber++;
}
catch
{ }
}
return availableSerialPortNumber;
}
<pre name="code" class="csharp">//
//当串口数量变化时,
static int previousAvailableSerialPortNumbe=0;
private void timer1_Tick(object sender, EventArgs e)
{
int currentAvailableSerialPortNumber = CheckAvailableSerialPortNumber();
if (previousAvailableSerialPortNumbe != currentAvailableSerialPortNumber)
{
CheckAndAddAvailableSerialPort();
previousAvailableSerialPortNumbe = currentAvailableSerialPortNumber;
}
}
<pre name="code" class="csharp">//
//打开串口
private void Btn_OpenSerialport_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
timer1.Enabled = true; //打开timer1
serialPort1.Close();
Btn_OpenSerialport.Text = "打开串口";
}
else
{
timer1.Enabled = false; //<span style="font-family: Arial, Helvetica, sans-serif;">关闭timer1</span>
serialPort1.BaudRate = Convert.ToInt32(comboBox_BandRate.Text);
serialPort1.PortName = comboBox_PortName.Text;
serialPort1.Open();
Btn_OpenSerialport.Text = "关闭串口";
}
}
catch { MessageBox.Show("串口打开失败!"); }
//是否连接数据库
if(checkBox_ConnectDataBase.Checked==true)
{
ConnectDataBase();
}
}