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

📄 deviceworkstate.cpp

📁 大华DVR的客户端开发包和Demo,从网上是下载不到的。
💻 CPP
字号:
   // DeviceWorkState.cpp : implementation file
//

#include "stdafx.h"
#include "netsdkdemo.h"
#include "DeviceWorkState.h"
#include "NetSDKDemoDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDeviceWorkState dialog


CDeviceWorkState::CDeviceWorkState(CWnd* pParent /*=NULL*/)
	: CDialog(CDeviceWorkState::IDD, pParent)
{
	m_dev = 0;
	//{{AFX_DATA_INIT(CDeviceWorkState)
	//}}AFX_DATA_INIT
}


void CDeviceWorkState::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDeviceWorkState)
	DDX_Control(pDX, IDC_CHANSEL_COMBO, m_chansel);
	DDX_Control(pDX, IDC_DISKSEL_COMBO, m_disksel);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDeviceWorkState, CDialog)
	//{{AFX_MSG_MAP(CDeviceWorkState)
	ON_CBN_SELCHANGE(IDC_DISKSEL_COMBO, OnSelchangeDiskselCombo)
	ON_CBN_SELCHANGE(IDC_CHANSEL_COMBO, OnSelchangeChanselCombo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDeviceWorkState message handlers

void CDeviceWorkState::SetDevice(DeviceNode *dev)
{
	m_dev = dev;
}

BOOL CDeviceWorkState::OnInitDialog() 
{
	CDialog::OnInitDialog();

	g_SetWndStaticText(this);
	
	CString nStr, subStr;
	
	if(!m_dev)
	{
		return TRUE;
	}

	memset((char *)&m_workState, 0, sizeof(NET_DEV_WORKSTATE));
	BOOL nRet = CLIENT_GetDEVWorkState(m_dev->LoginID, &m_workState);
	if(!nRet)
	{
		((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
		return FALSE;
	}
	
	CString str = "";
	CString strDev;
	CString strTmp;
	switch(m_workState.dwDeviceStatic) 
	{
	case 0:
		strDev.Format("Device status: Normal\n");
		break;
	case 1:
		strDev.Format("Device status: CPU too busy\n");
		break;
	case 2:
		strDev.Format("Device status: Hardware error\n");
		break;
	default:
		break;
	}
	CString strDsk;
	strDsk.Format("Disk num: %d\n", m_dev->Info.byDiskNum);
	strDev += strDsk;
	str += strDev;

	CString strLoc;
	if (m_workState.dwLocalDisplay)
	{
		strLoc.Format("Local display status: Normal\n");
	}
	else
	{
		strLoc.Format("Local display status: Error\n");
	}
	str += strLoc;

	CString strAmInt = "Alarm input status: ";
	CString strAmOpt = "Alarm output status: ";
	for (int i=0; i<m_dev->Info.byAlarmInPortNum; i++)
	{
		strTmp.Format(" %d", m_workState.byAlarmInStatic[i]);
		strAmInt += strTmp;
	}
	for (int j=0; j<m_dev->Info.byAlarmOutPortNum; j++)
	{
		strTmp.Format(" %d", m_workState.byAlarmOutStatic[j]);
		strAmOpt += strTmp;
	}
	strAmInt = strAmInt + "\n";
	strAmOpt = strAmOpt + "\n";

	str += strAmInt;
	str += strAmOpt;
	
	GetDlgItem(IDC_DEV_STATUS)->SetWindowText(str);

	m_disksel.Clear();
	CString strItem;
	for (int k=0; k<m_dev->Info.byDiskNum; k++)
	{
		strItem.Format("Disk %d", k);
		m_disksel.InsertString(k, strItem);
	}
		
	m_chansel.Clear();
	for (int x=0; x<m_dev->Info.byChanNum; x++)
	{
		strItem.Format("Chnl %d", x);
		m_chansel.InsertString(x, strItem);
	}

	if (m_disksel.GetCount() > 0)
	{
		m_disksel.SetCurSel(0);
		OnSelchangeDiskselCombo();
	}
	if (m_chansel.GetCount() > 0)
	{
		m_chansel.SetCurSel(0);
		OnSelchangeChanselCombo();
	}


/*
	//设备状态和显示状态
	nStr.Format(MSG_WORKSTATE_CLIENTSTATE);
	switch(workState.dwDeviceStatic)
	{
	case 0:
		nStr += MSG_WORKSTATE_NORMAL;
		break;
	case 1:
		nStr += (MSG_WORKSTATE_CPUTOOHIGH);
		break;
	case 2:
		nStr += (MSG_WORKSTATE_HARDWAREEROR);
		break;
	default:
		nStr += (MSG_WORKSTATE_UNKNOWNEEROR);
		break;		
	}
	nStr += MSG_WORKSTATE_DISPLAYSTATE;
	nStr += ((workState.dwLocalDisplay == 0)? MSG_WORKSTATE_NORMAL : MSG_WORKSTATE_UNNORMAL);
	
	GetDlgItem(IDC_STATEINFO1)->SetWindowText(nStr.GetBuffer(0));

	//录像通道
	nStr.Format(MSG_WORKSTATE_RECORDCHL);
	for(i = 0; i < MAX_CHANNUM; i ++)
	{
		if(workState.stChanStatic[i].byRecordStatic)
		{
			subStr.Format("%d   ", i + 1);
			nStr += subStr;
		}
	}
	GetDlgItem(IDC_STATEINFO2)->SetWindowText(nStr.GetBuffer(0));

	//丢失通道
	nStr.Format(MSG_WORKSTATE_VIDEOLOSTCHL);
	for(i = 0; i < MAX_CHANNUM; i ++)
	{
		if(nWorkState.stChanStatic[i].bySignalStatic)
		{
			subStr.Format("%d   ", i + 1);
			nStr += subStr;
		}
	}
	GetDlgItem(IDC_STATEINFO3)->SetWindowText(nStr.GetBuffer(0));

	//硬件异常通道
	nStr.Format(MSG_WORKSTATE_HARDWAREERRCHL);
	for(i = 0; i < MAX_CHANNUM; i ++)
	{
		if(nWorkState.stChanStatic[i].byHardwareStatic)
		{
			subStr.Format("%d   ", i + 1);
			nStr += subStr;
		}
	}
	GetDlgItem(IDC_STATEINFO4)->SetWindowText(nStr.GetBuffer(0));

	//输入端口报警
	nStr.Format(MSG_WORKSTATE_ALARMINPUT);
	for(i = 0; i < MAX_ALARMIN; i ++)
	{
		if(nWorkState.byAlarmInStatic[i])
		{
			subStr.Format("%d   ", i + 1);
			nStr += subStr;
		}
	}
	GetDlgItem(IDC_STATEINFO5)->SetWindowText(nStr.GetBuffer(0));
	
	//输出端口报警
	nStr.Format(MSG_WORKSTATE_ALARMOUTPUT);
	for(i = 0; i < MAX_ALARMOUT; i ++)
	{
		if(nWorkState.byAlarmOutStatic[i])
		{
			subStr.Format("%d   ", i + 1);
			nStr += subStr;
		}
	}
	GetDlgItem(IDC_STATEINFO6)->SetWindowText(nStr.GetBuffer(0));
	
*/
	return TRUE;
}

void CDeviceWorkState::OnSelchangeDiskselCombo() 
{
	int dskIndex = m_disksel.GetCurSel();
	CString strInfo = "";
	strInfo.Format("Size: %d, Remain: %d\n", 
				m_workState.stHardDiskStatic[dskIndex].dwVolume, 
				m_workState.stHardDiskStatic[dskIndex].dwFreeSpace);
	CString strDskSt = "";
	switch(m_workState.stHardDiskStatic[dskIndex].dwStatus)
	{
	case 0:
		strDskSt.Format("Work status: Sleeping\n");
		break;
	case 1:
		strDskSt.Format("Work status: Working\n");
		break;
	default:
		break;
	}
	strInfo += strDskSt;
	GetDlgItem(IDC_DISK_STATUS)->SetWindowText(strInfo);
}

void CDeviceWorkState::OnSelchangeChanselCombo() 
{
	int chlIndex = m_chansel.GetCurSel();
	CString strInfo = "";
	strInfo.Format("Link number: %d, Bit rate: %d\n",
				m_workState.stChanStatic[chlIndex].dwLinkNum,
				m_workState.stChanStatic[chlIndex].dwBitRate);
	CString strRcd = "";
	switch(m_workState.stChanStatic[chlIndex].byRecordStatic)
	{
	case 0:
		strRcd.Format("Record status: Not Recording\n");
		break;
	case 1:
		strRcd.Format("Record status: Recording(Manual)\n");
		break;
	case 2:
		strRcd.Format("Record status: Recording(Auto)\n");
	default:
		break;
	}
	strInfo += strRcd;

	CString strSgn = "";
	switch(m_workState.stChanStatic[chlIndex].bySignalStatic)
	{
	case 0:
		strSgn.Format("Signal status: Normal\n");
		break;
	case 1:
		strSgn.Format("Signal status: Video lost\n");
		break;
	default:
		break;
	}
	strInfo += strSgn;

	CString strHdw = "";
	switch(m_workState.stChanStatic[chlIndex].byHardwareStatic)
	{
	case 0:
		strHdw.Format("Hardware status: Normal\n");
		break;
	case 1:
		strHdw.Format("Hardware status: Error(check DSK)\n");
		break;
	default:
		break;
	}
	strInfo += strHdw;
	GetDlgItem(IDC_CHAN_STATUS)->SetWindowText(strInfo);
}

⌨️ 快捷键说明

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