Exemplo n.º 1
0
 public override void CallContact()
 {
     if (arTA != null)
     {
         if (arTA.IsCompleted)
         {
             TA   = ActionNeuron;
             arTA = TA.BeginInvoke(null, null);
         }
     }
     else
     {
         TA   = ActionNeuron;
         arTA = TA.BeginInvoke(null, null);
     }
 }
Exemplo n.º 2
0
    public void Drain(object sender, System.Timers.ElapsedEventArgs e) //Запускается с периодичностью 1мс
    {
        if (Summ > threshold)                                          //Если порог превышен то запускаем нейроэлемент
        {
            if (arTA != null)
            {
                if (arTA.IsCompleted)
                {
                    if (onThreshold != null)
                    {
                        onThreshold();
                    }
                    TA   = ActionNeuron;
                    arTA = TA.BeginInvoke(null, null);
                }
            }
            else
            {
                if (onThreshold != null)
                {
                    onThreshold();
                }
                TA   = ActionNeuron;
                arTA = TA.BeginInvoke(null, null);
            }
        }

        if (Mathf.Abs(Summ) <= Dampfer)
        {
            Summ = 0f;
        }
        if (Summ > Dampfer)
        {
            Summ -= Dampfer;
        }
        if (Summ < -Dampfer)
        {
            Summ += Dampfer;
        }

        lock (_addForceLock)
        {
            Summ     += _addForce;
            _addForce = 0;
        }
    }
Exemplo n.º 3
0
 public override void CallContact() // Получение сигнала от контактного синспса
 {
     if (arTA != null)              // Делегат запускался
     {
         if (arTA.IsCompleted)      // Выполение делегата завершено
         {
             TA   = ActionNeuron;
             arTA = TA.BeginInvoke(null, null); //Запуск задачи, запуск активации нейрона
         }
     }
     else
     {
         // Делегат никогда не запускался
         TA   = ActionNeuron;
         arTA = TA.BeginInvoke(null, null); //Запуск активации нейрона
     }
 }
Exemplo n.º 4
0
    public void Drain(object sender, System.Timers.ElapsedEventArgs e)
    {
        if (Summ > threshold)
        {
            if (arTA != null)
            {
                if (arTA.IsCompleted)
                {
                    if (onThreshold != null)
                    {
                        onThreshold();
                    }
                    TA   = ActionNeuron;
                    arTA = TA.BeginInvoke(null, null);
                }
            }
            else
            {
                if (onThreshold != null)
                {
                    onThreshold();
                }
                TA   = ActionNeuron;
                arTA = TA.BeginInvoke(null, null);
            }
        }

        if (Summ < thresholdDown)
        {
            if (arTA != null)
            {
                if (arTA.IsCompleted)
                {
                    if (DeReActionNeuron != null)
                    {
                        DeReActionNeuron();
                    }
                    TA   = DeReAction;
                    arTA = TA.BeginInvoke(null, null);
                }
            }
            else
            {
                if (DeReActionNeuron != null)
                {
                    DeReActionNeuron();
                }
                TA   = DeReAction;
                arTA = TA.BeginInvoke(null, null);
            }
        }


        if (Mathf.Abs(Summ) <= Dampfer)
        {
            Summ = 0f;
        }
        if (Summ > Dampfer)
        {
            Summ -= Dampfer;
        }
        if (Summ < -Dampfer)
        {
            Summ += Dampfer;
        }

        Summ     += _addForce;
        _addForce = 0;
    }