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

📄 cb_f4.cpp

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

//##ModelId=412ADF1403AC
int CB_F4::instance(char *str, char *fileName, int iCount)
{
  int nRtn = 0;
  FILE *pFile;
  pFile = fopen(fileName,"r+");
  POINT point_src,point_dest;
  strToStrt(str,&point_src,iCount);
  int len = sizeof(POINT);
  int data_flag = 0;  
  char index_src_all[120];  
  char index_dest_all[120]; 
  char *p ;
  p = point_src.index;
  CB_Unit::trim(p);
  CB_Unit::clearBuf(index_src_all,120);
  strcpy(index_src_all,p);
  p = point_src.index_colliery;
  strcat(index_src_all,p);
  CB_Unit::trim(index_src_all); 
  while(1==1)
  {
     if(fread(&point_dest,len,1,pFile)<1)
 	 {
	   if(feof(pFile)!=0){
         data_flag = 1;       
         break; 
	   }else{
         data_flag = 0;
		 break;
	   }
	 }
     
	 CB_Unit::clearBuf(index_dest_all,120);
     p = point_dest.index;
     strcpy(index_dest_all,p);
	 p = point_dest.index_colliery;
     strcat(index_dest_all,p);
     CB_Unit::trim(index_dest_all);
     if(strcmp(index_src_all,index_dest_all) == 0)
	 {
        data_flag = 2;
 	    break;
	 }
  }
  
  char *pSend;
  if(data_flag == 1)
  {
    strcpy(point_src.state,"1"); 
	strcpy(point_src.affirm,"0");
	if(fwrite(&point_src,len,1,pFile)<1)
	{
      nRtn = -1;
	  goto Stop;
	}else{
      pSend = getSendDataNew(&point_src,iCount); 
    }
	
  }else if(data_flag == 2){
    int nState = atoi(point_dest.state);
    int nAffirm= atoi(point_dest.affirm);          

    if(strcmp(point_src.station,point_dest.station)!=0 || 
         strcmp(point_src.upper_limit,point_dest.upper_limit)!=0 )
	{

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

 if(pSend==NULL)
  {
    goto Stop;
  }else if(strlen(pSend)<=5)
  {
    goto Stop; 
  }

  if(isSocketEnable())
  {

      CB_Socket cSocket;
	  cSocket.initiaze();
	  char *rtn;
	  rtn = NULL;

	  if(cSocket.send(pSend,rtn)<0)
	  {
        nRtn = -1;
   	    goto Stop;
	  }
      printf("pSend:%s\n",pSend); 
      if(fseek(pFile,-len,SEEK_CUR)!=0)
	  {
        nRtn = -1;
 	    goto Stop;
	  }

	  strcpy(point_src.affirm,"1");
	  if(fwrite(&point_src,len,1,pFile)<1)
	  {
        nRtn = -1;
	    goto Stop;
	  }
   } 
  
  Stop:
  if(pFile != NULL){
    fclose(pFile); 
  }
 
  return nRtn;
 
}

//##ModelId=412ADF15005D
char *CB_F4::getSendDataNew(POINT * point, int iCount)
{
  CB_Unit::clearBuf(m_sendData,sizeof(m_sendData));
  char *p;  
  p = point->index_sensor;
  CB_Unit::trim(p);
  SENSOR *sensor;
  CB_Sensor cSensor;
  sensor = cSensor.getSensor(p);
  if(sensor == NULL)
    return NULL;
  strcpy(m_sendData,"4S");
  strcat(m_sendData,"+");
  strcat(m_sendData,sensor->index);
  strcat(m_sendData,"+");
  strcat(m_sendData,"增");
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->name);
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->office);
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->area);
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->linkman);
  strcat(m_sendData,"+");
  char chCount[10];
  sprintf(chCount,"%i",iCount);
  CB_Unit::trim(chCount);
  strcat(m_sendData,chCount);
  strcat(m_sendData,"+");
  COLLIERY *colliery;
  CB_Colliery cColl;
  p = point->index_colliery;
  CB_Unit::trim(p);
  colliery = cColl.getColliery(p);
  if(colliery == NULL)
   return NULL;
  p = colliery->name;
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  p = point->index_sensor;
  CB_Unit::trim(p);
  sensor = cSensor.getSensor(p);
  if(sensor == NULL)
    return NULL;
  char tong[40];
  CB_Unit::clearBuf(tong,40);
  p = point->index;
  CB_Unit::trim(p);
  strcpy(tong,p);
  memmove(tong,tong,2);
  tong[2]='\0';
  strcat(m_sendData,tong);
  strcat(m_sendData,"+");  
  strcat(m_sendData,point->station);
  strcat(m_sendData,"+");
  strcat(m_sendData,sensor->name);
  strcat(m_sendData,"+");
  CB_Unit::clearBuf(tong,40);
  p = point->index;
  CB_Unit::trim(p);
  strcpy(tong,p);
  memmove(tong,tong+2,2);
  tong[2] = '\0';
  strcat(m_sendData,tong);
  strcat(m_sendData,"+");
  p = sensor->unit;
  CB_Unit::trim(p);
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  p = point->upper_limit;
  CB_Unit::trim(p);
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  CB_Sensor_bk cSensor_bk;
  SENSOR sensor_bk;
  cSensor_bk.getSensor(point->index_sensor,sensor_bk);
  int value = atoi(sensor_bk.on_off);
  if(value !=1)
    p = "1"  ;
  else
    p="0";
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  strcat(m_sendData,"E");

  return m_sendData; 
}

//##ModelId=412ADF1500AB
void CB_F4::setUser(CB_User* user)
{
  m_user = user;
}

