C#中怎么获取有效的串口?

2024-11-02 03:25:22
推荐回答(5个)
回答1:

1.引用System.IO.Ports空间。  SerialPort.GetPortNames(); 通过获取所有串口名。

string[] names = SerialPort.GetPortNames(); // 获取所有可用串口的名字

2.names 中就保存了所有可用串口的名字了。

回答2:

直接上代码:

public Form1()  

InitializeComponent();  

this.Load += Form1_Load; 

void Form1_Load(object sender, EventArgs e)  

string[] ArryPort = SerialPort.GetPortNames();  

comboBox1.Items.Clear();  

for (int i = 0; i < ArryPort.Length; i++)  

comboBox1.Items.Add(ArryPort[i]);  

comboBox1.SelectedIndex = 1;

问题: 

1、上面的代码是启动的时候扫描出来的 

2、当串口不存在时需要被扫描出来 

3、串口助手需要定时检测

回答3:

原创手动敲出来的代码,已编译运行,可以实际使用。
// 获取所有可用串口的名字
string[] names = SerialPort.GetPortNames();

//遍历所有可用串口
for (byte i = 0; i < names.Length; i++)
{
serialPort1.PortName = names[i];

if (serialPort1.IsOpen == false)
{
try
{
serialPort1.Open();
}
catch
{
continue;
}
}

if (serialPort1.IsOpen == true)
{
serialPort1.DiscardInBuffer(); //清除接收缓冲区
serialPort1.DiscardOutBuffer();//清除发送缓冲区
PictureBoxComPortFlagRed();
cbxComportSelect.Text = serialPort1.PortName;
btnComOpenOrClose.Text = "关闭串口";
break;
}
}
//当前没有串口可用
if (serialPort1.IsOpen == false)
{
PictureBoxComPortFlagBlack();
MessageBox.Show("没有发现可用串口或者被占用! 001", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

回答4:

string[] ArryPort = SerialPort.GetPortNames();
cboPort.Items.Clear();
for (int i = 0; i < ArryPort.Length; i++)
{
cboPort.Items.Add(ArryPort[i]);
}
cboPort.SelectedIndex = 1;

回答5:

这个要想准确的找到串口,除非读取设备的硬件地址