public void UpdateWaveButtons(SignalTypes signalTypes, bool isInitial) { // This is f*****g stupid. ButtonToggle(waveSawtooth, false); ButtonToggle(waveSquare, false); ButtonToggle(waveTriangle, false); switch (signalTypes) { case SignalTypes.Sawtooth: ButtonToggle(waveSawtooth, isInitial); break; case SignalTypes.Square: ButtonToggle(waveSquare, isInitial); break; case SignalTypes.Triangle: ButtonToggle(waveTriangle, isInitial); break; default: Debug.Log("Unknown Signal Type for button change."); break; } }
public SignalData(SignalTypes type, IEnumerable<double> samples, double samplingSpeed, PhaseData phaseData) { SignalType = type; SignalSamples = samples; SampleSpeed = samplingSpeed; PhaseShiftData = phaseData; }
public Signal() { this.time = 0; this.frequency = 0; this.amplitude = 0.1; this.SignalType = SignalTypes.Sine; }
public Signal(double frequency, double amplitude, SignalTypes signalType) { this.time = 0; this.frequency = frequency; this.amplitude = amplitude; this.SignalType = signalType; }
public ISignalData GetScopeDataBySignalType(SignalTypes signalType) { return scopeData.SavedData[signalType2ScopeChannel[signalType]]; }
public ScopeInputChannel GetScopeChannelByDataType(SignalTypes signalType) { return signalType2ScopeChannel[signalType]; }
private void detectSignals() { Stopwatch stopWatch = new Stopwatch(); while (true) { GpioPinValue currentValue = _inputPin.Read(); // Wir müssen nur zwischen 2 Zuständen unterscheiden. // 1. Wir warten auf ein Low-Signal und beginnen dann die Zeitmessung // 2. Wir stoppen die im ersten Schritt gestartete Zeitmessung und werten anschließend die Zeit aus. // Da im ersten Schritt die Zeitmessung gestoppt ist und im zweiten nicht, benutzen wir hier die entsprechende Eigenschaft, // um zwischen den jeweiligen Schritten zu unterscheiden. if (!stopWatch.IsRunning) { if (currentValue == GpioPinValue.Low) { stopWatch.Restart(); } } else if (currentValue == GpioPinValue.High) { stopWatch.Stop(); var duration = stopWatch.ElapsedMilliseconds; stopWatch.Reset(); // Unter dem Schwellwert von Short werten wir das Signal als zu kurz und damit ungültig. // Ansonsten ordnen wir das Signal anhand der festgelegten Schwellwerte dem jeweiligen Typ zu. if (duration >= TIME_SHORT) { SignalTypes signalType = SignalTypes.Short; if (duration >= TIME_PAUSE) { signalType = SignalTypes.Pause; } else if (duration >= TIME_LONG) { signalType = SignalTypes.Long; } // Normalerweise würden wir hier ein entsprechendes Event feuern. // Aber in diesem Fall helfen wir uns mit einer einfachen Ausgabe. Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { lb_Output.Items.Add(String.Format("{0}: {1} ({2} ms)", DateTime.Now.ToString("HH:mm:ss"), signalType.ToString(), duration)); if (lb_Output.Items.Count > 10) { lb_Output.Items.RemoveAt(0); } }) .AsTask().Wait(); } } // Damit verhindern wir, dass der arme Raspi heiß läuft ;-) // 100 Abtastungen pro Sekunde sollten in diesem Fall genügen. Task.Delay(10); } }
/// <summary>Is called when a beacon is passed.</summary> /// <param name="beacon">The beacon data.</param> internal void SetBeacon(BeaconData beacon) { if (beacon.Type == 40) { int type = beacon.Optional % 100; int data = beacon.Optional / 100; if (type >= 1 & type <= 6) { if (type == 4 & data == 1) { this.SignalType = SignalTypes.RepeatingSignalTunnel; } else if (type == 5 | data == 0) { this.SignalType = (SignalTypes)type; } else { this.SignalType = SignalTypes.None; } if (this.SignalType != SignalTypes.None) { if (type == 4 | type == 5) { this.SignalLocation = this.Train.State.Location + Math.Min(200.0, beacon.Signal.Distance); } else { this.SignalLocation = this.Train.State.Location + beacon.Signal.Distance; } if (type == 5) { this.SignalAspects = data; } else { this.SignalAspects = 0; } this.SignalAspect = GetSignalAspect(beacon.Signal.Aspect); this.SignalCalled = false; } } else if (type == 9) { if (this.SignalType != SignalTypes.None) { int aspect = GetSignalAspect(beacon.Signal.Aspect); if (this.SignalAspect != aspect | !this.SignalCalled) { this.SignalAspect = aspect; CallOutSignalAspect(false); } } this.SignalType = SignalTypes.None; this.SignalLocation = double.MaxValue; this.SignalAspect = -1; this.SignalAspects = 0; this.SignalCalled = true; } else if (type == 10) { CallOutSpeedRestriction(data, false); } else if (type == 11) { CallOutSpeedRestriction(data, true); } } }
public void SwitchSignalToSine() { signalTypes = SignalTypes.Sine; UIManager.Instance.UpdateWaveButtons(SignalTypes.Sine, false); }
public void SwitchSignalToSawTooth() { signalTypes = SignalTypes.Sawtooth; UIManager.Instance.UpdateWaveButtons(SignalTypes.Sawtooth, false); }
public void SwitchSignalToTriangle() { signalTypes = SignalTypes.Triangle; UIManager.Instance.UpdateWaveButtons(SignalTypes.Triangle, false); }
private void Start() { _mOscillatorAudioSource = GetComponent <AudioSource>(); signalTypes = SignalTypes.Triangle; UIManager.Instance.UpdateWaveButtons(SignalTypes.Triangle, true); }
/// <summary> /// Установить тип сигнала канала /// </summary> /// <param name="signalType">Тип сигнала</param> /// <param name="channel">Канал</param> public abstract void SetSignalType(SignalTypes signalType, Channels channel = Channels.All);
public SignalsCallBackEventArgs(string id, string endPoint, bool isCallSuccessful, string rawJSONData, SignalTypes signalType, string name, JToken args, WebSocketReceiveResult webSocketResult) : base(id, endPoint, isCallSuccessful, rawJSONData, webSocketResult) { this.SignalType = signalType; this.Name = name; this.Arguments = args; }
public SignalArgs(SignalTypes type) { m_type = type; }