как заставить прерывание блокировать других, пока оно не закончится - PullRequest
0 голосов
/ 07 июля 2019

создать прерывание для ожидания поступления данных через последовательный порт.проблема в том, что когда приходит много кадров, прерывания, конечно, не заканчивают выполнение подготовленного для них кода.Как я могу это исправить?либо блокировать будущие прерывания, пока первый не завершит прием кадров, другим способом.

public class port{

static int cont=0;

  public port()
    {
        entryPort.BaudRate = 9600;
        entryPort.DataBits = 8;
        entryPort.Parity = Parity.None;
        entryPort.StopBits = StopBits.One;
        entryPort.Handshake = Handshake.None;
        entryPort.PortName = "COM3";


entryPort.DataReceived += new SerialDataReceivedEventHandler(dataIn);
        puertoEntrada.Open();
    }


    private static void llegaronDatos(object 
sender,SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        console.write(cont);
        cont++;
        console.write("data:");
        Console.Write(indata);
    }
}

входные кадры: "$$$" четыре раза

выход: $$$ $$$ $$$ $$$

Как видите, некоторые инструкции пропускаются, например, печать "data:"

...