📄 dvsusernet.cpp
字号:
#include "stdafx.h"
#include "DvsUser.h"
#include "DvsUserDlg.h"
#include "RecvCmdThread.h"
#include "WorkDevice.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_PROGRAMEXIT WM_USER+2001
#define WM_QUERYSWITCH WM_USER+2002
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::CmdListenProc()
{
if(cmdListenSock.Accept(ctrlSock))
{
recvCmdThread = new CRecvCmdThread();
recvCmdThread->Create(this);
recvCmdThread->Resume();
}
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::DataListenProc()
{
CBlockSocket* pSockTemp = new CBlockSocket();
if(dataListenSock.Accept(*pSockTemp))
{
for(int i=0; i<4; i++)
{
if(!pWork[i]->m_bStart == TRUE)
{
pWork[i]->pDataSock = pSockTemp;
CreateWorkDevice(i);
return;
}
}
}
delete pSockTemp;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::CreateWorkDevice(int index)
{
if(pCurrentView)
{
pWork[index]->SetViewWindow(pCurrentView, m_nCurrentView);
}
else{
pWork[index]->SetViewWindow(&m_view1, m_nCurrentView);
}
pWork[index]->Start();
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnDestroyWorkDevice(WPARAM wParam, LPARAM lParam)
{
CWorkDevice* pDevice = (CWorkDevice*)wParam;
if(pDevice)
{
for(int i=0; i<4; i++)
{
if(pWork[i])
{
if(pWork[i] == pDevice)
{
pWork[i]->Destroy();
if(!m_bExit)
{
pWork[i]->Init();
}
}
}
}
}
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::RecvCmdProc()
{
if(!ctrlSock.RecvProc(&CMD, sizeof(CMD_SIGNAL)))
{
if(!m_bExit)
{
m_bExit = TRUE;
PostMessage(WM_PROGRAMEXIT);
}
::Sleep(200);
return;
}
if(CMD.dwFlag == 0x7FFFFFFF)
{
if(!m_bExit)
{
OnDealMessage(&CMD);
}
}
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::OnDealMessage(CMD_SIGNAL* pCmd)
{
switch(pCmd->dwMainCmd)
{
case VIDEOSOURCE:
OnRecvCardInfo(pCmd);
break;
case VIDEOSWITCH:
OnRecvSwitchInfo(pCmd);
break;
case ALERTSIGNAL:
OnRecvAlertSignal(pCmd);
break;
case PCMESSAGE:
OnRecvEventMessage(pCmd);
break;
case RECYCLEMESSAGE:
OnRecvRecycleMessage();
break;
}
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnRecvCardInfo(CMD_SIGNAL* pCmd)
{
static BOOL s_bFirstVideoList = TRUE;
if(ctrlSock.RecvProc(CARD, sizeof(CARDINFO)*32))
{
if(s_bFirstVideoList == TRUE)
{
AddVideoList();
s_bFirstVideoList = FALSE;
}
}
return 0;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnRecvSwitchInfo(CMD_SIGNAL* pCmd)
{
if(!ctrlSock.RecvProc(&SWITCH, sizeof(SWITCHINFO)))
return 0;
PostMessage(WM_QUERYSWITCH);
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnRecvAlertSignal(CMD_SIGNAL* pCmd) //开始报警处理
{
ALERTINFO info;
CString strCard;
CString strBrance;
DWORD dwGUID;
INT iWindow = 0xff;
if(!ctrlSock.RecvProc(&info, sizeof(ALERTINFO))) return 0;
strCard = info.szCardIP;
dwGUID = ::SetGUID(strCard);
/////////////////////////////////////////////////////////////////////////
CString strSoundFile;
strSoundFile.Format("%s\\wave\\%d.wav", m_strModulePath, info.dwActiveBrance+1);
::PlaySound(NULL, NULL, SND_ASYNC);
::PlaySound(strSoundFile, NULL, SND_FILENAME|SND_ASYNC|SND_LOOP);
//////////////////////////////////////////////////////////////////////////
/*LOG FILE*/
m_Log.WriteLog(CLog::ALERT, CLIENT.szUserName, CLIENT.dwUserPriority);
//////////////////////////////////////////////////////////////////////////
for(int i=0; i<4; i++)
{
if(LINK[i].bLinkState == TRUE)
{
strCard = CARD[LINK[i].dwCard].szCardIP;
if(dwGUID == ::SetGUID(strCard))
{
switch (i) {
case 0:
m_view1_bar.SetAlert();
LINK[0].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view1_bar.SetTitle(strBrance);
iWindow = 0;
break;
case 1:
m_view2_bar.SetAlert();
LINK[1].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view2_bar.SetTitle(strBrance);
iWindow = 1;
break;
case 2:
m_view3_bar.SetAlert();
LINK[2].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view3_bar.SetTitle(strBrance);
iWindow = 2;
break;
case 3:
m_view4_bar.SetAlert();
LINK[3].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view4_bar.SetTitle(strBrance);
iWindow = 3;
break;
}
/////////////////////////////////报警时自动存盘设置///////////////////////////////////////////
for(i=0; i<4; i++)
{
if(pWork[i]->m_nViewWindow == iWindow)
{
if(pWork[i]->m_bStart == TRUE)
{
if(pWork[i]->m_bSaveFile != TRUE) //如果标志和以前相同则不设
{
pWork[i]->SetSaveFlag(TRUE);
break;
}
}
}
}
/////////////////////////////////报警时自动存盘设置///////////////////////////////////////////
}
}
}
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnRecvRecycleMessage()
{
ALERTINFO info;
CString strCard;
CString strBrance;
DWORD dwGUID;
if(!ctrlSock.RecvProc(&info, sizeof(ALERTINFO))) return 0;
strCard = info.szCardIP;
dwGUID = ::SetGUID(strCard);
for(int i=0; i<4; i++)
{
if(LINK[i].bLinkState == TRUE)
{
strCard = CARD[LINK[i].dwCard].szCardIP;
if(dwGUID == ::SetGUID(strCard))
{
switch(i){
case 0:
LINK[0].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view1_bar.SetTitle(strBrance);
break;
case 1:
LINK[1].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view2_bar.SetTitle(strBrance);
break;
case 2:
LINK[2].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view3_bar.SetTitle(strBrance);
break;
case 3:
LINK[3].dwBrance = info.dwActiveBrance;
strBrance = CARD[LINK[i].dwCard].Brance[LINK[i].dwBrance].szBranceName;
m_view4_bar.SetTitle(strBrance);
break;
}
}
}
}
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnRecvEventMessage(CMD_SIGNAL* pCmd) //结束报警处理
{
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendVideoStart(DWORD dwCardIndex, DWORD dwActiveBrance)
{
CString strTmp; CMD_SIGNAL myCmd;
strTmp = CARD[dwCardIndex].szCardIP;
AV.dwGUID = SetGUID(strTmp);
AV.dwActiveBrance = dwActiveBrance;
AV.dwUserPriority = CLIENT.dwUserPriority;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = VIDEOSTART;
myCmd.dwSubCmd = 0;
myCmd.dwLength = sizeof(AVINFO);
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
if(!ctrlSock.SendProc(&AV, sizeof(AVINFO)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendVideoStop(DWORD dwCardIndex, DWORD dwActiveBrance)
{
CString strTmp; CMD_SIGNAL myCmd;
strTmp = CARD[dwCardIndex].szCardIP;
AV.dwGUID = SetGUID(strTmp);
AV.dwActiveBrance = dwActiveBrance;
AV.dwUserPriority = CLIENT.dwUserPriority;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = VIDEOSTOP;
myCmd.dwSubCmd = 0;
myCmd.dwLength = sizeof(AVINFO);
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
if(!ctrlSock.SendProc(&AV, sizeof(AVINFO)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendDeviceCtrl(DEVICEINFO* pDevice)
{
CMD_SIGNAL myCmd;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = DEVICECTRL;
myCmd.dwSubCmd = 0;
myCmd.dwLength = sizeof(DEVICEINFO);
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
if(!ctrlSock.SendProc(pDevice, sizeof(DEVICEINFO)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendLamp(ALERTINFO* pAlert)
{
CMD_SIGNAL myCmd;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = LAMPCTRL;
myCmd.dwSubCmd = 0;
myCmd.dwLength = sizeof(ALERTINFO);
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
if(!ctrlSock.SendProc(pAlert, sizeof(ALERTINFO)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendSwitchInfo()
{
CMD_SIGNAL myCmd;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = VIDEOSWITCH;
myCmd.dwSubCmd = QUERY_SWITCH;
myCmd.dwLength = 0;
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendPlaceDefeat(BOOL bSetAlert)
{
CMD_SIGNAL myCmd;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = PLACEDEFEAT;
myCmd.dwSubCmd = bSetAlert;
myCmd.dwLength = 0;
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendRecycleView(RECYCLEINFO* pView)
{
CMD_SIGNAL myCmd;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = RECYCLEVIEW;
myCmd.dwSubCmd = 0;
myCmd.dwLength = sizeof(RECYCLEINFO);
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
if(!ctrlSock.SendProc(pView, sizeof(RECYCLEINFO)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendVideoRate(INITINFO* pInit)
{
CMD_SIGNAL myCmd;
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = VIDEORATE;
myCmd.dwSubCmd = 0;
myCmd.dwLength = sizeof(INITINFO);
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
if(!ctrlSock.SendProc(pInit, sizeof(INITINFO)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
INT CDvsUserDlg::OnSendSPConfig(DWORD dwCardGUID, INT iBaudRate)
{
CMD_SIGNAL myCmd;
INITINFO init;
init.dwBmpSize = dwCardGUID;//编码器GUID
init.dwColor = 0; //图象颜色
init.dwBaudRate = iBaudRate;//波特率
init.dwByteSize = 8; //数据位
init.dwParity = 0; //奇偶校验
init.dwStopBits = 1; //停止位
init.dwReserve1 = 1; //开始位
init.dwReserve2 = 0; //保留
myCmd.dwFlag = CLIENT2SERVER;
myCmd.dwMainCmd = SPCONFIG;
myCmd.dwSubCmd = 0;
myCmd.dwLength = sizeof(INITINFO);
if(!ctrlSock.SendProc(&myCmd, sizeof(CMD_SIGNAL)))
return 0;
if(!ctrlSock.SendProc(&init, sizeof(INITINFO)))
return 0;
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -