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