//##ModelId=412ADF1500FA
char *CB_F4::getSendDataUpdate(POINT *point_new, POINT *point_old, int iCount)
{
  CB_Unit::clearBuf(m_sendData,sizeof(m_sendData));
  char *p;  
  p = point_old->index_sensor;
  CB_Unit::trim(p);
  SENSOR *sensor;
  CB_Sensor cSensor;
  sensor = cSensor.getSensor(p);
  if(sensor == NULL)
    return NULL;
  strcpy(m_sendData,"4S");
  strcat(m_sendData,"+");
  strcat(m_sendData,sensor->index);
  strcat(m_sendData,"+");
  strcat(m_sendData,"改");
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->name);
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->office);
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->area);
  strcat(m_sendData,"+");
  strcat(m_sendData,m_user->getPerson()->linkman);
  strcat(m_sendData,"+");
  char chCount[10];
  sprintf(chCount,"%i",iCount);
  CB_Unit::trim(chCount);
  strcat(m_sendData,chCount);
  strcat(m_sendData,"+");
  COLLIERY *colliery;
  CB_Colliery cColl;
  p = point_old->index_colliery;
  CB_Unit::trim(p);
  colliery = cColl.getColliery(p);
  if(colliery == NULL)
   return NULL;
  p = colliery->name;
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  p = point_old->index_sensor;
  CB_Unit::trim(p);
  sensor = cSensor.getSensor(p);
  if(sensor == NULL)
    return NULL;
  char tong[40];
  CB_Unit::clearBuf(tong,40);
  p = point_old->index;
  CB_Unit::trim(p);
  strcpy(tong,p);
  memmove(tong,tong,2);
  tong[2]='\0';
  strcat(m_sendData,tong);
  strcat(m_sendData,"+");  
  strcat(m_sendData,point_old->station);
  strcat(m_sendData,"+");
  strcat(m_sendData,sensor->name);
  strcat(m_sendData,"+");
  CB_Unit::clearBuf(tong,40);
  p = point_old->index;
  CB_Unit::trim(p);
  strcpy(tong,p);
  memmove(tong,tong+2,2);
  tong[2] = '\0';
  strcat(m_sendData,tong);
  strcat(m_sendData,"+");
  p = sensor->unit;
  CB_Unit::trim(p);
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  p = point_old->upper_limit;
  CB_Unit::trim(p);
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  CB_Sensor_bk cSensor_bk;
  SENSOR sensor_bk;
  cSensor_bk.getSensor(point_old->index_sensor,sensor_bk);
  int value = atoi(sensor_bk.on_off);
  if(value !=1)
    p = "1"  ;
  else
    p="0";
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  strcat(m_sendData,chCount);
  strcat(m_sendData,"+");
  p = point_new->index_colliery;
  CB_Unit::trim(p);
  colliery = cColl.getColliery(p);
  if(colliery == NULL)
   return NULL;
  p = colliery->name;
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  p = point_new->index_sensor;
  CB_Unit::trim(p);
  sensor = cSensor.getSensor(p);
  if(sensor == NULL)
    return NULL;
  CB_Unit::clearBuf(tong,40);
  p = point_old->index;
  CB_Unit::trim(p);
  strcpy(tong,p);
  memmove(tong,tong,2);
  tong[2]='\0';
  strcat(m_sendData,tong);
  strcat(m_sendData,"+");  
  strcat(m_sendData,point_new->station);
  strcat(m_sendData,"+");
  strcat(m_sendData,sensor->name);
  strcat(m_sendData,"+");
  CB_Unit::clearBuf(tong,40);
  p = point_new->index;
  CB_Unit::trim(p);
  strcpy(tong,p);
  memmove(tong,tong+2,2);
  tong[2] = '\0';
  strcat(m_sendData,tong);
  strcat(m_sendData,"+");
  p = sensor->unit;
  CB_Unit::trim(p);
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  p = point_new->upper_limit;
  CB_Unit::trim(p);
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  CB_Sensor_bk cSensor_bk_new;
  SENSOR sensor_bk_new;
  cSensor_bk_new.getSensor(point_new->index_sensor,sensor_bk_new);
  value = atoi(sensor_bk_new.on_off);
  if(value !=1)
    p = "1"  ;
  else
    p="0";
  strcat(m_sendData,p);
  strcat(m_sendData,"+");
  strcat(m_sendData,"E");

  return m_sendData;
}

//##ModelId=412ADF150167
int CB_F4::strToStrt(char *str, POINT *point, int iCount)
{
  CB_String string;
  string.split(str,',');
  char *pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->index_colliery,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->index,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->index_sensor,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->station,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->upper_limit,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->lower_limit,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->turnoff_value,pResult);
  pResult = string.getNext();
  CB_Unit::trim(pResult);
  strcpy(point->turnon_value,pResult);
  if(getSysParam()->getInitDataLen("F4")==10)
  {
    pResult = string.getNext();
    CB_Unit::trim(pResult);
    strcpy(point->time_produce,pResult);
  }
  strcpy(point->state,"1");
  strcpy(point->affirm,"0");
  char chCount[10];
  CB_Unit::clearBuf(chCount,10);
  sprintf(chCount,"%d",iCount);
  CB_Unit::trim(chCount);
  strcpy(point->count,chCount);
  return 0;
}

//##ModelId=412ADF1501E4
CB_F4::CB_F4()
{
}


//##ModelId=412ADF1501F4
CB_F4::~CB_F4()
{
}

//##ModelId=4153733F038A
CB_SysParam *CB_F4::getSysParam()
{
  return m_sysParam;
}

//##ModelId=4153734203D8
void CB_F4::setSysParam(CB_SysParam *sysParam)
{
  m_sysParam = sysParam;
}



⌨️ 快捷键说明

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