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

📄 cb_fperson.cpp

📁 LINUX系统下基于ARM处理器的使用GPRS方式通过SOCKET数据包进行煤矿瓦斯监控的程序.这是在黑龙江省现场运行的程序源代码.
💻 CPP
字号:
#include "CB_Fperson.h"
#include "CB_String.h"
#include "CB_Unit.h"
#include "CB_Socket.h"
#include "Afx.h"

//##ModelId=40AEA6AD01FB
int CB_Fperson::instance(char *str, char *fileName)
{
  int nRtn = 0;
  FILE *pFile;
  pFile = fopen(fileName,"r+");
  PERSON person_src,person_dest;
  int len = sizeof(PERSON);
  strToStrt(str,&person_src);
  int data_flag = 0;  
  char *pIndex_src,*pIndex_dest;
  pIndex_src = person_src.index;
  CB_Unit::trim(pIndex_src);
  while(1==1)
  {
     if(fread(&person_dest,len,1,pFile)<1)
 	 {
       if(feof(pFile)!=0){
         data_flag = 1;       
         break; 
	   }else{
         data_flag = 0;
		 break;
	   }
	 }
     
     pIndex_dest= person_dest.index ;
	 CB_Unit::trim(pIndex_dest);
     if( strcmp(pIndex_src,pIndex_dest) == 0)
	 {
        data_flag = 2;
 	    break;
	 }
  }
  
  char *pSend;
  if(data_flag == 1)
  {
    strcpy(person_src.state,"1"); 
   	strcpy(person_src.affirm,"0");
	if(fwrite(&person_src,len,1,pFile)<1)
	{
      nRtn = -1;
	  goto Stop;
	}else{
      pSend = getSendDataNew(&person_src); 
	}
	
  }else if(data_flag == 2){
    int nState = atoi(person_dest.state);
    int nAffirm= atoi(person_dest.affirm);          
    if(strcmp(person_src.name,person_dest.name)!=0 || 	  
       strcmp(person_src.area,person_dest.area)!=0  ||
       strcmp(person_src.linkman,person_dest.linkman)!=0  ||  
       strcmp(person_src.linkway,person_dest.linkway)!=0 )
	{

 	   if((nState==1) && (nAffirm==0))
       {
         strcpy(person_src.state,"1");
         strcpy(person_src.affirm,"0");
  	     pSend = getSendDataNew(&person_src);
	   }else if( (nState==1) && (nAffirm==1))
	   {
         strcpy(person_src.state,"2");
         strcpy(person_src.affirm,"0"); 
         pSend = getSendDataUpdate(&person_dest,&person_src);
	   }else if( nState==2)
	   {
         strcpy(person_src.state,"2");
         strcpy(person_src.affirm,"0"); 
		 pSend = getSendDataUpdate(&person_dest,&person_src);
	   }
              
       if(fseek(pFile,-len,SEEK_CUR)!=0)
	   {
         nRtn = -1;
 	     goto Stop;
	   }
	   if(fwrite(&person_src,len,1,pFile)<1)
	   {
         nRtn = -1;
	     goto Stop;
	   }
     }else{ if(nAffirm == 0)
		{
           if(nState==1)
		   {
             pSend = getSendDataNew(&person_src);
           }else if(nState ==2){
             pSend = getSendDataUpdate(&person_dest,&person_src);
		  }
	    }else{
          goto Stop;
	    }
     }
  }

  printf("pSend:%s\n",pSend);
  if(isSocketEnable())
  {
      CB_Socket cSocket;
	  cSocket.initiaze();
      char *rtn = NULL;
	  if(cSocket.send(pSend,rtn)<0)
	  {
        nRtn = -1;
   	    goto Stop;
	  }
	  strcpy(person_src.affirm,"1");
	  if(fseek(pFile,-len,SEEK_CUR)!=0)
	  {
        nRtn = -1;
 	    goto Stop;
	  }
	  if(fwrite(&person_src,len,1,pFile)<1)
	  {
        nRtn = -1;
	    goto Stop;
	  }
   } 
  
  Stop:
    fclose(pFile); 
 
  return nRtn;
}

//##ModelId=40AEA6AD02C3
void CB_Fperson::setSign(void *vPtr)
{
  
  PERSON *person = (PERSON*)vPtr;
  strcpy(person->lock,"0");
  strcpy(person->state,"0");
  strcpy(person->affirm,"0");  
}

//##ModelId=40B2F621039B
char *CB_Fperson::getSendDataNew(PERSON *person)
{
  CB_Unit::clearBuf(m_sendData,sizeof(m_sendData));
  strcpy(m_sendData,"0S+0+增");
  strcat(m_sendData,"+");
  strcat(m_sendData,person->name);
  strcat(m_sendData,"+");
  strcat(m_sendData,person->office);  
  strcat(m_sendData,"+");
  strcat(m_sendData,person->area);
  strcat(m_sendData,"+");
  strcat(m_sendData,person->linkman);  
  strcat(m_sendData,"+");
  strcat(m_sendData,person->linkway);
  strcat(m_sendData,"+");
  strcat(m_sendData,"1");
  strcat(m_sendData,"+");
  strcat(m_sendData,"E");  
  return m_sendData; 
}

//##ModelId=40B2F6710133
char *CB_Fperson::getSendDataUpdate(PERSON * per_src, PERSON * per_dest)
{
  CB_Unit::clearBuf(m_sendData,sizeof(m_sendData));
  strcpy(m_sendData,"0S+0+改");
  strcat(m_sendData,"+");
  strcat(m_sendData,per_dest->name);
  strcat(m_sendData,"+");
  strcat(m_sendData,per_dest->office);  
  strcat(m_sendData,"+");
  strcat(m_sendData,per_dest->area);
  strcat(m_sendData,"+");
  strcat(m_sendData,per_dest->linkman);  
  strcat(m_sendData,"+");
  strcat(m_sendData,per_dest->linkway);
  strcat(m_sendData,"+");
  strcat(m_sendData,per_src->name);
  strcat(m_sendData,"+");
  strcat(m_sendData,per_src->office);  
  strcat(m_sendData,"+");
  strcat(m_sendData,per_src->area);
  strcat(m_sendData,"+");
  strcat(m_sendData,per_src->linkman);  
  strcat(m_sendData,"+");
  strcat(m_sendData,per_src->linkway);
  strcat(m_sendData,"+");
  strcat(m_sendData,"1");
  strcat(m_sendData,"+");
  strcat(m_sendData,"E");  
  return m_sendData; 
}

//##ModelId=4099FD0503D9
void CB_Fperson::setSocketEnable(bool b)
{
  m_socket_enable = b;
}

//##ModelId=4099FF140188
bool CB_Fperson::isSocketEnable()
{
  return m_socket_enable;
}

//##ModelId=40C857FC0190
int CB_Fperson::strToStrt(char *str, PERSON *person)
{
  CB_String string;
  string.split(str,',');
  char *pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(person->index,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(person->name,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(person->office,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(person->area,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(person->linkman,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(person->linkway,pResult);
  setSign(person);
  return 0;
}

⌨️ 快捷键说明

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