Exemplo n.º 1
0
    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;
        }
    }
Exemplo n.º 2
0
 public SignalData(SignalTypes type, IEnumerable<double> samples, double samplingSpeed, PhaseData phaseData)
 {
     SignalType = type;
     SignalSamples = samples;
     SampleSpeed = samplingSpeed;
     PhaseShiftData = phaseData;
 }
Exemplo n.º 3
0
 public Signal()
 {
     this.time       = 0;
     this.frequency  = 0;
     this.amplitude  = 0.1;
     this.SignalType = SignalTypes.Sine;
 }
Exemplo n.º 4
0
 public Signal(double frequency, double amplitude, SignalTypes signalType)
 {
     this.time       = 0;
     this.frequency  = frequency;
     this.amplitude  = amplitude;
     this.SignalType = signalType;
 }
Exemplo n.º 5
0
 public ISignalData GetScopeDataBySignalType(SignalTypes signalType)
 {
     return scopeData.SavedData[signalType2ScopeChannel[signalType]];
 }
Exemplo n.º 6
0
 public ScopeInputChannel GetScopeChannelByDataType(SignalTypes signalType)
 {
     return signalType2ScopeChannel[signalType];
 }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
 /// <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);
         }
     }
 }
Exemplo n.º 9
0
 public void SwitchSignalToSine()
 {
     signalTypes = SignalTypes.Sine;
     UIManager.Instance.UpdateWaveButtons(SignalTypes.Sine, false);
 }
Exemplo n.º 10
0
 public void SwitchSignalToSawTooth()
 {
     signalTypes = SignalTypes.Sawtooth;
     UIManager.Instance.UpdateWaveButtons(SignalTypes.Sawtooth, false);
 }
Exemplo n.º 11
0
 public void SwitchSignalToTriangle()
 {
     signalTypes = SignalTypes.Triangle;
     UIManager.Instance.UpdateWaveButtons(SignalTypes.Triangle, false);
 }
Exemplo n.º 12
0
 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;
 }
Exemplo n.º 15
0
 public SignalArgs(SignalTypes type)
 {
     m_type = type;
 }