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

📄 yaan.cpp

📁 本程序提供了控制亚安球型摄像机的功能,中文界面
💻 CPP
字号:
//--------------------------------------------------------------------------
//名称:           亚安球控制插件
//版权:           深圳图敏视讯
//日期:           2002.10.15
//编写:           周征湘
//PlugInsName     "亚安球型摄像机"

//---------------------------------------------------------------------------

#include "stdafx.h"
#include "YaAn.h"

#include "ConType.h"
#include "Pcomm.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}


void    GetPlugInsName(LPTSTR pName,short* Type)
{
	//strcpy(pName,"亚安球型摄像机");
	strcpy(pName,"YaAn Global Camera");
	*Type=3;
}
//---------------------------------------------------------------------------
bool send_char(int comm,BYTE cha)
{
	int nWrite;
	sio_SetWriteTimeouts ( comm, 20 );
	nWrite = sio_putch ( comm,cha);
	if (nWrite !=  1 )
		return false;//nWrite;//false;
	return true;
}
//---------------------------------------------------------------------------
//BYTE
int receive_char(int comm)
{
	int ch;
	ch = sio_getch( comm );
	if (ch < 0)
	{
		return ch;
	}
	return ch;
}

//--------------------------------------------------------------------------

int   Open(BYTE port)  //,int rate,int verify);
{
	int result=sio_open(port);
	if(result!=SIO_OK)
		return false;
	sio_ioctl(port,B4800, P_NONE | BIT_8 | STOP_1);     //4800 ,n,8 ,1
	sio_flush(port,2);
	result=0<<12;
	result+=4800;
	return result;
}
//---------------------------------------------------------------------------
int   GetCommStatus(BYTE port)
{
	int result;
	result=0<<12;
	result+=4800;
	return result;
}
//--------------------------------------------------------------------------

bool   Close(BYTE port)
{
	int result=sio_close(port);
	if(result!=SIO_OK)
	{		
		return false;
	}
	return true;
}
//---------------------------------------------------------------------------

bool  SendCode(BYTE Port,unsigned short Para2,unsigned short Fun,unsigned short Para1)
{
	
	//  Port Para2 Fun Para1
	//  Para1 只在预置和调用时用
	//  Para2 地址    Fun  操作码
	
	
	BYTE d[10];
	d[0]=0x02;   // 命令起始符
	d[1]=(unsigned char)Para2;  // 地址
    
	BYTE m_CurOperCode =0;
	BYTE count = 6;


	if(Fun==CON_CANCEL)      // CON_CANCEL --13
	{
		//  终止动作  根据上一次的操作采取不同的停止代码
		switch (m_CurOperCode)
		{
		default:
			{
			d[2]=0x01;    // Stop
			d[3]=0x00;
			d[4]=0x00;
			break;
			}
		}
	}
	else
	{
		switch (Fun)
		{
		case CON_UP:
			d[2]=0x01;    // 上
			d[3]=0x04;
			d[4]=0x00;
			m_CurOperCode=CON_UP;
			break;
		case CON_DOWN: // 下
			d[2]=0x01;
			d[3]=0x08;
			d[4]=0x00;		
			m_CurOperCode=CON_DOWN;
			break;
		case CON_LEFT: // 左
			d[2]=0x01;
			d[3]=0x02;
			d[4]=0x00;
			m_CurOperCode=CON_LEFT;
			break;
		case CON_RIGHT: // 右
			d[2]=0x01;
			d[3]=0x01;
			d[4]=0x00;
			m_CurOperCode=CON_RIGHT;
			break;
		case CON_OPEN_O: // 光圈大
			d[2]=0x01;
			d[3]=0x00;
			d[4]=0x01;
			m_CurOperCode=CON_OPEN_O;
			break;
		case CON_OPEN_T:  // 光圈小
			d[2]=0x01;
			d[3]=0x00;
			d[4]=0x02;
			m_CurOperCode=CON_OPEN_T;
			break;
		case CON_FAR_O:  // 变倍远
			d[2]=0x01;
			d[3]=0x20;
			d[4]=0x00;
			m_CurOperCode=CON_FAR_O;
			break;
		case CON_FAR_T:   // 变倍近
			d[2]=0x01;
			d[3]=0x10;
			d[4]=0x00;			
			m_CurOperCode=CON_FAR_T;
			break;
		case CON_FOCUS_O: // 聚焦+
			d[2]=0x01;
			d[3]=0x40;
			d[4]=0x00;
			m_CurOperCode=CON_FOCUS_O;
			break;
		case CON_FOCUS_T: // 聚焦-
			d[2]=0x01;
			d[3]=0x80;
			d[4]=0x00;
			m_CurOperCode=CON_FOCUS_T;
			break;
		case CON_AUTO_O: // 自动开   (自动)
			d[2]=0x0f;      // 15
			d[3]=0x11;      // Speed 0~ 255
 			d[4]=0x01;      // Limits 1/2 
			d[5]=0x01;      // Start 
            count = 7;
			m_CurOperCode=CON_AUTO_O;
			break;
		case CON_AUTO_T:   //自动关
			d[2]=0x0f;      // 15
			d[3]=0x11;      // Speed 0~ 255
 			d[4]=0x01;      // Limits 1/2 
			d[5]=0x00;      // Start 
            count = 7;
			m_CurOperCode=CON_AUTO_T;
			break;
		case CON_PRESET:  //预置
			d[2]=0x05;
			d[3]=(unsigned char)Para1;
            count = 5;
			m_CurOperCode=CON_PRESET;
			break;
		case CON_CALLNO:  //调用
			d[2]=0x02;
			d[3]=(unsigned char)Para1;
            count = 5;
			m_CurOperCode=CON_CALLNO;
			break;
		case CON_BRUSH_O: //雨刮开  (雨刮)
		case CON_BRUSH_T:  //雨刮关
		case CON_LAMP_O:  //灯光开  (灯光)
		case CON_LAMP_T:   //灯光关
		default:
			m_CurOperCode=0X00;
			return false;
		}
	}
	int i;
	d[count-1]=0;
	for(i=0;i<count-1;i++)
	{
		d[count-1] +=d[i];
	}
	for ( i=0;i<count;i++)	
		send_char(Port,d[i]);	

    BYTE PP[6];
	PP[0] = 0x02;
	PP[1]=(unsigned char)Para2;  // 地址
	PP[2]=0x0e;       // 14
	PP[3]=0x90;       // Pan Speed  0~255
	PP[4]=0x90;       // Tilt Speed 0~255
	PP[5]=PP[0]+PP[1]+PP[2]+PP[3]+PP[4];
	for ( i=0;i<6;i++)	
		send_char(Port,PP[i]);	


	return true;
}



⌨️ 快捷键说明

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