📄 ptz_pelcod.c
字号:
/* 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_pelcod.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 "PELCO D-Protocol" ptz model.
...............................................................................
*/
/** ************************************************************************* **
** includes
** ************************************************************************* **/
#include <stdio.h>
#include "pthread_ptzctrl.h"
/** ************************************************************************* **
** defines
** ************************************************************************* **/
#define PTZ_PelcoD_MUXSLEEP 50
/** ************************************************************************* **
** 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_bSYNC;
UNS8 m_bADDR;
UNS8 m_bCMD1;
UNS8 m_bCMD2;
UNS8 m_bDATA1;
UNS8 m_bDATA2;
UNS8 m_bCHKSUM;
/** ************************************************************************* **
** forward declarations
** ************************************************************************* **/
static void GetModelInfo ( PTZInfo* pModelInfo )
{
strcpy ( pModelInfo->PTZModelName, PTZ_PelcoD );
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 void CalcCheckSumByte ()
{
m_bCHKSUM = m_bADDR + m_bCMD1 + m_bCMD2 + m_bDATA1 + m_bDATA2;
}
//////////////////////////////////////////////////////////////////////
/*
void ConvertToBDCformat ()
{
// Camera Number m_INFO0 -> BCD format
if ( m_INFO0 < 10 )
return;
UNS8 val = m_INFO0 - 10;
m_INFO0 = 0x10 | val;
}
*/
//////////////////////////////////////////////////////////////////////
static BOOL SendCommand ()
{
UNS8 buff[8];
// ConvertToBDCformat ();
CalcCheckSumByte ();
buff[0] = m_bSYNC;
buff[1] = m_bADDR;
buff[2] = m_bCMD1;
buff[3] = m_bCMD2;
buff[4] = m_bDATA1;
buff[5] = m_bDATA2;
buff[6] = m_bCHKSUM;
return SendComm(buff, 7, PTZ_PelcoD_ID);
}
//////////////////////////////////////////////////////////////////////
static BOOL PTZStop ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x00;
m_bDATA1 = 0x00;
m_bDATA2 = 0x00;
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL TiltUp ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x08;
m_bDATA1 = 0x00;
//m_bDATA2 = 0x3f;
m_bDATA2 = (UNS8)(0x3f * str_params->iSpeed / 100.);
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL TiltDown ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x10;
m_bDATA1 = 0x00;
//m_bDATA2 = 0x3f;
m_bDATA2 = (UNS8)(0x3f * str_params->iSpeed / 100.);
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL PanLeft ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x04;
//m_bDATA1 = 0x3f;
m_bDATA1 = (UNS8)(0x3f * str_params->iSpeed / 100.);
m_bDATA2 = 0x00;
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL PanRight ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x02;
//m_bDATA1 = 0x3f;
m_bDATA1 = (UNS8)(0x3f * str_params->iSpeed / 100.);
m_bDATA2 = 0x00;
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL UpLeft ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x0C;
m_bDATA1 = (UNS8)(0x3f * str_params->iSpeed / 100.);
m_bDATA2 = (UNS8)(0x3f * str_params->iSpeed / 100.);
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL DownLeft ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x14;
m_bDATA1 = (UNS8)(0x3f * str_params->iSpeed / 100.);
m_bDATA2 = (UNS8)(0x3f * str_params->iSpeed / 100.);
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL UpRight ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x0A;
m_bDATA1 = (UNS8)(0x3f * str_params->iSpeed / 100.);
m_bDATA2 = (UNS8)(0x3f * str_params->iSpeed / 100.);
return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL DownRight ( void *args )
{
PTZ_STR *str_params = (PTZ_STR *)args ;
// m_bADDR = str_params->iCamID;
m_bCMD1 = 0x00;
m_bCMD2 = 0x12;
m_bDATA1 = (UNS8)(0x3f * str_params->iSpeed / 100.);
m_bDATA2 = (UNS8)(0x3f * str_params->iSpeed / 100.);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -