📄 init.c
字号:
}
}
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 + -