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

📄 remotemonitorview.cpp

📁 电缆故障监控系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		   m_fenjitable.Edit();
		   m_fenjitable.m_sensitive=atoi(strTemp);
		   m_fenjitable.Update();
	   }
	}
    else if(strRevInfo.Left(2)==_T("BA"))
	{
       strRevInfo.Delete(0,3);
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);
	   if(atoi(strNodeNum)<1||atoi(strNodeNum)>999)
		   return;
       strRevInfo.Delete(0,nIndex+1);
	   nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;
       strTemp=strRevInfo.Left(nIndex);//循环拨打电话次数
	   if(atoi(strTemp)<1||atoi(strTemp)>9)
		   return;
	   m_fenjitable.m_strSort=_T("[Id]");
       m_fenjitable.m_strFilter=_T("[Id] = "+strNodeNum); 
       m_fenjitable.Requery();
	   if(!(m_fenjitable.IsEOF()&&m_fenjitable.IsBOF()))//不为空
	   {
		   m_fenjitable.Edit();
		   m_fenjitable.m_callnumber=atoi(strTemp);
		   m_fenjitable.Update();
	   }
	}
    else if(strRevInfo.Left(2)==_T("BB"))
	{
       strRevInfo.Delete(0,3);
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);
	   if(atoi(strNodeNum)<1||atoi(strNodeNum)>999)
		   return;
       strRevInfo.Delete(0,nIndex+1);
	   nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;
       strTemp=strRevInfo.Left(nIndex);//布防待时间
	   if(atoi(strTemp)<20||atoi(strTemp)>255)
		   return;
	   m_fenjitable.m_strSort=_T("[Id]");
       m_fenjitable.m_strFilter=_T("[Id] = "+strNodeNum); 
       m_fenjitable.Requery();
	   if(!(m_fenjitable.IsEOF()&&m_fenjitable.IsBOF()))//不为空
	   {
		   m_fenjitable.Edit();
		   m_fenjitable.m_waittime=atoi(strTemp);
		   m_fenjitable.Update();
	   }
	}
    else if(strRevInfo.Left(2)==_T("BC"))
	{
       strRevInfo.Delete(0,3);
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);
	   if(atoi(strNodeNum)<1||atoi(strNodeNum)>999)
		   return;
       strRevInfo.Delete(0,nIndex+1);
	   nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;
       strTemp=strRevInfo.Left(nIndex);//蓄电池电压转折点
	   if(atof(strTemp)<1.1||atof(strTemp)>9.9)
		   return;
	   m_fenjitable.m_strSort=_T("[Id]");
       m_fenjitable.m_strFilter=_T("[Id] = "+strNodeNum); 
       m_fenjitable.Requery();
	   if(!(m_fenjitable.IsEOF()&&m_fenjitable.IsBOF()))//不为空
	   {
		   m_fenjitable.Edit();
		   m_fenjitable.m_xudianchi=(float)(atof(strTemp)/10.0);
		   m_fenjitable.Update();
	   }
	}
	else if(strRevInfo.Left(2)==_T("BD"))
	{
      //
	   Sleep(2000);
       if(m_uSendTimer)
	   {
		   KillTimer(m_uSendTimer);
		   m_uSendTimer=SetTimer(SNDTIMER,m_SendT,NULL);
	   }

	   CMainFrame* pWnd;

	   pWnd=(CMainFrame*)AfxGetMainWnd();


       pWnd->ShowWindowMax();
       strRevInfo.Delete(0,3);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);
	   if(atoi(strNodeNum)<1||atoi(strNodeNum)>999)
		   return;
       strRevInfo.Delete(0,nIndex+1);


	   //根据分机号找出维修人员及电话号码填入strMaintenance和strTelephone数组中
	   nNode=atoi(strNodeNum);
	   strTemp.Format("%d",nNode);
	   m_fenjitable.m_strSort=_T("[Id]");
	   m_fenjitable.m_strFilter=_T("[Id] = "+strTemp); 
	   m_fenjitable.Requery();
	   if(!(m_fenjitable.IsEOF()&&m_fenjitable.IsBOF()))//不为空
	   {
		   strFenjiName=m_fenjitable.m_Name;
		   for(i=0;i<6;i++)
		   {
			   strMaintenance[i]=m_fenjitable.m_maintenance[i];
			   strTelephone[i]=m_fenjitable.m_maintenancetel[i];
		   }
	   }
	   else
	   {
		   strFenjiName="";
		   for(i=0;i<6;i++)
		   {
			   strMaintenance[i]="";
			   strTelephone[i]="";
		   }
	   }

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strCableNum=strRevInfo.Left(nIndex);//端口号
	   if(atoi(strCableNum)<1||atoi(strCableNum)>16)
		   return;

	   strRevInfo.Delete(0,nIndex+1);
	   
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   nAlarmtype=atoi(strRevInfo.Left(nIndex));//报警类别
	   if(nAlarmtype<0||nAlarmtype>9)
		   return;
	   strRevInfo.Delete(0,nIndex+1);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strDistance=strRevInfo.Left(nIndex);//距离
	   if(atoi(strDistance)<0||atoi(strDistance)>99999)
		   return;
	   strRevInfo.Delete(0,nIndex+1);
	   
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//月
	   strRevInfo.Delete(0,nIndex+1);
	   nMonth=atoi(strTemp);
	   if(nMonth<1||nMonth>12)
		   return;
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//日
	   strRevInfo.Delete(0,nIndex+1);
	   nDay=atoi(strTemp);
	   if(nDay<1||nDay>31)
		   return;
	   
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//时
	   strRevInfo.Delete(0,nIndex+1);
	   nHour=atoi(strTemp);
	   if(nHour<0||nHour>24)
		   return;
	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1)//没有#号,则一定有*号
	       nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;//如果还为-1,则返回
	   strTemp=strRevInfo.Left(nIndex);//分
	   strRevInfo.Delete(0,nIndex);//没有删除最后的#号
	   nMinite=atoi(strTemp);
	   if(nMinite<0||nMinite>60)
		   return;

       nSecond=0;
       nYear=time.GetYear();
	   CTime alarmtime(nYear,nMonth,nDay,nHour,nMinite,nSecond);
