public static KeyFile GetCurrentKeyFile() { KeyFile toReturn = null; string falconKeyFilePath = null; using (var reader = new F4SharedMem.Reader()) { falconKeyFilePath = reader.GetCurrentData()?.StringData?.data?.Where(x => x.strId == (uint)F4SharedMem.Headers.StringIdentifier.KeyFile).First().value; } if (string.IsNullOrEmpty(falconKeyFilePath)) { return(null); } var keyFileInfo = new FileInfo(falconKeyFilePath); if (!keyFileInfo.Exists) { return(null); } try { toReturn = KeyFile.Load(falconKeyFilePath); } catch (IOException e) { Log.Error(e.Message, e); } return(toReturn); }
private void ProcessingMethod() { F4SharedMem.FalconDataFormats dataFormat = _configuration.DataFormat; int interval = _configuration.Interval; try { using (F4SharedMem.Reader reader = new F4SharedMem.Reader(dataFormat)) { // pierwsze odczytanie danych z wymuszeniem przesłania F4SharedMem.FlightData data = reader.GetCurrentData(); if (_registeredVariable.Contains(_runningFalconVariable)) { _runningFalconVariable.SetValue(reader.IsFalconRunning); } if (data != null) { Type t = data.GetType(); foreach (Variable v in _registeredVariable) { if (v == _runningFalconVariable) { continue; } if (v.Index > -1) { continue; } FieldInfo fi = t.GetField(v.ID); if (fi != null) { object value = fi.GetValue(data); v.SetValue(value); continue; } } } while (_working) { if (interval > 0) { Thread.Sleep(interval); } data = reader.GetCurrentData(); if (data != null) { Type t = data.GetType(); foreach (Variable v in _registeredVariable) { if (v == _runningFalconVariable) { v.SetValueIfChanged(reader.IsFalconRunning); continue; } if (v.Index > -1) { continue; } FieldInfo fi = t.GetField(v.ID); if (fi != null) { v.SetValueIfChanged(fi.GetValue(data)); continue; } } } } } } catch (ThreadAbortException) { } catch (Exception ex) { _log.Log(this, ex.ToString()); } }