Я пытаюсь писать и читать через последовательный порт, подключенный к Arduino. Порт открывается нормально, но когда я пытаюсь получить данные, он всегда возвращает null. Код моего компонента:
public string outputSerial { get; set; } = "Serial...";
public string SerialPortValue { get; set; }
..
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
try
{
string indata = sp.ReadLine();
SerialPortValue = indata.ToString();
}
catch (Exception ex)
{
string msg = ex.Message;
}
}
..
public async Task GUI_experiment(Experiment newExperiment)
{
SerialPort _serialPort = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
Thread.Sleep(1000);
_serialPort.NewLine = (@"&N");
_serialPort.DtrEnable = true;
_serialPort.RtsEnable = true;
if (_serialPort.IsOpen)
_serialPort.Close();
_serialPort.Open();
Thread.Sleep(3000);
outputSerial = "Open";
string stateSystem = "ON";
_serialPort.WriteLine(stateSystem);
Thread.Sleep(3000);
_serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
outputSerial = await Task.FromResult(SerialPortValue);
await InvokeAsync(() => StateHasChanged());
(...)
}
Модальный срабатывает событие GUI_experiment и показывает через метку значение outputSerial.