//	   strAlarmTime=alarmtime.Format("%Y-%m-%d %H:%M:%S");
	   strAlarmTime=alarmtime.Format("%Y-%m-%d %H:%M");
       if(nAlarmtype==9)//把报警恢复时间写入数据库
	   {
          m_cablealarmtable.m_strSort=_T("[alarmtime]");
          nNode=atoi(strNodeNum)*100+atoi(strCableNum);
	      strTemp.Format("%d",nNode);
          m_cablealarmtable.m_strFilter=_T("[cablenumber]="+strTemp);
	      if(!(m_cablealarmtable.IsBOF()&&m_cablealarmtable.IsEOF()))
		  {
		     while(!m_cablealarmtable.IsEOF())
                 m_cablealarmtable.MoveNext();
             m_cablealarmtable.MovePrev();
             m_cablealarmtable.Edit();
             m_cablealarmtable.m_recovertime=alarmtime;
             m_cablealarmtable.Update();
		  }
	   }
	   else//strState=0-8
	   {
		   if(nAlarmtype==0)
		   {
			   nAlarmtype=9+atoi(strCableNum);
               strCableNum="00";
		   }
		   m_cablealarmtable.AddNew();
		   m_cablealarmtable.m_cablenumber=atoi(strNodeNum)*100+atoi(strCableNum);
		   m_cablealarmtable.m_alarmtype=nAlarmtype;
		   m_cablealarmtable.m_distant=atoi(strDistance);
		   m_cablealarmtable.m_alarmtime=alarmtime;
		   m_cablealarmtable.m_fenjiname=strFenjiName;
		   m_cablealarmtable.Update();
           //从电缆表中找到该电缆的名称
		   if(nAlarmtype==8)
		   {
			   nNode=atoi(strNodeNum)*100+atoi(strCableNum);
			   strTemp.Format("%d",nNode);
			   m_cabletable.m_strSort=_T("[Id]");
			   m_cabletable.m_strFilter=_T("[Id] = "+strTemp); 
			   m_cabletable.Requery();
			   if(!(m_cabletable.IsEOF()&&m_cabletable.IsBOF()))//不为空
			   {
				   if((m_cabletable.m_startname!="")&&(m_cabletable.m_startname!=""))
				      strCableName=m_cabletable.m_startname+"至"+m_cabletable.m_endname;
				   else
                      strCableName="";
			   }
			   else
				   strCableName="";
		   }
	/*	   //根据分机号找出维修人员及电话号码填入strMaintenance和strTelephone数组中
		   nNode=atoi(strNodeNum);
		   strTemp.Format("%d",nNode);
		   m_fenjitable.m_strSort=_T("[Id]");
		   m_fenjitable.m_strFilter=_T("[Id] = "+strTemp); 
		   m_fenjitable.Requery();
		   if(!(m_fenjitable.IsEOF()&&m_fenjitable.IsBOF()))//不为空
		   {
			   strFenjiName=m_fenjitable.m_Name;
			   for(i=0;i<6;i++)
			   {
				   strMaintenance[i]=m_fenjitable.m_maintenance[i];
				   strTelephone[i]=m_fenjitable.m_maintenancetel[i];
			   }
		   }
		   else
		   {
			   strFenjiName="";
			   for(i=0;i<6;i++)
			   {
				   strMaintenance[i]="";
				   strTelephone[i]="";
			   }
		   }
*/		   if(nAlarmtype==8)
              strNodeName=strCableName;
		   else
              strNodeName=strFenjiName;
	
		   //向中心机发送GBK码
		   strSendInfo="BD#";
		   strSendInfo+=strFenjiName;
		   strSendInfo+=",";
		   strSendInfo+=strNodeNum;
		   strSendInfo+="号分机,";
		   if(nAlarmtype==8)
		   {
		      strSendInfo+=strCableName;
		      strSendInfo+=strCableNum;
		      strSendInfo+="号电缆,在";
              CString strTemp;
			  strTemp.Format("%d",atoi(strDistance));
		      strSendInfo+=strTemp;
		      strSendInfo+="米处断线*";
		   }
		   else if(nAlarmtype>=1&&nAlarmtype<=7)
		   {
		      strSendInfo+=strCableNum;
		      strSendInfo+="号端口";
			  strSendInfo+=strAlarmType[nAlarmtype-1];
			  strSendInfo+="*";
		   }
		   else
		   {
			  strSendInfo+=strAlarmType[nAlarmtype-1];
			  strSendInfo+="*";
		   }
//		   Sleep(2000);
		   m_strArray.Add(strSendInfo);
		   //插入列表
           InsertListItem(strNodeNum,
                          strFenjiName,
					      strCableNum,
					      strNodeName,
					      strAlarmType[nAlarmtype-1],
					      strDistance,
					      strAlarmTime,
					      strMaintenance,
					      strTelephone);
		   if(!m_bAlarm)
		   {
			   m_bAlarm=TRUE;
			   PlaySound("Alarm.wav",NULL,SND_FILENAME | SND_ASYNC | SND_LOOP | SND_NODEFAULT);
		   }
		   if(nAlarmtype==8)
		     SetAlarmFlag(strNodeNum,strCableNum);
		   else
		     SetAlarmFlag(strNodeNum);
	   }
	   if(strRevInfo.Left(1)!="*")
	   {
		   do
		   {
			   strRevInfo.Delete(0,1);//把开始的#删除
			   
			   nIndex=strRevInfo.Find('#');
			   if(nIndex==-1) return;
			   strCableNum=strRevInfo.Left(nIndex);//端口号
			   if(atoi(strCableNum)<1||atoi(strCableNum)>16)
				   return;
			   strRevInfo.Delete(0,nIndex+1);
			   
			   nIndex=strRevInfo.Find('#');
			   if(nIndex==-1) return;
			   nAlarmtype=atoi(strRevInfo.Left(nIndex));//报警类别
			   if(nAlarmtype<0||nAlarmtype>9)
				   return;

			   strRevInfo.Delete(0,nIndex+1);
			   
			   nIndex=strRevInfo.Find('#');
			   if(nIndex==-1) return;
			   strDistance=strRevInfo.Left(nIndex);//距离
			   if(atoi(strDistance)<0||atoi(strDistance)>99999)
				   return;
			   strRevInfo.Delete(0,nIndex+1);
			   
			   nIndex=strRevInfo.Find('#');
			   if(nIndex==-1) return;
			   strTemp=strRevInfo.Left(nIndex);//月
			   strRevInfo.Delete(0,nIndex+1);
			   nMonth=atoi(strTemp);
			   if(nMonth<1||nMonth>12)
				   return;
			   
			   nIndex=strRevInfo.Find('#');
			   if(nIndex==-1) return;
			   strTemp=strRevInfo.Left(nIndex);//日
			   strRevInfo.Delete(0,nIndex+1);
			   nDay=atoi(strTemp);
			   if(nDay<1||nDay>31)
				   return;
			   
			   nIndex=strRevInfo.Find('#');
			   if(nIndex==-1) return;
			   strTemp=strRevInfo.Left(nIndex);//时
			   strRevInfo.Delete(0,nIndex+1);
			   nHour=atoi(strTemp);
			   if(nHour<0||nHour>24)
				   return;
			   
			   nIndex=strRevInfo.Find('#');
			   if(nIndex==-1)//没有#号,则一定有*号
				   nIndex=strRevInfo.Find('*');
			   if(nIndex==-1) return;//如果还为-1,则返回
			   strTemp=strRevInfo.Left(nIndex);//分
			   strRevInfo.Delete(0,nIndex);//没有删除最后的#号
			   nMinite=atoi(strTemp);
			   if(nMinite<0||nMinite>60)
				   return;
			   
			   nSecond=0;
			   nYear=time.GetYear();
			   CTime alarmtime(nYear,nMonth,nDay,nHour,nMinite,nSecond);
//			   strAlarmTime=alarmtime.Format("%Y-%m-%d %H:%M:%S");
			   strAlarmTime=alarmtime.Format("%Y-%m-%d %H:%M");
			   if(nAlarmtype==9)//把报警恢复时间写入数据库
			   {
				   m_cablealarmtable.m_strSort=_T("[alarmtime]");
				   nNode=atoi(strNodeNum)*100+atoi(strCableNum);
				   strTemp.Format("%d",nNode);
				   m_cablealarmtable.m_strFilter=_T("[cablenumber]="+strTemp);
				   if(!(m_cablealarmtable.IsBOF()&&m_cablealarmtable.IsEOF()))
				   {
					   while(!m_cablealarmtable.IsEOF())
						   m_cablealarmtable.MoveNext();
					   m_cablealarmtable.MovePrev();
					   m_cablealarmtable.Edit();
					   m_cablealarmtable.m_recovertime=alarmtime;
					   m_cablealarmtable.Update();
				   }
			   }
			   else//strState=1-8
			   {
				   if(nAlarmtype==0)
				   {
					   nAlarmtype=9+atoi(strCableNum);
					   strCableNum="00";
				   }

				   CString strNodeName;
				   m_cablealarmtable.AddNew();
				   m_cablealarmtable.m_cablenumber=atoi(strNodeNum)*100+atoi(strCableNum);
				   m_cablealarmtable.m_alarmtype=nAlarmtype;
				   m_cablealarmtable.m_distant=atoi(strDistance);
				   m_cablealarmtable.m_alarmtime=alarmtime;
				   m_cablealarmtable.m_fenjiname=strFenjiName;
				   m_cablealarmtable.Update();
				   //从电缆表中找到该电缆的名称
				   if(nAlarmtype==8)
				   {
					   nNode=atoi(strNodeNum)*100+atoi(strCableNum);
					   strTemp.Format("%d",nNode);
					   m_cabletable.m_strSort=_T("[Id]");
					   m_cabletable.m_strFilter=_T("[Id] = "+strTemp); 
					   m_cabletable.Requery();
					   if(!(m_cabletable.IsEOF()&&m_cabletable.IsBOF()))//不为空
					   {
						   strCableName=m_cabletable.m_startname+"至"+m_cabletable.m_endname;
					   }
					   else
						   strCableName="";
				   }
/*				   //根据分机号找出维修人员及电话号码填入strMaintenance和strTelephone数组中
				   nNode=atoi(strNodeNum);
				   strTemp.Format("%d",nNode);
				   m_fenjitable.m_strSort=_T("[Id]");
				   m_fenjitable.m_strFilter=_T("[Id] = "+strTemp); 
				   m_fenjitable.Requery();
				   if(!(m_fenjitable.IsEOF()&&m_fenjitable.IsBOF()))//不为空
				   {
					   strFenjiName=m_fenjitable.m_Name;
					   for(i=0;i<6;i++)
					   {
						   strMaintenance[i]=m_fenjitable.m_maintenance[i];
						   strTelephone[i]=m_fenjitable.m_maintenancetel[i];
					   }
				   }
				   else
				   {
					   strFenjiName="";
					   for(i=0;i<6;i++)
					   {
						   strMaintenance[i]="";
						   strTelephone[i]="";
					   }
				   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -