C#, событие serialport_datareceived() никогда не срабатывало для моего макетного интерфейса
Всем привет,
Я пытаюсь создать приложение, которое будет отправлять фиктивные данные на последовательный порт COM1, например строку "Привет".
Теперь это же приложение будет пытаться читать данные из того же COM1, то есть я хочу прочитать то же самое сообщение "Привет" из COM1. Для этого я написал код, но событие serialPort_DataReceived() никогда не срабатывает в моем приложении. Я не знаю, почему я могу прочитать данные из этого порта.
Неужели это невозможно или я что-то делаю не так?
Что я уже пробовал:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace RS232MockInterface { public partial class Form2 : Form { public Form2() { InitializeComponent(); serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived); serialPort1.Open(); serialPort1.Handshake = System.IO.Ports.Handshake.None; serialPort1.DtrEnable = true; serialPort1.RtsEnable = true; serialPort1.ReadTimeout = 6000; serialPort1.WriteTimeout = 6000; } delegate void OutputUpdateDelegate(string data); private void OutputUpdateCallback(string data) { txtMessages.Text += data; //MessageBox.Show(data); } private void button1_Click(object sender, EventArgs e) { if(!serialPort1.IsOpen) { serialPort1.Open(); serialPort1.Handshake = System.IO.Ports.Handshake.None; serialPort1.DtrEnable = true; serialPort1.RtsEnable = true; serialPort1.ReadTimeout = 6000; serialPort1.WriteTimeout = 6000; } serialPort1.Write("Hi"); string str = serialPort1.ReadExisting(); //str = serialPort1.ReadLine(); } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { if (serialPort1.IsOpen) { String RecievedData; RecievedData = serialPort1.ReadExisting(); if (!(RecievedData == "")) { txtMessages.Invoke(new OutputUpdateDelegate(OutputUpdateCallback), RecievedData); } } } private void serialPort1_ErrorReceived(object sender, System.IO.Ports.SerialErrorReceivedEventArgs e) { } private void serialPort1_PinChanged(object sender, System.IO.Ports.SerialPinChangedEventArgs e) { } } }