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

📄 init.c

📁 该程序实现N4F接口程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    }
  }	

  else
  if( strcmp(tmp1,"BCD")==0 )
  { for(i=0;i<5;i++)   
	{ fscanf(table_fp,"%s",tmp0); }
	
	for(;;)
	{ fscanf(table_fp,"%d ",&w_addr);
	  if( w_addr==-1 ){ goto LOOP; }
	  io_mb[iomb_addr].def_type = BCD_TYPE;
	  fscanf(table_fp,"%s %s ", c_name, l_name );
	  strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,l_name);
	  strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,c_name); 

	  fprintf(disk_fp,"(%02d_%d)%25s%15s \n",iomb_addr,w_addr,
	           io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,
               io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name   );  
   	  
	  if(  (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)
	     &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)   )
	  { 
	    while((strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,".ANA.")   ==NULL)
            &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,".PARAM.") ==NULL)
            &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,".NUM.")   ==NULL)  )			  
		{ printf("Read_info_table(): 板地址=%d 字地址=%d data_type err! \n",iomb_addr,w_addr); 
		  Sleep(5*1000);
		}         
	    while( DBread_by_name( io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name )==NULL )
		{ printf("BCD: %s error!",io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name); sleep(5); }
	
	  }
    }
  }	

  else
  if( strcmp(tmp1,"IMP")==0 )
  { for(i=0;i<7;i++)   
	{ fscanf(table_fp,"%s",tmp0); }
	
	for(;;)
	{ fscanf(table_fp,"%d ",&w_addr);
	  if( w_addr==-1 ){ goto LOOP; }
	  io_mb[iomb_addr].def_type = IMP_TYPE;
	  fscanf(table_fp,"%s %s %f %f", c_name, l_name, &ems_cvt, &pd_cvt );
	  strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,l_name);
	  strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,c_name); 
      io_mb[iomb_addr].yc[w_addr].yc_pid[0].EMS_imp_cvt = ems_cvt;
	  io_mb[iomb_addr].yc[w_addr].yc_pid[0].PD_imp_cvt  = pd_cvt;

	  fprintf(disk_fp,"(%02d_%d)%25s%15s %5.1f %5.1f \n",iomb_addr,w_addr,
	           io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,
               io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,
			   io_mb[iomb_addr].yc[w_addr].yc_pid[0].EMS_imp_cvt,
			   io_mb[iomb_addr].yc[w_addr].yc_pid[0].PD_imp_cvt   );  
   	  
	  if(  (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)
	     &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)   )
	  { 
	    while( strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,".IMP.")==NULL )			  
		{ printf("Read_info_table(): 板地址=%d 字地址=%d data_type err! \n",iomb_addr,w_addr); 
		  Sleep(5*1000);
		}         
	    while( DBread_by_name( io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name )==NULL )
		{ printf("IMP: %s error!",io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name); sleep(5); }
	
	  }
    }
  }	

  else
  { for(;;){ printf("信息表格式错!!!\n"); sleep(5); }  }
}

void Cfg_init_iomb()/* -------- 配置RTU模板 --------- */
{ int  i, j;
  char w_addr, iomb_addr;

  j = rcvbuf[2]/3;     
  
  for(i=0;i<j;i++)
  { w_addr    = rcvbuf[3+i*3+0] & 0x07;
	iomb_addr = ( rcvbuf[3+i*3+0] >> 3 ) & 0x1f;

	io_mb[iomb_addr].mb_type    = rcvbuf[3+i*3+1] & 0x0f;
    io_mb[iomb_addr].mb_type_id = 0x01 << ( ( rcvbuf[3+i*3+1] >> 5 ) & 0x07 );
    io_mb[iomb_addr].mb_used    = YES;
	  
    if( io_mb[iomb_addr].mb_type==ANA )
    { 
      if(  (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)
       	 &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)   )  
	  {  io_mb[iomb_addr].yc[w_addr].scan_allow = YES; 
	     Print_iomb_cfg( iomb_addr, w_addr );  
	  }
	}

    if( io_mb[iomb_addr].mb_type==BCD )
    { 
      if(  (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)
       	 &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)   )  
	  {  io_mb[iomb_addr].yc[w_addr].scan_allow = YES;  
	     Print_iomb_cfg( iomb_addr, w_addr );
	  }
	}

	if( ( io_mb[iomb_addr].mb_type==SW )||( io_mb[iomb_addr].mb_type==TIME_SW ) )
    { 
	  io_mb[iomb_addr].yx[w_addr].scan_allow = YES;
	  Print_iomb_cfg( iomb_addr, w_addr );
    }
  
    if( io_mb[iomb_addr].mb_type==IMP )
    { 
      if(  (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)
       	 &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)   )  
	  {  io_mb[iomb_addr].yc[w_addr].scan_allow = YES;  
	     Print_iomb_cfg( iomb_addr, w_addr );
		 if( ( (w_addr % 2)==0 )&&( w_addr<7 ) )
		 { io_mb[iomb_addr].yc[w_addr+1].scan_allow = YES;  }
	  }
	}

  }
}      

void Print_iomb_cfg( int iomb_addr, int w_addr )
{ int  k;
  FILE *disk_fp;

    while((disk_fp=fopen(IOMB_CONFIG_VALID,"a+"))==NULL)
	{ printf("%s can not open\n",IOMB_CONFIG_VALID); sleep(10 ); } 
  
  	fprintf(disk_fp, "\n============= CONFIG  mb_type=%d  mb_type_id=%d =============\n",
		     io_mb[iomb_addr].mb_type,io_mb[iomb_addr].mb_type_id       );
    if( io_mb[iomb_addr].mb_type==ANA )
    {  
	  if( io_mb[iomb_addr].yc[w_addr].scan_allow==YES )
	  {
	    if(   (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)
	        &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)   )	
		{ fprintf(disk_fp, "(%02d_%01d)%20s%15s %5.1f %5.1f %3d %3d %3d\n",
		          iomb_addr, w_addr,
	              io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,
                  io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,
                  io_mb[iomb_addr].yc[w_addr].yc_pid[0].data_up,
                  io_mb[iomb_addr].yc[w_addr].yc_pid[0].data_low,
                  io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_up,
                  io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_low,
                  io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_zero      );
		} 
	  }
  	}
		
	if(   (io_mb[iomb_addr].mb_type==SW)
		||(io_mb[iomb_addr].mb_type==TIME_SW) )
	{ 
	  if( io_mb[iomb_addr].yx[w_addr].scan_allow==YES ) 
	  {
	    for(k=0;k<16;k++)
		{  
	      if(  (strstr(io_mb[iomb_addr].yx[w_addr].yx_pid[k].c_name,"----")==NULL)
	         &&(strstr(io_mb[iomb_addr].yx[w_addr].yx_pid[k].l_name,"----")==NULL)   )
		  { fprintf(disk_fp, "(%2d_%01d_%02d)%20s%15s \n",
		            iomb_addr, w_addr, k,
	                io_mb[iomb_addr].yx[w_addr].yx_pid[k].c_name,
                    io_mb[iomb_addr].yx[w_addr].yx_pid[k].l_name   );
		  }
		}
      }
    }

	if( io_mb[iomb_addr].mb_type==BCD )		
	{ 
	  if( io_mb[iomb_addr].yc[w_addr].scan_allow==YES ) 
	  {	   
        if(  (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)
           &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)   )
		{ fprintf(disk_fp, "(%2d_%01d)%20s%15s \n",
	            iomb_addr, w_addr,
	            io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,
                io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name   );
		}
      }
    }

	if( io_mb[iomb_addr].mb_type==IMP )
	{ 
	  if( io_mb[iomb_addr].yc[w_addr].scan_allow==YES ) 
	  {	   
        if(  (strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"----")==NULL)
           &&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"----")==NULL)   )
		{ fprintf(disk_fp, "(%2d_%01d)%20s%15s %5.1f %5.1f \n",
	            iomb_addr, w_addr,
	            io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,
                io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,
				io_mb[iomb_addr].yc[w_addr].yc_pid[0].EMS_imp_cvt,
				io_mb[iomb_addr].yc[w_addr].yc_pid[0].PD_imp_cvt   );
		}
      }
    }
	fprintf(disk_fp, "-----------------------------------------------------------\n\n");
    fclose(disk_fp);
}


void Print_iomb_cfg_all(  )
{ int i, j, k;
  for(i=0;i<MAX_MODULE_NU;i++)
  { 
    if( io_mb[i].mb_used!=YES )continue;
	printf("\n============= iomb=%02d  mb_type=%d  mb_type_id=%d ============\n",
		     i,io_mb[i].mb_type,io_mb[i].mb_type_id         );
    if( io_mb[i].mb_type==ANA )
    { 
      for(j=0;j<8;j++)
      { if( io_mb[i].yc[j].scan_allow!=YES )continue; 
	    if(  (strstr(io_mb[i].yc[j].yc_pid[0].c_name,"----")==NULL)
	         &&(strstr(io_mb[i].yc[j].yc_pid[0].l_name,"----")==NULL)   )	
		{ printf("%d%20s%20s %5.1f %5.1f %3d %3d %3d\n",j,
	              io_mb[i].yc[j].yc_pid[0].c_name,
                  io_mb[i].yc[j].yc_pid[0].l_name,
                  io_mb[i].yc[j].yc_pid[0].data_up,
                  io_mb[i].yc[j].yc_pid[0].data_low,
                  io_mb[i].yc[j].yc_pid[0].mea_up,
                  io_mb[i].yc[j].yc_pid[0].mea_low,
                  io_mb[i].yc[j].yc_pid[0].mea_zero      );
		}
	  }
  	}
		
	if(   (io_mb[i].mb_type==SW )
		||(io_mb[i].mb_type==TIME_SW) )
	{ 
      for(j=0;j<8;j++)
      { if( io_mb[i].yx[j].scan_allow!=YES )continue; 
		printf(".............word_addr=%d\n",j);
	    for(k=0;k<16;k++)
        { 
		  if(  (strstr(io_mb[i].yx[j].yx_pid[k].c_name,"----")==NULL)
	         &&(strstr(io_mb[i].yx[j].yx_pid[k].l_name,"----")==NULL)   )
		  { printf("%d%20s%20s \n",k,
	                io_mb[i].yx[j].yx_pid[k].c_name,
                    io_mb[i].yx[j].yx_pid[k].l_name   );
          }
        }  
      }
    }
	printf("-----------------------------------------------------------\n\n");
  }
}

⌨️ 快捷键说明

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