ptz_sj2819rx.c
来自「1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码」· C语言 代码 · 共 454 行
C
454 行
/* set tabstop=4 */
/********************************************************************************
* *
* Copyright(C) 2004 Penta-Micro *
* *
* ALL RIGHT RESERVED *
* *
* This software is the property of Penta-Micro and is furnished under *
* license by Penta-Micro. This software may be used only in accordance *
* with the terms of said license. This copyright notice may not be *
* removed, modified or obliterated without the prior written permission *
* of Penta-Micro. *
* *
* This software may not be copyed, transmitted, provided to or otherwise *
* made available to any other person, company, corporation or other entity *
* except as specified in the terms of said license. *
* *
* No right, title, ownership or other interest in the software is hereby *
* granted or transferred. *
* *
* The information contained herein is subject to change without notice and *
* should not be construed as a commitment by Penta-Micro. *
* *
********************************************************************************
MODULE NAME: ptz_sj2819rx.c
REVISION HISTORY:
Date Ver Name Description
---------- --- --------------------- -----------------------------------------
07/09/2003 1.0 Mhpark Created
02/01/2005 1.1 JiGwanKang(xchannel) Modify(arrangement)
...............................................................................
DESCRIPTION:
This Module contains functions for "SJ2819RX" ptz model.
...............................................................................
*/
/** ************************************************************************* **
** includes
** ************************************************************************* **/
#include <stdio.h>
#include "pthread_ptzctrl.h"
/** ************************************************************************* **
** defines
** ************************************************************************* **/
/** ************************************************************************* **
** typedefs
** ************************************************************************* **/
/** ************************************************************************* **
** globals
** ************************************************************************* **/
/** ************************************************************************* **
** locals
** ************************************************************************* **/
BOOL m_bPreset;
BOOL m_bIris;
BOOL m_bCamPower;
BOOL m_bCamLight;
BOOL m_bCamWiper;
BOOL m_bCamAutorun;
BOOL m_bCamAux;
BOOL m_bAutorunStart;
BOOL m_bAutorunStop;
BOOL m_bPresetSpeed;
BOOL m_bPTZSpeed;
BOOL m_bMenu;
BOOL m_bMenuUp;
BOOL m_bMenuDown;
BOOL m_bMenuValueUp;
BOOL m_bMenuValueDown;
BOOL m_bPatternSet;
BOOL m_bPatternRun;
BOOL m_bReset;
UNS8 m_Alpha;
UNS8 m_Command;
UNS8 m_Addr;
UNS8 m_Code;
UNS8 m_Data; // only for Power Control, Preset
UNS8 m_CS;
/** ************************************************************************* **
** forward declarations
** ************************************************************************* **/
static void GetModelInfo ( PTZInfo* pModelInfo )
{
strcpy ( pModelInfo->PTZModelName, PTZ_SJ2819RX );
pModelInfo->bPreset = m_bPreset;
pModelInfo->bIris = m_bIris;
pModelInfo->bCamAux = m_bCamAux;
pModelInfo->bMenu = m_bMenu;
pModelInfo->bCamPower = m_bCamPower;
pModelInfo->bCamLight = m_bCamLight;
pModelInfo->bCamWiper = m_bCamWiper;
pModelInfo->bCamAutorun = m_bCamAutorun;
pModelInfo->bAutorunStart = m_bAutorunStart;
pModelInfo->bAutorunStop = m_bAutorunStop;
pModelInfo->bPresetSpeed = m_bPresetSpeed;
pModelInfo->bPTZSpeed = m_bPTZSpeed;
pModelInfo->bMenuUp = m_bMenuUp;
pModelInfo->bMenuDown = m_bMenuDown;
pModelInfo->bMenuValueUp = m_bMenuValueUp;
pModelInfo->bMenuValueDown = m_bMenuValueDown;
pModelInfo->bPatternSet = m_bPatternSet;
pModelInfo->bPatternRun = m_bPatternRun;
pModelInfo->bReset = m_bReset;
}
//////////////////////////////////////////////////////////////////////
static BOOL SendCommand5 ()
{
UNS8 buff[10];
UNS16 val;
// Calc Check Sum
val = m_Alpha + m_Command + m_Addr + m_Code;
m_CS = (UNS8)val;
buff[0] = m_Alpha;
buff[1] = m_Command;
buff[2] = m_Addr;
buff[3] = m_Code;
buff[4] = m_CS;
return SendComm(buff, 5, PTZ_SJ2819RX_ID);
}
static BOOL SendCommand6 ()
{
UNS8 buff[10];
UNS16 val;
// Calc Check Sum
val = m_Alpha + m_Command + m_Addr + m_Code + m_Data;
m_CS = (UNS8)val;
buff[0] = m_Alpha;
buff[1] = m_Command;
buff[2] = m_Addr;
buff[3] = m_Code;
buff[4] = m_Data;
buff[5] = m_CS;
return SendComm(buff, 6, PTZ_SJ2819RX_ID);
}
// Extended Command
static BOOL PTZStop ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x00;
SendCommand5 ();
usleep(100*1000);
return SendCommand5 ();
}
static BOOL PanLeft ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x04;
return SendCommand5 ();
}
static BOOL PanRight ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x08;
return SendCommand5 ();
}
static BOOL TiltDown ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x02;
return SendCommand5 ();
}
static BOOL TiltUp ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x01;
return SendCommand5 ();
}
static BOOL UpLeft ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x05;
return SendCommand5 ();
}
static BOOL UpRight ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x09;
return SendCommand5 ();
}
static BOOL DownLeft ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x06;
return SendCommand5 ();
}
static BOOL DownRight ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x0A;
return SendCommand5 ();
}
static BOOL FocusFar ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x30;
return SendCommand5 ();
}
static BOOL FocusNear ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x40;
return SendCommand5 ();
}
static BOOL ZoomOut ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x10;
return SendCommand5 ();
}
static BOOL ZoomIn ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
m_Code = 0x20;
return SendCommand5 ();
}
static BOOL Wiper ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x43; // 'C'
if ( str_params->bEnable )
m_Code = 0x50;
else
m_Code = 0x00; // WiperOFF -> StopPTZ
return SendCommand5 ();
}
static BOOL CamPower ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x50; // 'P'
if ( str_params->bEnable )
m_Code = 0x21;
else
m_Code = 0x11;
m_Data = 0x00; // Power Delay
return SendCommand6 ();
}
static BOOL CamLight ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x50; // 'P'
if ( str_params->bEnable )
m_Code = 0x22;
else
m_Code = 0x12;
m_Data = 0x80; // Power Delay
return SendCommand6 ();
}
static BOOL Aux1 ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x50; // 'P'
if ( str_params->bEnable )
m_Code = 0x23;
else
m_Code = 0x13;
m_Data = 0x00; // Power Delay
return SendCommand6 ();
}
static BOOL SetPreset ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
if ( str_params->No > 7 ) return FALSE;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x4D; // 'M'
m_Code = 0x30 | str_params->No;
m_Data = 0x00; // Power Delay
return SendCommand6 ();
}
static BOOL GotoPreset ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
if ( str_params->No > 7 ) return FALSE;
// m_Addr = str_params->iCamID; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Command = 0x4D; // 'M'
m_Code = 0x40 | str_params->No;
m_Data = 0x00; // Power Delay
return SendCommand6 ();
}
void CSJ2819RX()
{
m_bPreset = TRUE;
m_bIris = FALSE;
m_bCamPower = TRUE;
m_bCamLight = TRUE;
m_bCamWiper = TRUE;
m_bCamAutorun = TRUE;
m_bCamAux = TRUE;
m_bAutorunStart = FALSE; // Left Limit
m_bAutorunStop = FALSE; // Right Limit
m_bPresetSpeed = FALSE;
m_bPTZSpeed = FALSE;
m_bMenu = FALSE;
m_bMenuUp = FALSE;
m_bMenuDown = FALSE;
m_bMenuValueUp= FALSE;
m_bMenuValueDown= FALSE;
m_bPatternSet = FALSE;
m_bPatternRun = FALSE;
m_bReset = TRUE;
m_Alpha = 0x40; // '@' Fixed.
m_Command = 0x43; // 'C'
m_Addr = 0x01; // Camera Address : Target RX ( 0x01 ~ 0xFF )
m_Code = 0x00; // Controll Code
m_Data = 0x00; // only for Power Control, Preset
m_CS = 0x00; // CheckSum
ptz_status_struct.isr_table[PTZFSTOP].isr_ptr = PTZStop;
ptz_status_struct.isr_table[PTUP].isr_ptr = TiltUp;
ptz_status_struct.isr_table[PTDOWN].isr_ptr = TiltDown;
ptz_status_struct.isr_table[PTZFSTOP].isr_ptr = PTZStop;
ptz_status_struct.isr_table[PTLEFT].isr_ptr = PanLeft;
ptz_status_struct.isr_table[PTRIGHT].isr_ptr = PanRight;
ptz_status_struct.isr_table[PTZFSTOP].isr_ptr = PTZStop;
ptz_status_struct.isr_table[ZIN].isr_ptr = ZoomIn;
ptz_status_struct.isr_table[ZOUT].isr_ptr = ZoomOut;
ptz_status_struct.isr_table[PTZFSTOP].isr_ptr = PTZStop;
ptz_status_struct.isr_table[FIN].isr_ptr = FocusNear;
ptz_status_struct.isr_table[FOUT].isr_ptr = FocusFar;
ptz_status_struct.isr_table[SETPRESET].isr_ptr = SetPreset;
ptz_status_struct.isr_table[GOTOPRESET].isr_ptr = GotoPreset;
ptz_status_struct.isr_table[UPLEFT].isr_ptr = UpLeft;
ptz_status_struct.isr_table[UPRIGHT].isr_ptr = UpRight;
ptz_status_struct.isr_table[DOWNLEFT].isr_ptr = DownLeft;
ptz_status_struct.isr_table[DOWNRIGHT].isr_ptr = DownRight;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?