У меня есть два разных класса: один, на котором у меня есть форма (Form1), и другой, где у меня связь SerialPort (SerialPortCom). Я могу отправлять и получать данные из последовательного порта, но когда я отправляю данные в form1 и пытаюсь поместить их в текстовое поле, оно никогда не обновляется.
Как мне из SerialPortCom'а обработчик событий SerialPort вызвать функцию в Form1, где я могу обновить форму и обработать данные?
Мой код SerialPort очень вдохновлен учебником PsychoCoder по последовательному порту в C #: https://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/#/
Он обновляет текстовое поле из класса SerialPort, но я хотел бы отправить строку в Form1, чтобы я мог обработать ее, прежде чем отобразить ее.
Я попытался вызвать TextBox.update, Invalidate, refresh.
Я тоже пробовал
public void data(string message)
{
messagereceived = message;
if (modtag_textbox.InvokeRequired)
{
modtag_textbox.Invoke(new EventHandler(delegate { modtag_textbox.Text = message; }));
}
else
{
modtag_textbox.Text = message;
}
}
Но это никогда не входило в утверждение if. И если я помещу его в оператор if, он выдаст ошибку.
Код из обработчика событий SerialPortCom:
[STAThread]
void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string msg = SerialPort1.ReadExisting();
Form1 test = new Form1();
test.data(msg);
}
Нет проблем с входом в обработчик событий, а также он вызывает функцию data () в Form1.
Я хочу отправить сообщение из SerialPortCom в функцию в Form1, оттуда обработать данные и отобразить их в текстовом поле формы.
Спасибо за помощь,
Клаус Хаммер