📄 sampledlg.cpp
字号:
str2="Disk was Damaged;";//English
}
else
{
str2="硬盘被损坏";//Chinese
}
}
else
{
if(ENGLISH)
{
str2="Disk Works Well;";//English
}
else
{
str2="硬盘工作良好;";//Chinese
}
}
m_DiskInfo.AddString(str2);
if(Buf[i+18]&4)
{
if(ENGLISH)
{
str2="Main Boot Sector Error.";//English
}
else
{
str2="主引导扇区错误.";//Chinese
}
}
else
{
if(ENGLISH)
{
str2="Main Boot Sector Well.";//English
}
else
{
str2="主引导扇区良好.";//Chinese
}
}
m_DiskInfo.AddString(str2);
if(Buf[i+18]&5)
{
if(ENGLISH)
{
str2="Full Disk.";//English
}
else
{
str2="硬盘满.";//Chinese
}
}
m_DiskInfo.AddString(str2);
}
break;
}
break;
case NETCON_REMOTE_GETPANPARA:
m_PanProtocol.Format("%s",Buf+9);
GetDlgItem(IDC_EDIT_PANPROTOCOL)->SetWindowText(m_PanProtocol);
break;
case NETCON_REMOTE_IFRAMEINTERVAL:
if(ENGLISH)
{
AfxMessageBox("Set IFrame Interval Success!");//English
}
else
{
AfxMessageBox("设置I帧间隔成功!");
}
break;
case NETCOM_CTRL_SET_BAUDRATE_ADDRCODE:
break;
case NETCOM_CTRL_SET_HEARTBEAT_PERIOD:
if(ENGLISH)
{
AfxMessageBox("Set Heart Beat Period Success!");//English
}
else
{
AfxMessageBox("设置心跳周期成功!");//Chinese
}
break;
case NETCOM_CTRL_GET_HEARTBEAT_PERIOD:
pNetRemoteCtlDlg->RefreshHeartParam(NETCOM_CTRL_GET_HEARTBEAT_PERIOD,(unsigned char *)(Buf+9));
break;
case NETCOM_CTRL_SET_HEARTBEAT_CONDITION:
if(ENGLISH)
{
AfxMessageBox("Set Or Clear Heart Beat Success!");//English
}
else
{
AfxMessageBox("设置或清除心跳成功!");//Chinese
}
break;
case NETCOM_CTRL_GET_HEARTBEAT_CONDITION:
pNetRemoteCtlDlg->RefreshHeartParam(NETCOM_CTRL_GET_HEARTBEAT_CONDITION,(unsigned char *)(Buf+9));
break;
case NETCOM_CTRL_GET_CMS_REGISTER_PARA:
pNetRemoteCtlDlg->RefreshHeartParam(NETCOM_CTRL_GET_CMS_REGISTER_PARA,(unsigned char *)(Buf+9));
break;
case NETCOM_CTRL_SET_CMS_REGISTER_PARA:
str = "";
if (Buf[10] == 0)
{// 操作失败
for (int i=0; i<7; i++)
{
if(Buf[9]&(1<< i))
{
switch(i)
{
case 0://设置服务器IP和端口
str += "设置服务器IP和端口、";
break;
case 1://设置服务器注册密码
str += "注册密码、";
break;
case 2://设置设备ID
str += "设备ID、";
break;
case 3://设置周边设备数量及ID
str += "周边设备数量及ID";
break;
case 4://首次注册
str += "首次注册";
break;
case 5://更新注册
str += "更新注册";
break;
case 6://移除注册
str += "移除注册";
break;
default:
break;
}
}
}
str += "失败!";
}
else
{// 操作成功
for (int i=0; i<7; i++)
{
if(Buf[9]&(1<< i))
{
switch(i)
{
case 0://设置服务器IP和端口
str += "设置服务器IP和端口、";
break;
case 1://设置服务器注册密码
str += "注册密码、";
break;
case 2://设置设备ID
str += "设备ID、";
break;
case 3://设置周边设备数量及ID
str += "周边设备数量及ID";
break;
case 4://首次注册
str += "首次注册";
break;
case 5://更新注册
str += "更新注册";
break;
case 6://移除注册
str += "移除注册";
break;
default:
break;
}
}
}
str += "成功!";
}
AfxMessageBox(str);
break;
case NETCOM_SEND_DOME_BETA:
memcpy(&bTemp,Buf+9,1);
// if(bTemp==0)
// AfxMessageBox("控制球机失败");
// if(bTemp==1)
// AfxMessageBox("控制球机成功");
break;
case NETCON_REMOTE_RESTART:
if(ENGLISH)
{
AfxMessageBox("Server Had Received Restart Command!");//English
}
else
{
AfxMessageBox("主机已经接收到重启命令!");//Chinese
}
break;
default:
break;
}
}
}
//----------------------------------------
void CSAMPLEDlg::ServerAlarmPro(unsigned long nIpAddr,unsigned short nServPort, char *alarminfo)
{
CString strtype;
CString strdis,strold;
short i=0,j=0,alarmno;
CRect rect ;
unsigned short alarmdata=0;
BOOL find;
ALARM_LIST *pAlarmLst;
memcpy(&alarmdata,&alarminfo[1],2);
CString HardDiskFullAlarm;
switch (alarminfo[0])
{
case NET_VIDEOLOST_ALARM_MSG :
if(ENGLISH)
{
strtype=_T("Channel Video Lost");//English
}
else
{
strtype=_T("通道视频丢失");//Chinese
}
break ;
case NET_VIDEOMOVE_ALARM_MSG :
if(ENGLISH)
{
strtype=_T("Channel Video Move");//English
}
else
{
strtype=_T("通道视频移动");//Chinese
}
break ;
case NET_PROBE_ALARM_MSG:
if(ENGLISH)
{
strtype=_T("Probe Alarm");//English
}
else
{
strtype=_T("探头报警");//Chinese
}
break ;
case NET_DISKFULL_ALARM_MSG:
if(ENGLISH)
{
strtype=_T("Disk Full Alarm");//English
}
else
{
strtype=_T("硬盘满报警");//Chinese
}
HardDiskFullAlarm.Format("%s(%d): %s",inet_ntoa(*(struct in_addr*)&nIpAddr),nServPort,strtype);
if(hcount==0)
MessageBox(HardDiskFullAlarm);
hcount++;
return;
break ;
}
for(j=0;j<16;j++)
{
find=false;
if(alarmdata&1<<j)
{
alarmno=j+1;
strdis.Format("%s(%d): %d%s",inet_ntoa(*(struct in_addr*)&nIpAddr),nServPort,
alarmno,strtype);
for(i=0;i<m_AlarmList.GetCount();i++)
{
m_AlarmList.GetText(i,strold);
if(strdis==strold)
{
find=true;
break;
}
}
if(!find)
{
m_AlarmList.AddString(strdis);
pAlarmLst=new ALARM_LIST;
pAlarmLst->nIpAddr=nIpAddr;
pAlarmLst->nServPort=nServPort;
m_AlarmList.SetItemDataPtr(m_AlarmList.GetCount()-1,pAlarmLst);
}
}
}
}
//----------------------------------------
BOOL CSAMPLEDlg::AddNetNodeRecFile(unsigned long nIpAddr,unsigned short nServPort, char *sRecFile)
{
int j, k, nPort, len, pos ;
char cp1[10], cp2[10] ;
CString str ;
HTREEITEM hRecFile ;
TM8100_NET_NODE *ptr ;
RECORD_DATE_NODE *cur ;
len = strlen(sRecFile) ;
if(len<=13)
return false;
ptr = pNetNodeHead ;
while(ptr!=NULL)
{
if (ptr->ipAddr == nIpAddr&&ptr->nServPort==nServPort )
{ //net node
memset(cp1, 0, 10) ;
memcpy(cp1, sRecFile, 8) ;
cur = ptr->pRecDateHead ;
for (j=0;j<370;j++)
{
memset(cp2, 0, 10) ;
memcpy(cp2, cur->sDateName, 8) ;
if (strcmp(cp1, cp2) == 0)
{ //rec date
cp2[0] = sRecFile[11] ;
cp2[1] = sRecFile[12] ;
cp2[2] = '\0' ;
nPort = strtol(cp2, NULL, 10) ;
if (nPort > 0 && nPort <= PORTNUM)
{ //port
//先删除老的录像文件段
for (k=0;k<500;k++)
{
hRecFile = m_NetTree.GetChildItem(cur->hPortNode[nPort-1]) ;
if (hRecFile == NULL)
{
break ;
}
m_NetTree.DeleteItem(hRecFile) ;
}
//生成新的录像文件段
pos = 13 ;
for (k=13;k<len;k++)
{
if (sRecFile[k] == '(')
pos = k+1 ;
else if (sRecFile[k] == ')')
{
sRecFile[k] = '\0' ;
str.Format("%s", sRecFile+pos) ;
hRecFile = m_NetTree.InsertItem(str, 0, 0, cur->hPortNode[nPort-1]) ;
}
}
m_NetTree.Expand(cur->hDateNode, TVE_EXPAND) ;
m_NetTree.Expand(cur->hPortNode[nPort-1], TVE_EXPAND) ;
}
return TRUE ;
}
cur = cur->next ;
}
}
ptr = ptr->next ;
}
return FALSE ;
}
BOOL CSAMPLEDlg::AddNetNodeRecDate(unsigned long nIpAddr,unsigned short nServPort, char *sRecDate)
{
int j, k, m, len ;
unsigned long year, month, day ;
CString str ;
HTREEITEM hRecDate, hp[3] ;
TM8100_NET_NODE *ptr ;
RECORD_DATE_NODE *pre, *cur ;
ptr = pNetNodeHead ;
while (ptr!=NULL)
{
if (ptr->ipAddr == nIpAddr&&ptr->nServPort==nServPort)
{
//删除老的录像日期表
pre = cur = ptr->pRecDateHead ;
for (j=0;j<370;j++)//大于一年的天数即OK
{
if (cur == NULL)
break ;
hp[0] = cur->hDateNode ;
for (k=0;k<ptr->nRealMulticast;k++)
{
hp[1] = cur->hPortNode[k] ;
if (hp[1])
{
for (m=0;m<500;m++)
{
hp[2] = m_NetTree.GetChildItem(hp[1]) ;
if (hp[2] == NULL)
break ;
m_NetTree.DeleteItem(hp[2]) ; //rec file seg
}
m_NetTree.DeleteItem(hp[1]) ; //port
}
}
m_NetTree.DeleteItem(hp[0]) ; //date
pre = cur ;
cur = cur->next ;
delete pre ;
}
ptr->pRecDateHead = NULL ;
//生成新的录像日期表
len = strlen(sRecDate)/4 ;
for (j=0;j<len;j++)
{
year = 0 ;
memcpy((char *)(&year), sRecDate+j*4 +2, 2) ;
month = *(sRecDate+j*4 +1) ;
day = *(sRecDate+j*4) ;
str.Format("%04d_%02d_%02d", year, month, day) ;
hRecDate = m_NetTree.InsertItem(str, 0, 0, ptr->hRecordNodeTree, TVI_SORT) ;
cur = new RECORD_DATE_NODE ;
cur->hDateNode = hRecDate ;
cur->next = NULL ;
sprintf(cur->sDateName, "%02d_%02d_%02d", year-2000, month, day) ;
for (k=0;k<ptr->nChannelCount;k++)
{
if(ENGLISH)
{
str.Format("port%d",k+1) ;//English
}
else
{
str.Format("通道%d",k+1) ;//Chinese
}
cur->hPortNode[k] = m_NetTree.InsertItem(str, 0, 0, cur->hDateNode) ;
}
if (ptr->pRecDateHead)
{
pre = ptr->pRecDateHead ;
for (k=0;k<500;k++)
{
if (pre->next == NULL)
{
pre->next = cur ;
break ;
}
pre = pre->next ;
}
}
else
{
ptr->pRecDateHead = cur ;
}
}
m_NetTree.Expand(ptr->hRecordNodeTree, TVE_EXPAND) ;
UpdateData(FALSE) ;
return TRUE ;
}
ptr = ptr->next ;
}
return FALSE ;
}
BOOL CSAMPLEDlg::NetNodeLoginOK(unsigned long nIpAddr,unsigned short nServPort, char ch,int DVRHardWareType)
{
int i ;
CString str ;
unsigned char nPortNum ;
HTREEITEM hNetNode;
TM8100_NET_NODE *cur,*pre,*pcur;
// 显示设备类型
switch(DVRHardWareType)
{//1:D1,2:88,3:83,
case 1:
case 11:
str.Format("主机类型:88-D1");
break;
case 2:
case 6:
str.Format("主机类型:88-CIF");
break;
case 3:
case 7:
str.Format("主机类型:83系列");
break;
default:
str.Format("主机类型:83-CIF");
break;
}
((CStatic *)GetDlgItem(IDC_STATIC_DEVTYPE))->SetWindowText(str);
pcur = pNetNodeHead ;//add by lch
while(pcur!=NULL)
{
if(pcur->ipAddr!=nIpAddr)
pcur=pcur->next;
else
{
pcur->DVRHardWareType = DVRHardWareType;
pcur=pcur->next;
}
}
cur = pNetNodeHead ;
while(cur!=NULL)
{
if (cur->ipAddr == nIpAddr&&cur->nServPort==nServPort)
{
break;
}
cur = cur->next ;
}
if(cur==NULL) //没找到
{
str.Format("%s()",inet_ntoa(*(struct in_addr*)&nIpAddr)) ;
hNetNode = m_NetTree.InsertItem(str, 0, 0, hTreeRoot) ;
if (hNetNode)
{
cur = new TM8100_NET_NODE ;
cur->hNodeTree = hNetNode ;
cur->ipAddr = nIpAddr ;
cur->nServPort=nServPort;
cur->nChannelCount=ch;
cur->next = NULL ;
cur->hRealTimeImageNodeTree = NULL ;
for (i=0;i<PORTNUM;i++)
cur->hRealTimeImagePort[i] = NULL ;
cur->pRecDateHead = NULL ;
cur->nRealMulticast = 0 ;
cur->DVRHardWareType = DVRHardWareType;
if (pNetNodeHead)
{
pre = pNetNodeHead ;
while (pre->next!=NULL)
{
pre = pre->next ;
}
pre->next = cur ;
}
else
{
pNetNodeHead = cur ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -