⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptz_drx502a.c

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 C
📖 第 1 页 / 共 2 页
字号:
	{
		m_bData1	= 0xA0;
		m_bData2	= 0xA0;
	}
	else
	{
		m_bData1	= 0xA0 + int( (str_params->iSpeed * 32) / 100 );
		m_bData2	= 0xA0 + int( (str_params->iSpeed * 32) / 100 );
	}
	*/
	m_bData1 = (unsigned char) ((0x3E * str_params->iSpeed) / 100. + 0x81);
	m_bData2 = (unsigned char) ((0x3E * str_params->iSpeed) / 100. + 0x81);

	m_bData3	= 0x00;
	m_bData4	= 0x00;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL DownRight	( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x12;		// Down( m_bOCL ) + Right( m_bOCL )
	/*
	if( str_params->iSpeed == 0 )
	{
		m_bData1	= 0xA0;
		m_bData2	= 0xA0;
	}
	else
	{
		m_bData1	= 0xA0 + int( (str_params->iSpeed * 32) / 100 );
		m_bData2	= 0xA0 + int( (str_params->iSpeed * 32) / 100 );
	}
	*/
	m_bData1 = (unsigned char) ((0x3E * str_params->iSpeed) / 100. + 0x81);
	m_bData2 = (unsigned char) ((0x3E * str_params->iSpeed) / 100. + 0x81);

	m_bData3	= 0x00;
	m_bData4	= 0x00;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL ZoomIn ( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x20;
	m_bData1	= 0x00;
	m_bData2	= 0x00;
	/*
	if( str_params->iSpeed == 0 )
		m_bData3	= 0x00;
	else
		m_bData3	= int( (str_params->iSpeed * 15) / 100 );
	*/
	m_bData3 = (unsigned char) ((8 * str_params->iSpeed)/100. + 5);
	m_bData4	= 0x00;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL ZoomOut ( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x40;
	m_bData1	= 0x00;
	m_bData2	= 0x00;
	/*
	if( str_params->iSpeed == 0 )
		m_bData3	= 0x00;
	else
		m_bData3	= int( (str_params->iSpeed * 15) / 100 );
	*/
	m_bData3 = (unsigned char) ((8 * str_params->iSpeed)/100. + 5);

	m_bData4	= 0x00;

	
	return SendCommand ();
}

static BOOL IrisOpen	( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x55;
	m_bData1	= 0x00;
	m_bData2	= 0x00;
	m_bData3	= 0x81;	
	m_bData4	= 0x82;

	
	return SendCommand ();
}
static BOOL IrisClose ( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x55;
	m_bData1	= 0x00;
	m_bData2	= 0x00;
	m_bData3	= 0x81;	
	m_bData4	= 0x83;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL FocusNear ( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x01;		// Auto Focus
	m_bOCL		= 0x00;
	m_bData1	= 0x00;
	m_bData2	= 0x00;

	m_bData3 = ((unsigned char) ((8 * str_params->iSpeed)/100. + 5)) << 4;

	m_bData4	= 0x00;
	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL FocusFar ( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x02;		// Auto Focus
	m_bOCL		= 0x00;
	m_bData1	= 0x00;
	m_bData2	= 0x00;

	m_bData3 = ((unsigned char) ((8 * str_params->iSpeed)/100. + 5)) << 4;

	m_bData4	= 0x00;
	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL SetPreset	( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x03;
	m_bData1	= 0x00;
	m_bData2	= 0x00;
	m_bData3	= 0x80 + str_params->No - 1;
	m_bData4	= 0x00;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL ClearPreset	( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x05;
	m_bData1	= 0x00;
	m_bData2	= 0x00;
	m_bData3	= 0x80 + str_params->No - 1;
	m_bData4	= 0x00;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL GotoPreset	( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x07;
	m_bData1	= 0x00;
	m_bData2	= 0x00;
	m_bData3	= 0x80 + str_params->No - 1;
	m_bData4	= 0x00;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL CamPower		( int iCamID, unsigned int bEnable )
{
	return TRUE;
}
//////////////////////////////////////////////////////////////////////
static BOOL CamLight		( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0x4F;

	if( str_params->bEnable )
		m_bData2	= 0x03;
	else
		m_bData2	= 0x02;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL AutoPan		( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
	
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;

	if( str_params->bEnable )
	{
		m_bOCL		= 0x1B;
		m_bData2	= 0x80;
	}
	else
	{
		m_bOCL		= 0x1F;
		m_bData2	= 0x00;
	}

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////
static BOOL OSDMenu	( void *args )
{
	PTZ_STR *str_params = (PTZ_STR *)args ;
		
//	m_bDA		= str_params->iCamID;
	m_bOCH		= 0x00;
	m_bOCL		= 0xb1;

	m_bData3	= 0x00;

	
	return SendCommand ();
}
//////////////////////////////////////////////////////////////////////

void CDRX502A()
{
	m_bPreset		= TRUE;
	m_bIris			= FALSE;
	m_bCamPower		= TRUE;
	m_bCamLight		= TRUE;
	m_bCamWiper		= FALSE;
	m_bCamAutorun	= TRUE;
	m_bCamAux		= TRUE;

	m_bAutorunStart	= FALSE;
	m_bAutorunStop	= FALSE;
	m_bPresetSpeed	= FALSE;
	m_bPTZSpeed		= TRUE;

	m_bMenu			= TRUE;
	m_bMenuUp		= FALSE;
	m_bMenuDown		= FALSE;
	m_bMenuValueUp	= FALSE;
	m_bMenuValueDown= FALSE;

	m_bPatternSet	= FALSE;
	m_bPatternRun	= FALSE;

	m_bReset		= FALSE;

	m_bSM			= 0x55;	// Start Marker = 0x55
	m_bCA			= 0x00;	// Control Address( 0x00 to 0x1f )
	m_bDA			= 0x00;	// Target Receiver Address( 0x00 to 0xFF )
	m_bOCH			= 0x00;	// Operation Code High
	m_bOCL			= 0x00;	// Operation Code Low
	m_bData1		= 0x00;	// Data Byte 1( Pan Moter Speed 0xA0 ~ 0xC0 )
	m_bData2		= 0x00;	// Data Byte 2( Tilt Moter Speed 0xA0 ~ 0xC0 )
	m_bData3		= 0x00;	// Data Byte 3( Zoom Moter Speed 0xA0 ~ 0x0D, bit 0~3 )
	m_bData4		= 0x00;	// Data Byte 4( Focus Moter Speed 0xA0 ~ 0x0D, bit 4~7 )
	m_bEM			= 0xAA;	// End Marker = 0xAA
	m_bCHKSUM		= 0x00;	// Check Sum

	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[CLEARPRESET].isr_ptr = ClearPreset;
	ptz_status_struct.isr_table[IRISOPEN].isr_ptr = IrisOpen;
	ptz_status_struct.isr_table[IRISCLOSE].isr_ptr = IrisClose;
	ptz_status_struct.isr_table[AUTOPAN].isr_ptr = AutoPan;
	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;
	ptz_status_struct.isr_table[OSDMENU].isr_ptr = OSDMenu;	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -