Control Pan/Tilt

To control pan/tilt of cameras, call SCRSDK::ControlPTZF(). ControlPTZF() needs two parameter. third parameter is option parameter for some control type.

When Control to Home position

Example:

// To Home Position
SCRSDK::CrError ret = SCRSDK::ControlPTZF(handle, SCRSDK::CrPTZFControlType_HomePosition);
if (CR_FAILED(ret))
{
    printf("fail control pan/tilt.\n");
    return;
}

When Reset position

Example:

// Reset position
SCRSDK::CrError ret = SCRSDK::ControlPTZF(handle, SCRSDK::CrPTZFControlType_Reset);
if (CR_FAILED(ret))
{
    printf("fail control pan/tilt.\n");
    return;
}

When Cancel to Control Pan/TIlt

Example:

// Cancel Pan/Tilt
SCRSDK::CrError ret = SCRSDK::ControlPTZF(handle, SCRSDK::CrPTZFControlType_Cancel);
if (CR_FAILED(ret))
{
    printf("fail cancel pan/tilt.\n");
    return;
}

When Control Pan/Tilt by Absolute position

Example:

// Setup
SDK::CrPTZFSetting ptzfSetting;

// for Pan Settings
ptzfSetting.pan.exists = 0x01;
ptzfSetting.pan.position = 1250; // used as absolute position
ptzfSetting.pan.speed = 1000;

// for TIlt Settings
ptzfSetting.tilt.exists = 0x01;
ptzfSetting.tilt.position = -32000; // used as absolute position
ptzfSetting.tilt.speed = 10000;

SCRSDK::CrError ret = SCRSDK::ControlPTZF(handle, SCRSDK::CrPTZFControlType_Absolute, &ptzfSetting);
if (CR_FAILED(ret))
{
    printf("fail control pan/tilt.\n");
    return;
}

When Control Pan/Tilt by Relative position

Example:

// Setup
SDK::CrPTZFSetting ptzfSetting;

// for Pan Settings
ptzfSetting.pan.exists = 0x01;
ptzfSetting.pan.position = 1250; // used as relative position
ptzfSetting.pan.speed = 1000;

// for TIlt Settings
ptzfSetting.tilt.exists = 0x01;
ptzfSetting.tilt.position = -32000; // used as relative position
ptzfSetting.tilt.speed = 10000;

SCRSDK::CrError ret = SCRSDK::ControlPTZF(handle, SCRSDK::CrPTZFControlType_Relative, &ptzfSetting);
if (CR_FAILED(ret))
{
    printf("fail control pan/tilt.\n");
    return;
}

When Control Pan/Tilt by Direction

Example:

// Setup
SDK::CrPTZFSetting ptzfSetting;

// for Pan Settings
ptzfSetting.pan.exists = 0x01;
ptzfSetting.pan.position = 1250; // used as direction volume
ptzfSetting.pan.speed = 1000;

// for TIlt Settings
ptzfSetting.tilt.exists = 0x01;
ptzfSetting.tilt.position = -32000; // used as direction volume
ptzfSetting.tilt.speed = 10000;

SCRSDK::CrError ret = SCRSDK::ControlPTZF(handle, SCRSDK::CrPTZFControlType_Direction, &ptzfSetting);
if (CR_FAILED(ret))
{
    printf("fail control pan/tilt.\n");
    return;
}

Handling pan/tilt events

Example:

void OnWarningExt(CrInt32u warning, CrInt32 param1, CrInt32 param2, CrInt32 param3)
{
    if(warning==CrWarningExt_ControlPTZFResult){
        CrError err = (CrError)param1;
        CrPTZFControlType controlType = (CrPTZFControlType)param3; // Absolute/Relative/Direction/HomePosition/Reset/Cancel
        switch(param2){
        case CrWarningExtParam_ControlPTZFResult_Invalid:
            // result is invalid.
            break;
        case CrWarningExtParam_ControlPTZFResult_OK:
            // result is OK.
            break;
        case CrWarningExtParam_ControlPTZFResult_NG:
            // result is NG.
            break;
        case CrWarningExtParam_ControlPTZFResult_Canceled:
            // result is canceled.
            break;
        }

    }
    ...
}