У меня есть c# приложение формы с двумя usercontrol. В первом я работаю с настройками последовательного порта, а во втором я хочу показать данные, которые поступают из одного и того же последовательного порта. Моя проблема в том, что я не могу получить доступ к тому же последовательному порту в разных пользовательских элементах управления или я не могу передать данные из одного пользовательского элемента управления в другой элемент управления. Я видел те же вопросы, но они не смогли решить мою проблему.
Вот мой код порта настроек пользователя. Я застрял здесь.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace communication
{
public partial class portUserControl : UserControl
{
public portUserControl()
{
InitializeComponent();
}
private void get_ports()
{
string[] ports = SerialPort.GetPortNames();
foreach(string port in ports)
{
comboBoxPorts.Items.Add(port);
}
}
private void add_baud_rates()
{
string[] baudRates = { "115200", "4800", "9600"};
comboBoxBaudRates.Items.AddRange(baudRates);
}
private void connect()
{
try
{
if(comboBoxPorts.SelectedItem !=null && comboBoxBaudRates.SelectedItem != null)
{
serialPort1.PortName = comboBoxPorts.SelectedItem.ToString();
serialPort1.BaudRate = Convert.ToInt16(comboBoxBaudRates.SelectedItem);
serialPort1.Open();
labelConnectionStaus.Text = "Connected";
labelConnectionStaus.ForeColor = Color.Green;
}
else
{
MessageBox.Show("Please select port name and baud rate");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void disconnect()
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
labelConnectionStaus.Text = "Diconnected";
labelConnectionStaus.ForeColor = Color.Red;
}
}
private void portUserControl_Load(object sender, EventArgs e)
{
get_ports();
add_baud_rates();
}
private void buttonConnect_Click(object sender, EventArgs e)
{
connect();
}
private void buttonDisconnect_Click(object sender, EventArgs e)
{
disconnect();
}
}
}