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

📄 sampledlg.cpp

📁 TM8000硬盘录像机客户端编程文档和Demo源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
							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 + -