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

📄 remotemonitorview.cpp

📁 电缆故障监控系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
*/				   if(nAlarmtype==8)
					   strNodeName=strCableName;
				   else
					   strNodeName=strFenjiName;

				   //插入列表
				   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);
			   }
		   }while(strRevInfo.Left(1)!="*");
	   }
	}
	else if(strRevInfo.Left(2)==_T("CA"))
	{
       strRevInfo.Delete(0,3);

	   nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);
       if(atoi(strNodeNum)<1||atoi(strNodeNum)>999)
		   return;
 	   //该信息是请求对时,需向下发本机当前时间
	   //根据分机号找出电话号码
	   CString Telephone;

	   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()))//不为空
	   {
		   strSendInfo="CA#";
           strSendInfo+=m_fenjitable.m_telephone;
           strSendInfo+="#";
		   nMonth=time.GetMonth();
		   strTemp.Format("%2.2d",nMonth);
		   strSendInfo+=strTemp;
           strSendInfo+="#";
		   nDay=time.GetDay();
		   strTemp.Format("%2.2d",nDay);
		   strSendInfo+=strTemp;
           strSendInfo+="#";
		   nHour=time.GetHour();
		   strTemp.Format("%2.2d",nHour);
		   strSendInfo+=strTemp;
           strSendInfo+="#";
		   nMinite=time.GetMinute();
		   strTemp.Format("%2.2d",nMinite);
		   strSendInfo+=strTemp;
           strSendInfo+="#";
		   nSecond=time.GetSecond();
		   strTemp.Format("%2.2d",nSecond);
		   strSendInfo+=strTemp;
           strSendInfo+="*";
		   m_strArray.Add(strSendInfo);
	   }
	}
    else if(strRevInfo.Left(2)==_T("CB"))//本机分机号
	{
       strRevInfo.Delete(0,3);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
       strTemp=strRevInfo.Left(nIndex);
	   if(strTemp.GetLength()<1||strTemp.GetLength()>13)
           return;
       strRevInfo.Delete(0,nIndex+1);

	   nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);
       if(atoi(strNodeNum)<1||atoi(strNodeNum)>999)
		   return;
	   //根据分机电话号码修改对应的分机号

	   m_fenjitable.m_strSort=_T("[Id]");
	   m_fenjitable.m_strFilter=_T("[telephone] = '"+strTemp+"'"); 
	   m_fenjitable.Requery();
	   if(!(m_fenjitable.IsEOF()&&m_fenjitable.IsBOF()))//不为空
	   {
           m_fenjitable.Edit();
           m_fenjitable.m_Id=atoi(strNodeNum);
           m_fenjitable.Update();
	   }
	}
    else if(strRevInfo.Left(2)==_T("CC"))
	{
       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)>2)
		   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_mode=atoi(strTemp);
		   m_fenjitable.Update();
	   }
	}
/*    else if(strRevInfo.Left(2)==_T("CD"))
	{
		//分机机房报警
       strRevInfo.Delete(0,3);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);// 分机号
       strRevInfo.Delete(0,nIndex+1);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   nAlarmtype=atoi(strRevInfo.Left(nIndex));//报警号
	   strRevInfo.Delete(0,nIndex+1);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//月
	   strRevInfo.Delete(0,nIndex+1);
       nMonth=atoi(strTemp);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//日
	   strRevInfo.Delete(0,nIndex+1);
       nDay=atoi(strTemp);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//时
	   strRevInfo.Delete(0,nIndex+1);
       nHour=atoi(strTemp);

	   nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//分
	   strRevInfo.Delete(0,nIndex+1);
       nMinite=atoi(strTemp);

       nSecond=0;

       nYear=time.GetYear();
	   CTime alarmtime(nYear,nMonth,nDay,nHour,nMinite,nSecond);
	   strAlarmTime=alarmtime.Format("%Y-%m-%d %H:%M:%S");
       if(!fenjialarmTable.IsOpen())
          fenjialarmTable.Open();
       fenjialarmTable.AddNew();

       fenjialarmTable.m_fenjinumber=atoi(strNodeNum);
       fenjialarmTable.m_type=nAlarmtype;
       fenjialarmTable.m_alarmtime=alarmtime;
       fenjialarmTable.Update();
	   if(fenjialarmTable.IsOpen())
          fenjialarmTable.Close();

	   //根据分机号找出维修人员及电话号码填入strMaintenance和strTelephone数组中
	   if(!fenjitable.IsOpen())
		   fenjitable.Open();
	   nNode=atoi(strNodeNum);
	   strTemp.Format("%d",nNode);
	   fenjitable.m_strSort=_T("[Id]");
	   fenjitable.m_strFilter=_T("[Id] = "+strTemp); 
	   fenjitable.Requery();
	   if(!(fenjitable.IsEOF()&&fenjitable.IsBOF()))//不为空
	   {
           strFenjiName=fenjitable.m_Name;
		   for(i=0;i<6;i++)
		   {
              strMaintenance[i]=fenjitable.m_maintenance[i];
              strTelephone[i]=fenjitable.m_maintenancetel[i];
		   }
	   }
       else
	   {
		   strFenjiName="";
		   for(i=0;i<6;i++)
		   {
              strMaintenance[i]="";
              strTelephone[i]="";
		   }
	   }
	   if(fenjitable.IsOpen())
		   fenjitable.Close();
	   //向中心机发送GBK码
	   strSendInfo="BD#";
	   strSendInfo+=strFenjiName;
	   strSendInfo+=strNodeNum;
	   strSendInfo+="号分机出现";
	   strSendInfo+=strAlarmType[nAlarmtype-1];
	   strSendInfo+="告警*";
	   m_strArray.Add(strSendInfo);
       //插入列表
	   strCableNum="00";//分机时,电缆号为0
	   strDistance="";
       InsertListItem(strNodeNum,
					  strCableNum,
					  strFenjiName,
					  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);
		}
       SetAlarmFlag(strNodeNum);
	}
*/
	else if(strRevInfo.Left(2)==_T("DA"))//用户电话号码上传
	{
       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);
	   for(i=0;i<6;i++)  strTelephone[i]="";
	   i=0;
	   do
	   {
		   strRevInfo.Delete(0,1);
		   nIndex=strRevInfo.Find('#');
		   if(nIndex==-1)
		      nIndex=strRevInfo.Find('*');
		   if(nIndex==-1)
			   return;
		   if(i>5) return;
		   strTelephone[i]=strRevInfo.Left(nIndex);
		   if(strTelephone[i].GetLength()<1||strTelephone[i].GetLength()>13)
			   return;
		   i++;
		   strRevInfo.Delete(0,nIndex);
	   }while(strRevInfo.Left(1)!="*");
	   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()))//不为空
	   {
           m_fenjitable.Edit();
		   for(i=0;i<6;i++)
              m_fenjitable.m_usertel[i]=strTelephone[i];
           m_fenjitable.Update();
	   }
	}
    else if(strRevInfo.Left(2)==_T("DB"))
	{
       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)<10||atoi(strTemp)>99)
		   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_zejuxisu=atoi(strTemp);
		   m_fenjitable.Update();
	   }
	}
	else if(strRevInfo.Left(2)==_T("DC"))//分机电话号码上传
	{
       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;
       strTelephone[0]=strRevInfo.Left(nIndex);
	   if(strTelephone[0].GetLength()<1||strTelephone[0].GetLength()>13)
		   return;
       strRevInfo.Delete(0,nIndex+1);

	   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()))//不为空
	   {
		   m_fenjitable.Edit();
           m_fenjitable.m_telephone=strTelephone[0];
		   m_fenjitable.Update();
	   }
	}
/*	else if(strRevInfo.Left(2)==_T("DD"))
	{
		//分机机房报警
       strRevInfo.Delete(0,3);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
       strNodeNum=strRevInfo.Left(nIndex);// 分机号
       strRevInfo.Delete(0,nIndex+1);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   nAlarmtype=atoi(strRevInfo.Left(nIndex))+8;//报警号
	   strRevInfo.Delete(0,nIndex+1);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//月
	   strRevInfo.Delete(0,nIndex+1);
       nMonth=atoi(strTemp);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//日
	   strRevInfo.Delete(0,nIndex+1);
       nDay=atoi(strTemp);

	   nIndex=strRevInfo.Find('#');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//时
	   strRevInfo.Delete(0,nIndex+1);
       nHour=atoi(strTemp);

	   nIndex=strRevInfo.Find('*');
	   if(nIndex==-1) return;
	   strTemp=strRevInfo.Left(nIndex);//分
	   strRevInfo.Delete(0,nIndex+1);
       nMinite=atoi(strTemp);

       nSecond=0;

       nYear=time.GetYear();
	   CTime alarmtime(nYear,nMonth,nDay,nHour,nMinite,nSecond);
	   strAlarmTime=alarmtime.Format("%Y-%m-%d %H:%M:%S");

       m_fenjialarmTable.AddNew();
       m_fenjialarmTable.m_fenjinumber=atoi(strNodeNum);
       m_fenjialarmTable.m_type=nAlarmtype-8;
       m_fenjialarmTable.m_alarmtime=alarmtime;
       m_fenjialarmTable.Update();

	   //根据分机号找出维修人员及电话号码填入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]="";
		   }
	   }
	   //向中心机发送GBK码
	   strSendInfo="BD#";
	   strSendInfo+=strFenjiName;
	   strSendInfo+=strNodeNum;
	   strSendInfo+="号分机出现";
	   strSendInfo+=strAlarmType[nAlarmtype-1];
	   strSendInfo+="告警*";
	   m_strArray.Add(strSendInfo);
       //插入列表
	   strCableNum="00";//分机时,电缆号为0
	   strDistance="";
       InsertListItem(strNodeNum,
					  strCableNum,
					  strFenjiName,
					  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);
		}
       SetAlarmFlag(strNodeNum);
	}
	*/

}
void CRemotemonitorView::maptoASC(unsigned char* pbuff,int len)
{
    while(len--)
	{
		*pbuff=dtmftoasc[*pbuff];
		pbuff++;
	}
}
void CRemotemonitorView::Process()
{
	int   nIndex0,nIndex1;
    int i;

⌨️ 快捷键说明

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