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

📄 ptz_ab2150.h

📁 此文件以插件DLL的形式封装了AB2150矩阵协议
💻 H
字号:
// PTZ_AB2150.h: interface for the CPTZ_AB2150 class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PTZ_AB2150_H__82D64381_56C6_4E4B_B61E_DF1D5D53E514__INCLUDED_)
#define AFX_PTZ_AB2150_H__82D64381_56C6_4E4B_B61E_DF1D5D53E514__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//
#include <afxtempl.h>
#include "..\PTZBase.h"
class CSerialBuff
{
	struct tagBuff
	{
		tagBuff()
		{
			for(int i=0;i<512;i++)
				buff[0]=0;
			len=0;
		};
		BYTE buff[512];
		int  len;
	};
public:
	CSerialBuff()
	{
		m_List.RemoveAll();
	};
	virtual ~CSerialBuff()
	{
	};
	void AddBuff(BYTE* buff,int len)
	{
		MWaitAndSignal wait(m_Mutex);
		tagBuff* m_buff=new tagBuff;
		memcpy(m_buff->buff,buff,len);
		m_buff->len=len;
		m_List.AddTail(m_buff);
	};
	BOOL RemoveBuff(BYTE* buff,int* len)
	{
		MWaitAndSignal wait(m_Mutex);
		tagBuff* m_buff=NULL;
		if(m_List.GetCount()>0)
		{
			tagBuff* m_buff=m_List.RemoveHead();
			memcpy(buff,m_buff->buff,m_buff->len);
			*len=m_buff->len;
			return TRUE;
		}
		else
		{
			buff=NULL;
			len=0;
		}
		return FALSE;
	};
protected:
	MMutex m_Mutex;
	CList<tagBuff*, tagBuff*> m_List;
};
class CPTZ_AB2150 : public CPTZPlugBase  
{
public:
	CPTZ_AB2150();
	virtual ~CPTZ_AB2150();
protected:
	CSerialBuff m_SerialBuff;
	DWORD dwSerialRate;
	CString szProtocol;//矩阵协议
	volatile HANDLE _hWriteThreadHandle; //写辅助线程
	volatile bool _fWriteThreadRunFlag;  //线程运行循环标志
	volatile bool _fWriteFlag;//写标志

	volatile PTZACTION m_CtrlID;
protected:
	bool IsWriteThreadRunning();
	virtual DWORD WriteThreadFunc();
	void PrepearProtocol(PTZACTION ctrlID,LPCTSTR pstrFormat, ...);
private: 
	//base function for thread
	#ifdef _MT
	static UINT APIENTRY WriteCommThreadProc(LPVOID lpPara);
	#else
	static DWORD WINAPI WriteCommThreadProc(LPVOID lpPara);
	#endif
//	{
//		return ( (CPTZ_AB2150 *)lpPara )->WriteThreadFunc();
//	};

public:
	LPCTSTR GetMatrixProtocolName();
	bool OpenMatrixSerial(int icom);
	bool CloseMatrixSerial(DWORD dwWaitTime = 1000);
	void login();
	void logout();
	void turn_left(int camera=0,int speed=0);
	void turn_leftup(int camera=0,int speed=0);
	void turn_up(int camera=0,int speed=0);
	void turn_rightup(int camera=0,int speed=0);
	void turn_right(int camera=0,int speed=0);
	void turn_leftdown(int camera=0,int speed=0);
	void turn_down(int camera=0,int speed=0);
	void turn_rightdown(int camera=0,int speed=0);
	void lens_tele(int camera=0,int speed=0);
	void lens_wide(int camera=0,int speed=0);
	void focus_near(int camera=0,int speed=0);
	void focus_far(int camera=0,int speed=0);
	void iris_open(int camera=0,int speed=0);
	void iris_close(int camera=0,int speed=0);
	void auxiliaryswitch_open(int camera=0,int switchno=0);
	void auxiliaryswitch_close(int camera=0,int switchno=0);
	void auxiliaryswitch_allopen(int camera=0,int switchno=1);
	void auxiliaryswitch_allclose(int camera=0,int switchno=0);
	void select_matrix(int matrix);
	void select_camera(int camera,int monitor);
	void select_monitor(int camera,int monitor);
	void select_preset(int camera,int preset);
	void select_monitorlist(int monitor,int listno=0);
	void unselect_monitorlist(int monitor,int listno=0);
	void PTZ_stop();
	void PTZ_Auto(int camera=0,int speed=0);
	void Release();
	void LinkControl(int matrix,int monitor,int camera,int preset,int auxi);
};

#endif // !defined(AFX_PTZ_AB2150_H__82D64381_56C6_4E4B_B61E_DF1D5D53E514__INCLUDED_)

⌨️ 快捷键说明

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