Avatar for Konkery

Konkery

Member since Dec 2017 • Last active Dec 2017
  • 1 conversations
  • 6 comments

Most recent activity

  • in Other Boards
    Avatar for Konkery

    Yes, "this" was lost in one of setTimeout

  • in Other Boards
    Avatar for Konkery

    The problem is solved. Loss of context occurred in one of the plugins. The firmware of the Amperka code executes correctly.

  • in Other Boards
    Avatar for Konkery

    Thanks again !
    Already sent a request to Amperka

  • in Other Boards
    Avatar for Konkery

    In the code there are no syntax errors it builds and runs fine, below part of code:

    function TObj_1(_pin)
    {   
        /*** константы класса ***/
        this.MinPulse = 453.0; //минимальная длительность импульса которая соответствует крайнему "меньшему" положения ротора
        this.MaxPulse = 2050.0; //макисмальная длительность импульса которая соответствует крайнему "меньшему" положения ротора
        this.Ks = 8.7; //коэффициент преобразования в ф-ции Y=kA+B (линейная кривая самого сервопривода
            
        /*** поля класса ***/
        this.Pin = null; //пин микропроцессора на котором "сидит" сервопривод
        this.Value = 0.0; //конечное значение яркости свечения
        this.CurValue = 0.0; //текущее значение яркости свечения
        this.Speed = 0.0; //текущая скорость процесса
    
        this.Pin = _pin; //задать пин к которому привязан сервопривод
    }
    TObj_1.prototype.BunRunAnimation = function()
    {
        this.FlagBunAnimation = true; //запретить "ручной" запуск Animation(...)
            this.StopAnimation(); //остановить текущую анимацию
    };
    
    function TObj_2(_tobj_1)
    {
        this.PHASE_ARR = [ "START_MOVE", "START_WAIT", "DOWN_MOVE", "DOWN_WAIT", "UP_MOVE", "UP_WAIT" ];
        
        this.ANGLE_START = 30; //конечный угол ротора фазы START_MOVE
        this.ANGLE_UP = 20; //конечный угол ротора фазы UP_MOVE
        this.ANGLE_DOWN = 0; //конечный угол ротора фазы DOWN_MOVE
        
        this.TIME_START = 15; //время нахождения в позиции START_WAIT, секунд
        this.TIME_UP = 0.5;  //время нахождения в позиции UP_MOVE, секунд
        this.TIME_DOWN = 0.7;  //время нахождения в позиции UP_WAIT, секунд
            
        this.SPEED_START = 25; //скорось движения ротора в фазе START_MOVE, %/s
        this.SPEED_UP = 40;  //скорось движения ротора в фазе UP_MOVE, %/s
        this.SPEED_DOWN = 25;  //скорось движения ротора в фазе DOWN_MOVE, %/s
        
        this.INTERVAL_PLAY = 60.0; //определяет период в ms запуска внутренней ф-и setTimeout
        
    
        this.Obj1 = _tobj_1; //инициируем поле объектом класса Servo
    };
    TObj_2.prototype.TaskRun = function()
    {
        let _this = this;
        
        if( !_this.FlagTaskRun )
            {
                _this.FlagTaskRun = true; 
                    _this.Obj1.BunRunAnimation(); //Error !
                
                _this.CurPhase = _this.PHASE_ARR[0]; 
            }
            
        switch(_this.CurPhase)
        {
            case "START_MOVE":
                                if( !_this.FlagSTART_MOVE )
                                {
                                    _this.Obj1.AnimationTask(_this.ANGLE_STA­RT, _this.SPEED_START);
                                        _this.FlagSTART_MOVE = true;
                                }
                                else
                                {
                                    if ( !_this.Obj1.GetStatusRunAnimation() ) //Error !
                                    {
                                        _this.CurPhase = _this.PHASE_ARR[1]; 
                                            _this.FlagSTART_MOVE = false; 
                                    }
                                }
                                
                break;
    };
    
  • in Other Boards
    Avatar for Konkery

    Thank you for such a quick response !
    I use the cost of production of Amperka (http://amperka.ru/) - "IskraJS" based on Espruino 1v92.194

  • in Other Boards
    Avatar for Konkery

    There is an object created via new:

    function class_1()
    {
    this.A_1;
    this.B_1;
    }
    
    class_1.prototype.func_class_1 = function()
    {
        /*
            here are some actions with variables this.A_1, this.B_1
        */
    }
    
    function class_2 (_obj /*object of type class_1*/)
    {
    this.A_2;
    this.B_2;
    this.Obj_2 = _obj;
    }
    
    class_2.prototype.func_class_2  = function()
    {
        //function call problem !!!
        this.Obj_2.func_class_1();
    }
    
    var o1 = new class_1();
    var o2 = new class_2(o1);
    
    o2.func_class_2(); //Uncaught Error: Field or method "func_class_1()" does not already exist, and can't create it on undefined
    
    

    Help !
    I tried various options with this, call and bind, nothing helped. How to organize a call to "this.Obj_2.func_Class_1()" ?

Actions