📄 yaan.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 + -