📄 gtmpegwnd.cpp
字号:
else
{
m_bCompressCard=FALSE;
for(int i=0;i<theApp.m_nChannels;i++)
g_pDevice[i]->StopCheck();
if(m_pLogoObject==NULL)
m_pLogoObject=new CImageObject(m_sLogoPath);
InvalidateRect(rect);
}
}
}
CDialog::OnLButtonDblClk(nFlags, point);
}
///////////////////////////////
//
///////////////////////////////
void CGtMpegWnd::DblkVideoPos(CWnd *CtlWnd)
{
if(CtlWnd!=NULL)
{
UINT ID=CtlWnd->GetDlgCtrlID();
int nChannel=ID-IDC_VIDEO_POS;
if(nChannel>=theApp.m_nChannels)
return;
for(DWORD i=0;i<g_dwNumberOfSlots;i++)
{
m_nChannel[i]=0;
((CButton *)GetDlgItem(IDC_CHANNEL0+i))->SetCheck(m_nChannel[i]);
}
m_nChannel[nChannel]=1;
((CButton *)GetDlgItem(IDC_CHANNEL0+nChannel))->SetCheck(m_nChannel[nChannel]);
if(nChannel<8)
{
if(g_pDevice[nChannel]->m_bRePlay)
return;
if(m_nPicNumX!=1&&m_nPicNumY!=1)
{
m_nPicNumX=1;
m_nPicNumY=1;
StopDisplayAll();
AdjustMpegWindow(nChannel);
g_pDevice[nChannel]->StartDisplay();
}
else
{
if(g_dwNumberOfSlots<=8&&g_dwNumberOfSlots>4)
{
m_nPicNumX=3;
m_nPicNumY=3;
}
if(g_dwNumberOfSlots<=4&&g_dwNumberOfSlots>1)
{
m_nPicNumX=2;
m_nPicNumY=2;
}
if(g_dwNumberOfSlots<2)
{
m_nPicNumX=1;
m_nPicNumY=1;
}
StopDisplayAll();
AdjustMpegWindow();
for(int i=0;i<m_nPicNumX*m_nPicNumY;i++)
{
if(i<theApp.m_nChannels)
{
if(g_pDevice[i]->m_bRePlay)
g_pDevice[i]->PlaybackAdjust();
else
g_pDevice[i]->StartDisplay();
}
}
}
}
}
}
///////////////////////////////
//
///////////////////////////////
BOOL CGtMpegWnd::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
NMHDR *Msg=(NMHDR *)lParam;
BYTE byCommand;
if(wParam==_CTRL_INFO)
{
switch(Msg->code)
{
case _CTRL_UP_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","抬头",0x45);
break;
case _CTRL_DOWN_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","低头",0x44);
break;
case _CTRL_LEFT_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","左转",0x43);
break;
case _CTRL_RIGHT_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","右转",0x42);
break;
case _CTRL_TRUN_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","自动",0x40);
break;
case _CTRL_UP_STOP:
case _CTRL_DOWN_STOP:
case _CTRL_RIGHT_STOP:
case _CTRL_LEFT_STOP:
case _CTRL_TRUN_STOP:
case _PLATE_UP_STOP:
case _PLATE_DOWN_STOP:
case _PLATE_LEFT_STOP:
case _PLATE_RIGHT_STOP:
case _PLATE_LEFT_DOWN_STOP:
case _PLATE_RIGHT_DOWN_STOP:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","停止",0x41);
break;
case _PLATE_STOP:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","K1断开",0x68);
break;
case _PLATE_UP_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","光圈增大",0x49);
break;
case _PLATE_DOWN_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","光圈减少",0x4a);
break;
case _PLATE_LEFT_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","短焦变倍",0x4b);
break;
case _PLATE_LEFT_DOWN_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","长焦变倍",0x4c);
break;
case _PLATE_RIGHT_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","聚焦前移",0x4d);
break;
case _PLATE_RIGHT_DOWN_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","聚焦后移",0x4e);
break;
case _PLATE_START:
byCommand=(BYTE)AfxGetApp()->GetProfileInt("控制","K1接通",0x67);
break;
}
SendCommand(byCommand);
return TRUE;
}
int nID=(int)wParam;
if(nID==IDC_COMM_EVENT)
{
switch(Msg->code)
{
case COM_RXCHAR_DECTED:
OnComRxcharDected();
break;
}
return TRUE;
}
if(wParam==_ALARM_ZONE_INFO)
{
NMHDR *Msg=(NMHDR *)lParam;
int nChunnel=HIWORD(Msg->code);
int nStates=LOWORD(Msg->code);
int nZone=Msg->idFrom-IDC_ZONE_STATES_1;
BYTE byCommand[5];
int nTmp=GetZonesStates(nChunnel);
BYTE byTmp=1;
byCommand[0]=(BYTE)0xcc;
byCommand[1]=(BYTE)nChunnel;
byCommand[2]=LOBYTE(nTmp);
byCommand[3]=HIBYTE(nTmp);
if(nZone>=0&&nZone<=7)
{
byTmp<<=nZone;
if(nStates==0)
{
byTmp=~byTmp;
byCommand[2]&=byTmp;
}
else
{
byCommand[2]|=byTmp;
}
}
else
{
byTmp<<=(nZone-8);
if(nStates==0)
{
byTmp=~byTmp;
byCommand[3]&=byTmp;
}
else
{
byCommand[3]|=byTmp;
}
}
byCommand[4]=(BYTE)0x10;
WriteCommCommand(byCommand,5);
//没道理
//WriteCommCommand(byCommand,5);
//
SetZonesStates(nChunnel,nZone,nStates);
CZone *pZone=GetChunnel(nChunnel)->GetZone(nZone);
if(pZone!=NULL)
{
if(pZone->m_nType!=7&&pZone->m_nType!=3)
{
if(nStates==0)
WriteAlarmInfo(nChunnel,nZone,6,COleDateTime::GetCurrentTime());
else
WriteAlarmInfo(nChunnel,nZone,5,COleDateTime::GetCurrentTime());
}
}
return TRUE;
}
if(wParam==_ALARM_SECONDARY_INFO)
{
int nChunnel=HIWORD(Msg->code);
int nStates=LOWORD(Msg->code);
int nSecondary=Msg->idFrom-IDC_SECONDARY_STATES_1;
int nTmp=GetSecondarysStates(nChunnel);
BYTE byTmp=1;
BYTE byCommand[3];
byCommand[0]=(BYTE)0xdd;
byCommand[1]=(BYTE)nChunnel;
byCommand[2]=(BYTE)nTmp;
byTmp<<=nSecondary;
BOOL bAlarm=FALSE;
if(nStates==0)
{
byTmp=~byTmp;
byCommand[2]&=byTmp;
CChunnel *pChunnel=GetChunnel(nChunnel);
CSecondary *pSecondary;
CSecondary *pTmpSecondary;
for(int i=0;i<16;i++)
{
CZone *pZone=pChunnel->GetZone(i);
if(pZone->GetBindSecondary()==nSecondary)
pZone->m_bTouchOff=FALSE;
}
POSITION nPos=m_lstAlarmSecondary.GetHeadPosition();
while(nPos)
{
POSITION nOldPos=nPos;
pSecondary=pChunnel->GetSecondary(nSecondary);
pTmpSecondary=m_lstAlarmSecondary.GetNext(nPos);
if(pTmpSecondary==pSecondary)
{
m_lstAlarmSecondary.RemoveAt(nOldPos);
break;
}
}
bAlarm=FALSE;
}
else
{
byCommand[2]|=byTmp;
bAlarm=TRUE;
}
WriteCommCommand(byCommand);
//没道理
//WriteCommCommand(byCommand);
//
SetSecondarysStates(nChunnel,nSecondary,nStates);
if(bAlarm)
PlayAlarmSound();
else
StopPlayAlarmSound();
return TRUE;
}
if(wParam==_CTRL_TIMER)
{
switch(Msg->code)
{
case _CHECK_DISK_SPACE:
if(m_nRecords>0)
{
if(g_arDriveList.GetSize()>0)
{
for(int i=0;i<g_arDriveList.GetSize();i++)
{
DWORD dwFreeSpace=GetDiskFreeSpace(g_arDriveList.GetAt(i));
if(dwFreeSpace<=m_dwMinDiskSpace)
{
ForceStopRecord(g_arDriveList.GetAt(i));
}
}
}
}
break;
}
}
return CDialog::OnNotify(wParam, lParam, pResult);
}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
void CGtMpegWnd::OnComRxcharDected()
{
DWORD dwLength=0;
BYTE *byRead=ReadCommBlock(dwLength);
if(byRead[0]>=(BYTE)0x70&&byRead[0]<=(BYTE)0x77)
SetAlarm(byRead);
else
{
if(byRead[0]==(BYTE)0xb7)
{
int nChunnel=(int)(byRead[1]&0x0F);
if(m_nAlarmOffLine[nChunnel]>5)
{
CString sTxt;
sTxt.Format("地址码为%d的报警解码器断线,请维护!!!",byRead[1]);
m_cMsgListBox.AddString(sTxt+"\t");
m_nAlarmOffLine[nChunnel]=0;
}
else
m_nAlarmOffLine[nChunnel]++;
}
else if(byRead[0]==(BYTE)0xb8)
{
CString sTxt;
sTxt.Format("地址码为%d的云镜解码器断线,请维护!!!",byRead[1]);
m_cMsgListBox.AddString(sTxt+"\t");
}
else if(byRead[0]==(BYTE)0xb9)
{
m_cMsgListBox.AddString("485控制卡命令缓冲溢出!!!\t");
}
}
delete [] byRead;
}
////////////////////////////////////////////////////////////////////
//对所属防区进行撤布防操作
////////////////////////////////////////////////////////////////////
void CGtMpegWnd::OpenZoneAlarm(CZone *pZone)
{
int nZone=pZone->GetSort();
int nChunnel=pZone->GetBindChunnel();
CChunnel *pChunnel=GetChunnel(nChunnel);
//
BYTE byCommand[5];
int nTmp=GetZonesStates(nChunnel);
byCommand[0]=(BYTE)0xcc;
byCommand[1]=(BYTE)nChunnel;
byCommand[2]=LOBYTE(nTmp);
byCommand[3]=HIBYTE(nTmp);
byCommand[4]=(BYTE)0x10;
//
BOOL bCtrl=FALSE;
for(int i=0;i<16;i++)
{
BYTE byTmp=1;
if(pZone->m_Zone[i]==i)
{
CZone *pTmpZone=pChunnel->GetZone(pZone->m_Zone[i]);
if(pTmpZone->m_nCtrlWay==1)//一级控制
{
if(i>=0&&i<=7)
{
byTmp<<=i;
if(pZone->m_bStates2==0)
{
byTmp=~byTmp;
byCommand[2]&=byTmp;
}
else
{
byCommand[2]|=byTmp;
}
}
else
{
byTmp<<=(i-8);
if(pZone->m_bStates2==0)
{
byTmp=~byTmp;
byCommand[3]&=byTmp;
}
else
{
byCommand[3]|=byTmp;
}
}
bCtrl=TRUE;
pTmpZone->m_bStates2=pZone->m_bStates2;//置前端状态
}
else if(pTmpZone->m_nCtrlWay==2) //二级控制
{
if(pZone->m_bStates2)//撤布防防区进行布防操作
{
if(i>=0&&i<=7)
{
byTmp<<=i;
if(pZone->m_bStates2==0)
{
byTmp=~byTmp;
byCommand[2]&=byTmp;
}
else
{
byCommand[2]|=byTmp;
}
}
else
{
byTmp<<=(i-8);
if(pZone->m_bStates2==0)
{
byTmp=~byTmp;
byCommand[3]&=byTmp;
}
else
{
byCommand[3]|=byTmp;
}
}
bCtrl=TRUE;
}
else if(!pZone->m_bStates2)//撤布防防区进行撤防操作
{
if(!pTmpZone->m_bStates3)//该防区中心已撤防
{
if(i>=0&&i<=7)
{
byTmp<<=i;
if(pZone->m_bStates2==0)
{
byTmp=~byTmp;
byCommand[2]&=byTmp;
}
else
{
byCommand[2]|=byTmp;
}
}
else
{
byTmp<<=(i-8);
if(pZone->m_bStates2==0)
{
byTmp=~byTmp;
byCommand[3]&=byTmp;
}
else
{
byCommand[3]|=byTmp;
}
}
bCtrl=TRUE;
}
}
pTmpZone->m_bStates2=pZone->m_bStates2;//置
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -