📄 systemconfig.cpp
字号:
// SystemConfig.cpp : implementation file
//
#include "stdafx.h"
#include "netsdkdemo.h"
#include "SystemConfig.h"
#include "NetSDKDemoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSystemConfig dialog
CSystemConfig::CSystemConfig(CWnd* pParent /*=NULL*/)
: CDialog(CSystemConfig::IDD, pParent)
{
m_deviceID = -1;
//{{AFX_DATA_INIT(CSystemConfig)
//}}AFX_DATA_INIT
}
void CSystemConfig::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSystemConfig)
DDX_Control(pDX, IDC_SETDEVICECONFIG1, m_ocx_systemset);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSystemConfig, CDialog)
//{{AFX_MSG_MAP(CSystemConfig)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSystemConfig message handlers
void CSystemConfig::setDeviceId(LONG deviceID)
{
m_deviceID = deviceID;
}
void CSystemConfig::ShowDefModal(In_DeviceInfo& di )
{
m_di = di;
DoModal();
return;
}
BOOL CSystemConfig::OnInitDialog()
{
CDialog::OnInitDialog();
g_SetWndStaticText(this);
m_ocx_systemset.SetConfigPageHide(8);
#ifdef LANG_ENG
m_ocx_systemset.CreateDeviceFram(0);
#else
m_ocx_systemset.CreateDeviceFram(1);
#endif
m_ocx_systemset.SetDeviceShowType((long *)(&m_di));
return TRUE;
}
BEGIN_EVENTSINK_MAP(CSystemConfig, CDialog)
//{{AFX_EVENTSINK_MAP(CSystemConfig)
ON_EVENT(CSystemConfig, IDC_SETDEVICECONFIG1, 13 /* OnBlockAskData */, OnOnBlockAskDataSetdeviceconfig1, VTS_I4 VTS_I4 VTS_PI4 VTS_PI4 VTS_PI4 VTS_PI4)
ON_EVENT(CSystemConfig, IDC_SETDEVICECONFIG1, 8 /* OnSaveDeviceData */, OnOnSaveDeviceDataSetdeviceconfig1, VTS_I4 VTS_I4 VTS_PI4 VTS_I4 VTS_PI4)
ON_EVENT(CSystemConfig, IDC_SETDEVICECONFIG1, 18 /* OnDeviceSetInfo */, OnOnDeviceSetInfoSetdeviceconfig1, VTS_PI4)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
//////////////////////for test///////////////////////
//普通配置
typedef struct {
BYTE Gen_Version[8]; /*!< 版本号 */
WORD LocalNo; /*!< 本机编号 0-998 */
BYTE VideoFmt; /*!< 制式 0-PAL, 1-NTSC, 2-SECAM*/
BYTE Language; /*!< 语言 0-英, 1-中简体, 2-繁体, 3-意大利,4-西班牙, 5-日, 6-俄, 7-法, 8-德*/
BYTE OverWrite; /*!< 硬盘满时 1-覆盖, 0-停止 */
BYTE RecLen; /*!< 录象段长度 1-120 分钟*/
BYTE StandbyTime; /*!< GUI待命时间 0-60 分钟*/
BYTE DateFmt; /*!< 日期格式 0-年月日, 1-月日年, 2-日月年*/
BYTE DateSprtr; /*!< 日期分割符 0-点, 1-杠, 2-斜线*/
BYTE TimeFmt; /*!< 时间格式 0-24小时制, 1-12小时制*/
BYTE Reserved[2]; // 保留位
BYTE ManualStart; // 手动录像启动有效 0-当天, 1-永久有效
BYTE ManualStop; // 手动录像停止有效 0-当天, 1-外部触发
} CONFIG_GENERAL;
//串口配置
typedef struct {
BYTE Com_Version[8]; /*!< 版本号 */
BYTE Function; /*!< 串口功能 0-普通, 1-控制键盘, 2-透明串口, 3-ATM机*/
BYTE DataBits; /*!< 数据位 取值为5,6,7,8 */
BYTE StopBits; /*!< 停止位 0-1位, 1-1.5位, 2-2位 */
BYTE Parity; /*!< 校验位 0-no, 1-odd, 2-even */
DWORD BaudBase; /*!< 波特率 0-9 分别表示: {300,600,1200,2400,4800,9600,19200,38400,57600,115200}*/
} CONFIG_COMM;
//云台配置
typedef struct tagPTZ_ATTR
{
DWORD baudrate; // 具体值参考串口配置
BYTE databits;
BYTE parity;
BYTE stopbits;
} PTZ_ATTR;
typedef struct {
BYTE Ptz_Version[8]; /*!< 版本号 */
PTZ_ATTR PTZAttr; /*!< 串口属性 */
WORD DestAddr; /*!< 目的地址 0-255 */
WORD Protocol; /*!< 协议类型 保存协议的下标,动态变化 */
WORD MonitorAddr; /*!< 监视器地址 0-64 */
BYTE Reserved[10]; /*!< 保留 */
} CONFIG_PTZ;
//录象(定时)配置
#define N_WEEKS 7
#define N_TSECT 6
typedef struct { // 定时时段
BYTE StartHour; //开始时间
BYTE StartMin;
BYTE StartSec;
BYTE EndHour; // 结束时间
BYTE EndMin;
BYTE EndSec;
BYTE State; //第二位是定时,第三位是动态检测,第四位是报警
BYTE Reserve;
} TSECT;
typedef struct {
BYTE RecVersion[8]; /*!< 版本号 */
TSECT Sector[N_WEEKS][N_TSECT]; /*!< 定时时段,一个星期七天,每天N_TSECT时间段 */
BYTE PreRecord; /*!< 预录开关, 0-关闭, 1-打开 */
BYTE Redundancy; /*!< 冗余开关,0-无效, 1-有效 */
BYTE Reserved[2]; /*!< 保留 */
} CONFIG_RECORD;
//图像配置
// 使用中的编码信息结构定义(请用此结构)
typedef struct {
BYTE CapVersion[8]; /*!< 版本号 */
BYTE CifMode; /*!< 分辨率CIF1, CIF2, CIF4 */
BYTE VideoType; /*!< 编码模式:MPEG1 or MPEG4 */
BYTE EncodeMode; /*!< 码流控制 */
BYTE ImgQlty; /*!< 码流的画质 */
BYTE Frames; /*!< 帧率 */
BYTE Brightness; /*!< 亮度 */
BYTE Contrast; /*!< 对比度 */
BYTE Saturation; /*!< 饱和度 */
BYTE Hue; /*!< 色度 */
BYTE AudioEn; /*!< 音频使能 */
BYTE Gain; /*!< 增益 */
BYTE CoverEnable; /*!< 区域遮盖开关 */
RECT Cover; /*!< 区域遮盖范围 */
} OLD_CONFIG_CAPTURE;
//! 拟采用的编码信息结构(暂时没有使用)
enum capture_size_t {
CAPTURE_SIZE_D1,
CAPTURE_SIZE_HD1,
CAPTURE_SIZE_DCIF,
CAPTURE_SIZE_CIF,
CAPTURE_SIZE_QCIF,
CAPTURE_SIZE_VGA,
CAPTURE_SIZE_QVGA,
CAPTURE_SIZE_SVCD,
CAPTURE_SIZE_NR,
};
enum capture_comp_t {
CAPTURE_COMP_DIVX_MPEG4,
CAPTURE_COMP_MS_MPEG4,
CAPTURE_COMP_MPEG2,
CAPTURE_COMP_MPEG1,
CAPTURE_COMP_H263,
CAPTURE_COMP_MJPG,
CAPTURE_COMP_FCC_MPEG4,
CAPTURE_COMP_H264,
CAPTURE_COMP_NR,
};
enum capture_brc_t {
CAPTURE_BRC_CBR,
CAPTURE_BRC_VBR,
CAPTURE_BRC_MBR,
CAPTURE_BRC_NR,
};
typedef struct {
BYTE CapVersion[8]; /*!< 版本号 */
BYTE CifMode; /*!< 分辨率 参照枚举capture_size_t*/
BYTE VideoType; /*!< 编码模式 参照枚举capture_comp_t */
BYTE EncodeMode; /*!< 码流控制 参照枚举capture_brc_t */
BYTE ImgQlty; /*!< 码流的画质 1-6 */
BYTE Frames; /*!< 帧率 档次N制1-6, P制1-5 */
BYTE Brightness; /*!< 亮度 0-100 */
BYTE Contrast; /*!< 对比度 0-100 */
BYTE Saturation; /*!< 饱和度 0-100 */
BYTE Hue; /*!< 色度 0-100 */
BYTE AudioEn; /*!< 音频使能 0-关闭, 1-打开 */
BYTE Gain; /*!< 增益 0-100 */
BYTE CoverEnable; /*!< 区域遮盖开关 0-关闭, 1-打开*/
RECT Cover; /*!< 区域遮盖范围 */
BYTE TimeTilteEn; /*!< 时间标题使能 0-关闭, 1-打开 */
BYTE ChTitleEn; /*!< 通道标题使能 0-关闭, 1-打开 */
BYTE Reserver[2]; /*!< 保留 */
} CONFIG_CAPTURE;
//////////////////////end test///////////////////////
void CSystemConfig::OnOnBlockAskDataSetdeviceconfig1(long DeviceID, long lConfigType, long FAR* lpConfigbuf, long FAR* lpMaxLen, long FAR* lpConfigBufLen, long FAR* lpResult)
{
BOOL nRet;
NET_TIME nTime;
if(DeviceID == 0)
{
return;
}
switch(lConfigType)
{
case 1:
nRet = CLIENT_QueryDeviceTime(DeviceID, &nTime, 2000);
if(nRet)
{
*(LONG *)lpConfigBufLen = sizeof(nTime);//g_TimeOutString(&nTime).GetBuffer(0)
memcpy((char *)lpConfigbuf,(char *)&nTime,sizeof(nTime));
}
else if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
break;
case 2: //系统信息5表示字符信息
nRet = CLIENT_QuerySystemInfo(DeviceID, 5, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 2000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
break;
case 3:
nRet = CLIENT_QueryConfig(DeviceID, 10, (char *)lpConfigbuf,*(LONG *)lpMaxLen, (int *)lpConfigBufLen, 2000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
break;
case 4:
nRet = CLIENT_QueryComProtocol(DeviceID, 0, (char *)lpConfigbuf,*(LONG *)lpMaxLen, (int *)lpConfigBufLen, 2000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
break;
case 5:
nRet = CLIENT_QueryComProtocol(DeviceID, 1, (char *)lpConfigbuf,*(LONG *)lpMaxLen, (int *)lpConfigBufLen, 2000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
break;
case 6:
ZeroMemory(lpConfigbuf, *lpMaxLen);
nRet = 1;
// nRet = CLIENT_QueryConfig(DeviceID, 210, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 2000);
break;
case 31:
case 33:
case 34:
nRet = CLIENT_QueryConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 10000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
{
//for test
char temp[1000] = {0};
memcpy(temp, lpConfigbuf, *lpConfigBufLen);
//end test
}
break;
case 50:
nRet = CLIENT_QueryLog(DeviceID, (char *)lpConfigbuf,*(LONG *)lpMaxLen, (int *)lpConfigBufLen);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
//for test
//end test
break;
case 51:
ZeroMemory(lpConfigbuf,*lpMaxLen);
nRet = 1;
//nRet = CLIENT_QueryConfig(DeviceID, 200, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 10000);
break;
/////////////////////////////////for test////////////////////////
case 20:
nRet = CLIENT_QueryConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
if (*lpConfigBufLen == sizeof(CONFIG_GENERAL))
{
CONFIG_GENERAL *temp = (CONFIG_GENERAL *)lpConfigbuf;
int i = 0;
}
break;
case 21:
nRet = CLIENT_QueryConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
if (*lpConfigBufLen == sizeof(CONFIG_COMM))
{
CONFIG_COMM *temp = (CONFIG_COMM *)lpConfigbuf;
int i = 0;
}
break;
case 23:
nRet = CLIENT_QueryConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
if (*lpConfigBufLen == 16 * sizeof(CONFIG_RECORD))
{
int length = *lpConfigBufLen;
while (length/sizeof(CONFIG_RECORD) > 0)
{
CONFIG_RECORD *temp = (CONFIG_RECORD *)lpConfigbuf;
length -= sizeof(CONFIG_RECORD);
}
}
break;
case 24:
nRet = CLIENT_QueryConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
if (*lpConfigBufLen == 16 * sizeof(OLD_CONFIG_CAPTURE))
{
int length = *lpConfigBufLen;
while (length/sizeof(CONFIG_RECORD) > 0)
{
OLD_CONFIG_CAPTURE *temp = (OLD_CONFIG_CAPTURE *)lpConfigbuf;
length -= sizeof(CONFIG_RECORD);
}
}
break;
case 25:
nRet = CLIENT_QueryConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
if (*lpConfigBufLen == 16 * sizeof(CONFIG_PTZ))
{
int length = *lpConfigBufLen;
while (length/sizeof(CONFIG_PTZ) > 0)
{
CONFIG_PTZ *temp = (CONFIG_PTZ *)lpConfigbuf;
length -= sizeof(CONFIG_PTZ);
}
}
break;
//////////////////////////////test end///////////////////////////////
default:
if(lConfigType >= 20 && lConfigType <= 27)
{
nRet = CLIENT_QueryConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, *(LONG *)lpMaxLen, (int *)lpConfigBufLen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
}
}
if(nRet)
{
*lpResult = 1;
}
else
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
*lpResult = 0;
}
}
void CSystemConfig::OnOnSaveDeviceDataSetdeviceconfig1(long DeviceID, long lConfigType, long FAR* lpConfigbuf, long lConfigbuflen, long FAR* lpResult)
{
BOOL nRet = false;
if(DeviceID < 0)
{
return;
}
switch(lConfigType)
{
case 1:
nRet = CLIENT_SetupDeviceTime(DeviceID, (NET_TIME *)lpConfigbuf);
break;
case 3:
nRet = 1;
nRet = CLIENT_SetupConfig(DeviceID, 10, (char *)lpConfigbuf, lConfigbuflen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
break;
case 31:
case 33:
case 34:
nRet = CLIENT_SetupConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, lConfigbuflen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
break;
case 51:
nRet = 1;
//nRet = CLIENT_SetupConfig(DeviceID, 200, (char *)lpConfigbuf, lConfigbuflen, 10000);
break;
default:
if((lConfigType >= 20 && lConfigType <= 27))
{
nRet = CLIENT_SetupConfig(DeviceID, lConfigType - 20, (char *)lpConfigbuf, lConfigbuflen, 5000);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
}
}
if(nRet)
{
*lpResult = 1;
}
else
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
*lpResult = 0;
TRACE("CONFIG ERROR %d",lConfigType );
}
}
void CSystemConfig::OnOnDeviceSetInfoSetdeviceconfig1(long FAR* lpInfoType)
{
if(!*lpInfoType)
{
CDialog ::OnCancel();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -