📄 init.c
字号:
#include "..\\inc\\comm.h"
#include "..\\inc\\n4f.h"
int sendstep, rcvlen;
char sendbuf[BUFSIZE], rcvbuf[BUFSIZE];
HANDLE hCom;
IO_MB io_mb[MAX_MODULE_NU];
int ANA_first_flag[MAX_MODULE_NU], SW_first_flag[MAX_MODULE_NU];
YK_GRP yk_grp[6];
int soe_flag;
SOE_REC soe_rec;
char para_grp_num;
void main()
{ DWORD IDThread;
HANDLE hThread;
int i;
MountDB(); Lan_init();
for(i=0;i<MAX_MODULE_NU;i++)
{ ANA_first_flag[i] = YES; SW_first_flag[i] = YES;}
para_grp_num=1;
Clear_iomb();
Clear_soe();
#ifdef FOR_HDWD
Read_info_table();
#else
#endif
while( Port_init()==FAILURE )
{ printf("Port_init() error.\n"); sleep(5); }
if((hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Real_data_proc,
NULL,0,&IDThread))==NULL)
{ printf("CreateThread() error!\n"); exit(-1); }
printf("Thread Realdata_proc() created!\n");
Rcv_data_proc();
}
void Clear_iomb()//清模板
{ int iomb_addr, w_addr, i, j;
for(iomb_addr=0;iomb_addr<MAX_MODULE_NU;iomb_addr++)
{ io_mb[iomb_addr].def_type = -1;
io_mb[iomb_addr].mb_type = -1;
io_mb[iomb_addr].mb_type_id = -1;
io_mb[iomb_addr].mb_used = NO;
for(w_addr=0;w_addr<8;w_addr++)
{ io_mb[iomb_addr].yc[w_addr].scan_allow = NO;
strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,"-----");
strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,"-----");
io_mb[iomb_addr].yc[w_addr].yc_pid[0].data_up = -1;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].data_low = -1;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_up = -1;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_low = -1;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_zero = -1;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].imp_old = 0;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].PD_imp_cvt = 1;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].EMS_imp_cvt= 1;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_value = 0;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].imp_old = 0;
io_mb[iomb_addr].yx[w_addr].scan_allow = NO;
io_mb[iomb_addr].yx[w_addr].soe_flag = NO;
for(i=0;i<16;i++)
{ strcpy(io_mb[iomb_addr].yx[w_addr].yx_pid[i].c_name,"-----");
strcpy(io_mb[iomb_addr].yx[w_addr].yx_pid[i].l_name,"-----");
}
}
}
for(i=0;i<6;i++)//清遥控组
{ yk_grp[i].config = NO;
for(j=0;j<8;j++)
{ strcpy(yk_grp[i].ctrl_pnt[j].c_name,"-----");
strcpy(yk_grp[i].ctrl_pnt[j].l_name,"-----");
yk_grp[i].ctrl_pnt[j].dev_id = -1;
yk_grp[i].ctrl_pnt[j].data_type= -1;
yk_grp[i].ctrl_pnt[j].point_id = -1;
}
}
}
void Clear_soe()//清SOE记录区
{ int i;
soe_rec.syn_time = time( NULL );
for(i=0;i<MAX_SOE_REC;i++)
{ soe_rec.soe_buf[i].used = NO; }
}
void Read_info_table()/*------------- 读信息表 --------------*/
{ FILE *table_fp, *disk_fp;
int i, pid, mea_up, mea_low, mea_zero;
float data_up, data_low, ems_cvt, pd_cvt;
char tmp[100], tmp0[200], tmp1[200], c_name[100], l_name[100];
int iomb_addr, w_addr, grp_addr;
strcpy(tmp,"del "); strcat(tmp,IOMB_CONFIG_VALID);
printf("%s",tmp); system(tmp);
while((table_fp=fopen(INFO_TABLE,"r"))==NULL)
{ printf("%s can not open\n",INFO_TABLE); sleep(10 ); }
for(i=0;i<13;i++){ fscanf(table_fp,"%s",tmp0); }
while((disk_fp=fopen(INFO_TABLE_VALID,"w"))==NULL)
{ printf("%s can not open\n",INFO_TABLE_VALID); sleep(10 ); }
LOOP:
if( fscanf(table_fp,"%s",tmp0)==EOF)
{ printf("CLOSE_INFOTABLE_FILE!\n"); fclose( table_fp );
printf("CLOSE_INFOTABLE_VALID!\n"); fclose( disk_fp );
return;
}
if( strcmp(tmp0,"END")==0 )
{ printf("CLOSE_INFOTABLE_FILE!\n"); fclose( table_fp );
printf("CLOSE_INFOTABLE_VALID!\n"); fclose( disk_fp );
return;
}
fscanf(table_fp,"%s %d %s %s ",tmp0, &iomb_addr, tmp0, tmp1);
printf("======>> iomb_addr=%d\n",iomb_addr);
if( ( strcmp(tmp1,"YC")==0 )||( strcmp(tmp1,"YT")==0 ) )//遥测板、遥调板
{
for(i=0;i<18;i++)
{ fscanf(table_fp,"%s",tmp0); }
for(;;)
{ fscanf(table_fp,"%d",&w_addr);
if(w_addr==-1 ){ goto LOOP; }
if( strcmp(tmp1,"YC")==0 )
{ io_mb[iomb_addr].def_type = YC_TYPE; }
if( strcmp(tmp1,"YT")==0 )
{ io_mb[iomb_addr].def_type = YT_TYPE; }
fscanf(table_fp,"%s %s %f %f %d %d %d ",
c_name, l_name, &data_low, &data_up, &mea_low, &mea_up, &mea_zero );
io_mb[iomb_addr].yc[w_addr].scan_allow = NO;
strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].c_name,c_name);
strcpy(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,l_name);
io_mb[iomb_addr].yc[w_addr].yc_pid[0].data_up = data_up;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].data_low= data_low;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_up = mea_up;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_low = mea_low;
io_mb[iomb_addr].yc[w_addr].yc_pid[0].mea_zero= mea_zero;
fprintf(disk_fp,"(%d_%d)%25s%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( (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,".ANA.") ==NULL)
&&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,".NUM.") ==NULL)
&&(strstr(io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name,".PARAM.") ==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("YC_YT: %s error!\n",io_mb[iomb_addr].yc[w_addr].yc_pid[0].l_name); sleep(5); }
}
}
}
else
if( strcmp(tmp1,"YX")==0 ) //遥信板
{ fscanf(table_fp,"%s %d ",tmp0, &w_addr );
for(i=0;i<5;i++)
{ fscanf(table_fp,"%s",tmp0); }
io_mb[iomb_addr].yx[w_addr].scan_allow = NO;
for(;;)
{ fscanf(table_fp,"%d ",&pid);
if( pid==-1 ){ goto LOOP; }
io_mb[iomb_addr].def_type = YX_TYPE;
fscanf(table_fp,"%s %s ", c_name, l_name );
strcpy(io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name,l_name);
strcpy(io_mb[iomb_addr].yx[w_addr].yx_pid[pid].c_name,c_name);
fprintf(disk_fp,"(%d_%d_%d)%25s%15s \n",iomb_addr,w_addr,pid,
io_mb[iomb_addr].yx[w_addr].yx_pid[pid].c_name,
io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name );
if( (strstr(io_mb[iomb_addr].yx[w_addr].yx_pid[pid].c_name,"----")==NULL)
&&(strstr(io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name,"----")==NULL) )
{
while((strstr(io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name,".INT.") ==NULL)
&&(strstr(io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name,".POL.") ==NULL)
&&(strstr(io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name,".SYSMSG.")==NULL) )
{ printf("Read_info_table(): 板地址=%d 字地址=%d 序号=%d data_type err!\n",iomb_addr,w_addr,pid);
Sleep(5*1000);
}
while( DBread_by_name( io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name )==NULL )
{ printf("YX: %s error!\n",io_mb[iomb_addr].yx[w_addr].yx_pid[pid].l_name); sleep(5); }
}
}
}
else
if( strcmp(tmp1,"YK")==0 ) // 遥控
{ fscanf(table_fp,"%s %d ",tmp0, &grp_addr );
for(i=0;i<5;i++)
{ fscanf(table_fp,"%s",tmp0); }
for(;;)
{ fscanf(table_fp,"%d ",&pid);
if( pid==-1 ){ goto LOOP; }
io_mb[iomb_addr].def_type = YK_TYPE;
fscanf(table_fp,"%s %s ", c_name, l_name );
strcpy(yk_grp[grp_addr].ctrl_pnt[pid].l_name,l_name);
strcpy(yk_grp[grp_addr].ctrl_pnt[pid].c_name,c_name);
fprintf(disk_fp,"(yk_grp: %d_%d)%25s%15s \n",grp_addr,pid,
yk_grp[grp_addr].ctrl_pnt[pid].c_name,
yk_grp[grp_addr].ctrl_pnt[pid].l_name );
if( (strstr(yk_grp[grp_addr].ctrl_pnt[pid].l_name,"----")==NULL)
&&(strstr(yk_grp[grp_addr].ctrl_pnt[pid].c_name,"----")==NULL) )
{
while((strstr(yk_grp[grp_addr].ctrl_pnt[pid].l_name,".INT.") ==NULL)
&&(strstr(yk_grp[grp_addr].ctrl_pnt[pid].l_name,".POL.") ==NULL)
&&(strstr(yk_grp[grp_addr].ctrl_pnt[pid].l_name,".SYSMSG.")==NULL) )
{ printf("Read_info_table(): 遥控组号=%d 点号=%d data_type err!\n",grp_addr,pid);
Sleep(5*1000);
}
while( DBread_by_name( yk_grp[grp_addr].ctrl_pnt[pid].l_name )==NULL )
{ printf("YK: %s error!",yk_grp[grp_addr].ctrl_pnt[pid].l_name); sleep(5); }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -