Я не настоящий программист, но делал так и все работает:
При загрузке формы вычитываем список портов и пихаем их в комбобокс
private void Main_Load(object sender, EventArgs e)
{
var portNames = SerialPort.GetPortNames();
portSelectorComboBox.Items.AddRange(portNames);
}
Выбранный в комбобоксе элемент кидаем в переменную
private void portSelectorComboBox_TextChanged(object sender, EventArgs e)
{
_portName = portSelectorComboBox.SelectedItem.ToString();
}
По нажатию кнопки OpenButton пытаемся соединиться
private void portOpenButton_Click(object sender, EventArgs e)
{
try
{
port = new SerialPort(_portName, 115200, Parity.None, 8, StopBits.Two);
port.ReceivedBytesThreshold = 1;
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
portStatusText.Text = "Ok, port open";
}
catch (Exception)
{
portStatusText.Text = "Error";
MessageBox.Show("неправильно выбран порт, попробуйте еще раз");
}
}
Ну и реализуем чтение того что пришло
void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
}