Последовательный порт не запускает Blazor ASP. NET Core 3.1: полученное значение всегда равно нулю - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь писать и читать через последовательный порт, подключенный к 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...