Продолжайте читать из последовательного порта, пока я не отправлю команду завершения - PullRequest
0 голосов
/ 10 ноября 2019

Мне поручено чтение данных из данных оборудования через последовательный порт. Оборудование будет отправлять на сервер несколько данных (может быть, больше, чем одно: при каждом нажатии кнопки отправки на оборудовании).

Я написал следующий класс для чтения «отдельных данных», отправленных оборудованием.

Я спрашиваю, как продолжить чтение данных, отправленных оборудованием, до отправки на сервер команды завершения (остановка чтения).

    public class MachineIntegrationManager : IMachineIntegrationService
    {
        public SerialPort Sport { set; get; }

        public MachineIntegrationManager()
        {
            Sport = new SerialPort("COM6", 9600, Parity.None, 8, StopBits.One);
        }

        public ResultClass<string> ReadEquipmentOutput()
        {
            ResultClass<string> res = new ResultClass<string>();

            try
            {

                Sport.Open();
                Sport.DataReceived += SportOnDataReceived;

                res.Result = "";
                res.Code = Errors.Success;
                res.Message = Errors.GetErrorMessage(res.Code);
            }
            catch (Exception ex)
            {
                res.Result = string.Empty;
                res.Code = Errors.UnknownError;
                res.Message = Errors.GetErrorMessage(res.Code);                
            }

            return res;
        }

        private void SportOnDataReceived(object sender, SerialDataReceivedEventArgs serialDataReceivedEventArgs)
        {
            File.WriteAllText("test.txt", Sport.ReadExisting());
        }
    }
}
...