Форматы

Формат процедуры событий для объекта Поворотное устройство:

OnEvent("TELEMETRY","_id_","_событие_")

Формат оператора для описания действий с Поворотными устройствами:

DoReact("TELEMETRY","_id_","_команда_" [,"_параметры_"]);

Формат процедуры событий для объекта Пульт управления:

OnEvent("TELEMETRY_EXT","_id_","_событие_")

Формат оператора для описания действий с Пультом управления:

DoReact("TELEMETRY_EXT","_id_","_команда_" [,"_параметры_"]);

Формат процедуры событий для объекта Устройство управления:

OnEvent("JOYSTICK","_id_","_событие_")

Примеры

Примеры использования реакций объекта Поворотное устройство:

  1. Необходимо установить автофокусирование, когда видеокамеру 1 ставят на охрану.

    OnEvent("CAM","1","ARM")
    {
    	DoReact("TELEMETRY","1", "AUTOFOCUS_ON");
    }
  2. Необходимо повернуть видеокамеру в положение, заданное в первом пресете, при включении реле.

    OnEvent("GRELE","1","ON")
    {
    	telemetry_id= GetObjectParam("CAM","1","parent_id");
    	DoReact("TELEMETRY","telemetry_id","SETUP","GO_preset<1>");
    }
  3. Записать маршрут патрулирования для Камеры 1, соответствующей Поворотному устройству 1.1. Маршрут состоит из двух точек, таких, что для перехода из точки 1 в точку 2 необходимо поворачивать камеру влево со скоростью 6 в течение 2 секунд. Патрулирование должно осуществляться со скоростью 10. Время нахождения в каждой точке маршрута – 25 секунд. Предполагается, что в момент начала выполнения программы камера установлена в положение, соответствующее первой точке маршрута.

    OnEvent("MACRO","1","RUN")
    {
    	DoReact("TELEMETRY","1.1","PATROL_LEARN","cam<1>,preset<1>,tel_prior<1>,dwell<25>,speed<10>,flush_tour<0>");
    	Wait(2);
    	DoReact("TELEMETRY","1.1","LEFT","speed<6>,tel_prior<1>");
    	Wait(2);
    	DoReact("TELEMETRY","1.1","STOP","speed<6>,tel_prior<1>");
    	Wait(2);
    	DoReact("TELEMETRY","1.1","PATROL_LEARN","cam<1>,preset<2>,tel_prior<1>,dwell<25>,speed<10>,flush_tour<1>");
    }
  4. Есть 2 камеры с поворотными устройствами. Каждые 15 минут нужно повернуть камеры в пресет №1 (предустановка №1) и сделать скриншот. Имя файла – текущее время.

    OnTime(W,D,X,Y,H,M, "01")
    {
        if(strequal(M,"0"))
        {
            name=H+"_"+M+"_"+S+".jpg";
            //Камера 1 Поворотное устройство 1.1
            name1="Камера1 "+name;
            DoReact("TELEMETRY","1.1","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<1>,file<d:\"+name1);
            //Камера 2 Поворотное устройство 1.2
            name="Камера2 "+name;
            DoReact("TELEMETRY","1.2","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<2>,file<d:\"+name);
        }
    
        if(strequal(M,"15"))
        {
            name=H+"_"+M+"_"+S+".jpg";
            //Камера 1 Поворотное устройство 1.1
            name1="Камера1 "+name;
            DoReact("TELEMETRY","1.1","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<1>,file<d:\"+name1);
            //Камера 2 Поворотное устройство 1.2
            name="Камера2 "+name;
            DoReact("TELEMETRY","1.2","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<2>,file<d:\"+name);
        }
    
        if(strequal(M,"30"))
        {
            name=H+"_"+M+"_"+S+".jpg";
            //Камера 1 Поворотное устройство 1.1
            name1="Камера1 "+name;
            DoReact("TELEMETRY","1.1","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<1>,file<d:\"+name1);
            //Камера 2 Поворотное устройство 1.2
            name="Камера2 "+name;
            DoReact("TELEMETRY","1.2","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<2>,file<d:\"+name);
        }
    
        if(strequal(M,"45"))
        {
            name=H+"_"+M+"_"+S+".jpg";
            //Камера 1 Поворотное устройство 1.1
            name1="Камера1 "+name;
            DoReact("TELEMETRY","1.1","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<1>,file<d:\"+name1);
            //Камера 2 Поворотное устройство 1.2
            name="Камера2 "+name;
            DoReact("TELEMETRY","1.2","GO_PRESET","preset<1>,tel_prior<1>");
            DoReact("MONITOR","1","EXPORT_FRAME","cam<2>,file<d:\"+name);
        }
    }
  5. Осуществить патрулирование нескольких зон видимости с помощью пресетов поворотной камеры, с возможностью включения детектора движения на определенных областях этих зон.

    Камера 1: 5 зон детектора, 5 предустановок (пресетов). Два этих параметра задаются переменной n. Макрокоманда №1 – старт алгоритма. Макрокоманда №2 – остановка алгоритма. Flag – внутренняя переменная.

    При старте алгоритма камера становится в 1 пресет и ставит на охрану 1 зону детектора. Между этими командами задержка 200 миллисекунд, чтобы камера успела встать в пресет. Далее через 5 секунд 1 зона снимается с охраны и цикл начинается заново, но уже с 2 зоной и 2 пресетом. И так далее пока не переберутся все n зон и пресетов. После алгоритм начинается заново с 1. Алгоритм останавливается, если переменная flag обнуляется (с помощью макрокоманды №2).

    OnEvent("MACRO","1","RUN")
    {
        flag=1;
        n=5;
        [
         for(i=1;flag;i=str(i+1))
         {
             DoReact("TELEMETRY","1.1","GO_PRESET","preset<"+i+">,tel_prior<3>");
             Sleep(200);
             DoReact("CAM_ZONE","1"+i,"ARM");
             Wait(5);
             DoReact("CAM_ZONE","1"+i,"DISARM");
             if(strequal(i,n)) {i=0;}
        }
        ]
    }
    
    OnEvent("MACRO","2","RUN")
    {
        flag=0;
    }

Пример использования событий и реакций объекта Пульт управления:

По нажатию клавиши 15 на клавиатуре AXIS T8312 включить на ней лампочку и поставить камеру 2 на охрану.

OnEvent ("TELEMETRY_EXT","1","KEY_PRESSED")
{
	if (strequal(param0, "15")){
		DoReact("TELEMETRY_EXT","1","RELE_ON","rele<15>");
		DoReact("CAM","2","ARM");
	}
}
  • No labels