📄 104lib.c
字号:
}void rAssociateAck(){ int i,j,k,len; unsigned char buf[MAX_DATA_LEN],*ptr; memset( buf,0,MAX_DATA_LEN ); buf[0] = 0x68; buf[1] = 0x04; buf[2] = 0x0b; buf[3] = 0x00; buf[4] = 0x00; buf[5] = 0x00; pShmSocket.send_len = 6; memcpy( pShmSocket.send_data,buf,6 ); send_msg();}void rTestAck(){ int i,j,k,len; unsigned char buf[MAX_DATA_LEN],*ptr; memset( buf,0,MAX_DATA_LEN ); buf[0] = 0x68; buf[1] = 0x04; buf[2] = 0x83; buf[3] = 0x00; buf[4] = 0x00; buf[5] = 0x00; pShmSocket.send_len = 6; memcpy( pShmSocket.send_data,buf,6 ); send_msg();}void rTestAct(){ int i,j,k,len; unsigned char buf[MAX_DATA_LEN],*ptr; memset( buf,0,MAX_DATA_LEN ); buf[0] = 0x68; buf[1] = 0x04; buf[2] = 0x43; buf[3] = 0x00; buf[4] = 0x00; buf[5] = 0x00; pShmSocket.send_len = 6; memcpy( pShmSocket.send_data,buf,6 ); send_msg();}void rAbort(){ int i,j,k,len; unsigned char buf[MAX_DATA_LEN],*ptr; memset( buf,0,MAX_DATA_LEN ); buf[0] = 0x68; buf[1] = 0x04; buf[2] = 0x13; buf[3] = 0x00; buf[4] = 0x00; buf[5] = 0x00; pShmSocket.send_len = 6; memcpy( pShmSocket.send_data,buf,6 ); send_msg();}void refresh_buf(){ int i,j,k,sp_num,dp_num; float fvalue; struct tm *ptm; long tmp; for(i=0;i<AIN_NUM_DD;i++){ if(AinList[i].high-AinList[i].low<0.1) fvalue=pAin[i].value/SRC_SCALE*DES_SCALE; else{ if(pAin[i].value>AinList[i].high)fvalue=DES_SCALE; else if(pAin[i].value<AinList[i].low){ if(AinList[i].low>0.1||AinList[i].low<-0.1) fvalue=0.0; else if(pAin[i].value<-1.0*AinList[i].high)fvalue=-1.0*DES_SCALE; else fvalue=pAin[i].value/(AinList[i].high-AinList[i].low)*DES_SCALE; } else fvalue=pAin[i].value/(AinList[i].high-AinList[i].low)*DES_SCALE; } if(AinList[i].value - fvalue >5.0*DES_SCALE/SRC_SCALE||fvalue-AinList[i].value>5.0*DES_SCALE/SRC_SCALE){ AinList[i].com=1;/* printf("fvalue=%f\n",fvalue);*/ } AinList[i].value=fvalue; } sp_num=0;dp_num=0; for(i=0;i<DIN_NUM_DD;i++){ if(DinList[i].value!=pDin[i].value)DinList[i].cos=1; DinList[i].value=pDin[i].value; if(DinList[i].dp_flag){ if(pDin[i].value==2&&DinList[i].cos){ tmp = time(NULL); ptm = (struct tm *)localtime(&tmp); pDPSoe[dp_soe_num].addr = dp_num+1; pDPSoe[dp_soe_num].hour = ptm->tm_hour; pDPSoe[dp_soe_num].minute= ptm->tm_min; pDPSoe[dp_soe_num].second= ptm->tm_sec; pDPSoe[dp_soe_num].ms = 0; pDPSoe[dp_soe_num].state = 0; dp_soe_num++; } pDPDin[dp_num].cos=DinList[i].cos; pDPDin[dp_num].value=DinList[i].value+1; dp_num++; } else { pSPDin[sp_num].cos=DinList[i].cos; pSPDin[sp_num].value=DinList[i].value; sp_num++; } DinList[i].cos=0; } for(i=0;i<PIN_NUM_DD;i++){ if(PinList[i].value-pPin[i].value>0.001||pPin[i].value-PinList[i].value>0.001)PinList[i].com=1; PinList[i].value=pPin[i].value; } for(i=0;i<TAP_NUM_DD;i++){ if(TapList[i].value-pTap[i].value>0.001||pTap[i].value-TapList[i].value>0.001)TapList[i].com=1; TapList[i].value=pTap[i].value; } for(i=0;i<BCD_NUM_DD;i++){ if(BcdList[i].value-pBcd[i].value>0.001||pBcd[i].value-BcdList[i].value>0.001)BcdList[i].com=1; BcdList[i].value=pBcd[i].value; } if((pRdbDd->oflag==1)||( soe_rptr != pRdbDd->wptr) ){/*printf("soe_process!\n");*/ k = soe_rptr; do{ if(pRdbDd->pSOE[k].addr<=SOE_NUM_DD&&pRdbDd->pSOE[k].addr>0){ if(SoeList[pRdbDd->pSOE[k].addr-1].dp_flag){ if(dp_soe_num<MaxSoeNum){ pDPSoe[dp_soe_num].addr=SoeList[pRdbDd->pSOE[k].addr-1].addr; pDPSoe[dp_soe_num].hour=pRdbDd->pSOE[k].hour; pDPSoe[dp_soe_num].minute=pRdbDd->pSOE[k].minute; pDPSoe[dp_soe_num].second=pRdbDd->pSOE[k].second; pDPSoe[dp_soe_num].ms=pRdbDd->pSOE[k].ms; pDPSoe[dp_soe_num].state=pRdbDd->pSOE[k].state+1; dp_soe_num++; } }else { if(sp_soe_num<MaxSoeNum){ pSPSoe[sp_soe_num].addr=SoeList[pRdbDd->pSOE[k].addr-1].addr; pSPSoe[sp_soe_num].hour=pRdbDd->pSOE[k].hour; pSPSoe[sp_soe_num].minute=pRdbDd->pSOE[k].minute; pSPSoe[sp_soe_num].second=pRdbDd->pSOE[k].second; pSPSoe[sp_soe_num].ms=pRdbDd->pSOE[k].ms; pSPSoe[sp_soe_num].state=pRdbDd->pSOE[k].state; sp_soe_num++; } } } k = ( k + 1 ) % MaxSoeNum; }while( k != pRdbDd->wptr ); soe_rptr = k; pRdbDd->rptr=k; pRdbDd->oflag= 0; }}void M_SP_NA_Proc(){ int i,j,k,count,i_val; unsigned char data_buf[MAX_MSG_LEN],*ptr; int max_num,size,cos_flag; count=0; cos_flag=0; size=4; ptr=data_buf; if(!ic_flag){ for( i=0;i<SP_NUM_DD;i++ ){ if( pSPDin[i].cos ){ ptr[count*size] = (DIN_START_NO+i) &0xff; ptr[count*size+1] = (((DIN_START_NO+i)%1024)>>8) &0xff; ptr[count*size+2] = ((DIN_START_NO+i)/1024) &0xff; ptr[count*size+3] = pSPDin[i].value & 0x01; count++; pSPDin[i].cos = 0; cos_flag=1; cot=3; } if( count * size >= MAX_MSG_LEN ) break; } } if( ((NowTime.time - DinTime.time > DinTimeOver)||ic_flag) && DIN_NUM_DD&&!cos_flag ){ size=1; if(ic_flag)cot=20; else cot=2; for( i=0;i<SP_NUM_DD;i++ ){ ptr[count*size] = pSPDin[i].value & 0x01; count++; } ftime( &LastTime ); ftime( &DinTime ); } if ( count > 0 ){ i=0; j=0; max_num=(MAX_APDU_LEN-15)/size; while ( count > max_num ){ if(cos_flag) M_PrepCmd(M_SP_NA,0,0, &(data_buf[i]),max_num,size ); else M_PrepCmd(M_SP_NA,1,DIN_START_NO+j*max_num, &(data_buf[i]),max_num,size); i = i + max_num*size; count = count - max_num; j++; } if(cos_flag) M_PrepCmd(M_SP_NA,0,0, &(data_buf[i]),count,size); else M_PrepCmd(M_SP_NA,1,DIN_START_NO+j*max_num,&(data_buf[i]),count,size); }}void M_DP_NA_Proc(){ int i,j,k,count,i_val; unsigned char data_buf[MAX_MSG_LEN],*ptr; int max_num,size,cos_flag; count=0; cos_flag=0; size=4; ptr=data_buf; if(!ic_flag){ for( i=0;i<DP_NUM_DD;i++ ){ if( pDPDin[i].cos ){ ptr[count*size] = (DIN_START_NO+i) &0xff; ptr[count*size+1] = ((DIN_START_NO+i)>>8) &0xff; ptr[count*size+2] = ((DIN_START_NO+i)>>16) &0xff; ptr[count*size+3] = pDPDin[i].value & 0x03 ; count++; pDPDin[i].cos = 0; cos_flag=1; cot=3; } if( count * size >= MAX_MSG_LEN ) break; } } if( ((NowTime.time - DPTime.time > DinTimeOver)||ic_flag) && DIN_NUM_DD&&!cos_flag ){ size=1; if(ic_flag)cot=20; else cot=2; for( i=0;i<DP_NUM_DD;i++ ){ ptr[count*size] = pDPDin[i].value & 0x03; count++; } ftime( &LastTime ); ftime( &DPTime ); } if ( count > 0 ){ i=0; j=0; max_num=(MAX_APDU_LEN-15)/size; while ( count > max_num ){ if(cos_flag) M_PrepCmd(M_DP_NA,0,0, &(data_buf[i]),max_num,size ); else M_PrepCmd(M_DP_NA,1,DIN_START_NO+j*max_num, &(data_buf[i]),max_num,size); i = i + max_num*size; count = count - max_num; j++; } if(cos_flag) M_PrepCmd(M_DP_NA,0,0, &(data_buf[i]),count,size); else M_PrepCmd(M_DP_NA,1,DIN_START_NO+j*max_num,&(data_buf[i]),count,size); }}void M_ST_NA_Proc(){ int i,j,k,count,i_val; unsigned char data_buf[MAX_MSG_LEN],*ptr; int max_num,size,com_flag; count=0; com_flag=0; size=5; ptr=data_buf; if(!ic_flag){ for( i=0;i<TAP_NUM_DD;i++ ){ if( TapList[i].com ){ ptr[count*size] = (TAP_START_NO+i) & 0xff; ptr[count*size+1] = ((TAP_START_NO+i)>>8)&0xff; ptr[count*size+2] = ((TAP_START_NO+i)>>16)&0xff; ptr[count*size+3] = 0x00; ptr[count*size+4] = TapList[i].value & 0xff; count++; TapList[i].com = 0; cot=3; com_flag=1; } if( count * size >= MAX_MSG_LEN ) break; } if(!com_flag){ if( (NowTime.time - TapTime.time > TapTimeOver)&& TAP_NUM_DD ){ for( i=0;i<TAP_NUM_DD;i++ ){ ptr[count*size] = (TAP_START_NO+i) & 0xff; ptr[count*size+1] = ((TAP_START_NO+i)>>8)&0xff; ptr[count*size+2] = ((TAP_START_NO+i)>>16)&0xff; ptr[count*size+3] = 0x00; ptr[count*size+4] = TapList[i].value & 0xff; count++; cot=2; if( count * size >= MAX_MSG_LEN ) break; } ftime( &TapTime ); } } }else { for( i=0;i<TAP_NUM_DD;i++ ){ ptr[count*size] = (TAP_START_NO+i) & 0xff; ptr[count*size+1] = ((TAP_START_NO+i)>>8)&0xff; ptr[count*size+2] = ((TAP_START_NO+i)>>16)&0xff; ptr[count*size+3] = 0x00; ptr[count*size+4] = TapList[i].value & 0xff; count++; cot=20; if( count * size >= MAX_MSG_LEN ) break; } } if ( count > 0 ){ i=0; max_num=(MAX_APDU_LEN-15)/size; while ( count > max_num ){ M_PrepCmd(M_ST_NA,0,0, &(data_buf[i]),max_num,size); i = i + max_num*4; count = count - max_num; } M_PrepCmd(M_ST_NA,0,0, &(data_buf[i]),count,size); return; }}void M_ME_NA_Proc(){ int i,j,k,count,i_val; unsigned char data_buf[MAX_MSG_LEN],*ptr; unsigned short s_val; int max_num,size; int com_flag; count=0; com_flag=0; size=6; ptr=data_buf; if(!ic_flag){ if(NowTime.time - ComTime.time > 1){ for( i=0;i<AIN_NUM_DD;i++ ){ if( AinList[i].com ){ AinList[i].com = 0; s_val = AinList[i].value; ptr[count*size] = (AIN_START_NO+i) &0xff; ptr[count*size+1] = ((AIN_START_NO+i)>>8) &0xff; ptr[count*size+2] = ((AIN_START_NO+i)>>16) &0xff; if( MyByteOrder ) rReverse( (char *)&s_val,sizeof(short) ); memcpy( (char *)&(ptr[count*size+3]),(char *)&s_val,sizeof(short) ); ptr[count*size+5] = 0; count++; com_flag=1; cot=3; } if( count * size >= MAX_MSG_LEN ) break; } ftime( &ComTime); } } if( ((NowTime.time - AinTime.time > AinTimeOver)||ic_flag) && AIN_NUM_DD &&!com_flag ){ for( i=0;i<AIN_NUM_DD;i++ ){ if(ic_flag)cot=20; else cot=2; size=3; s_val = AinList[i].value; if( MyByteOrder ) rReverse( (char *)&s_val,sizeof(short) ); memcpy( (char *)&(ptr[count*size]),(char *)&s_val,sizeof(short) ); ptr[count*size+2] = 0; count++; } ftime( &LastTime ); ftime( &AinTime ); } if ( count > 0 ){ i=0; j=0; max_num=(MAX_APDU_LEN-15)/size; while ( count > max_num ){ if(com_flag) M_PrepCmd(M_ME_NA,0,0, &(data_buf[i]),max_num,size); else M_PrepCmd(M_ME_NA,1,AIN_START_NO+j*max_num, &(data_buf[i]),max_num,size); i = i + max_num*size; count = count - max_num; } if(com_flag) M_PrepCmd(M_ME_NA,0,0, &(data_buf[i]),count,size); else M_PrepCmd(M_ME_NA,1,AIN_START_NO+j*max_num, &(data_buf[i]),count,size); }}void M_IT_NA_Proc(){ int i,j,k,count,i_val; unsigned char data_buf[MAX_MSG_LEN],*ptr; int max_num; int size; if( (NowTime.time - PinTime.time > PinTimeOver)||ic_flag){ ftime( &LastTime ); ftime( &PinTime ); count=0; size = 8; ptr=data_buf; if(ic_flag)cot=20; else cot=2; for( i=0;i<PIN_NUM_DD;i++ ){ ptr[count*size] = (PIN_START_NO+i) & 0xff; ptr[count*size+1] = ((PIN_START_NO+i)>>8) & 0xff; ptr[count*size+2] = ((PIN_START_NO+i)>>16) & 0xff; i_val= PinList[i].value; if( !MyByteOrder ){ ptr[count*size+3] = i_val & 0xff; ptr[count*size+4] = (i_val>>8) & 0xff; ptr[count*size+5] = (i_val>>16) & 0xff; ptr[count*size+6] = (i_val>>24) & 0xff; }else { ptr[count*size+6] = i_val & 0xff; ptr[count*size+5] = (i_val>>8) & 0xff; ptr[count*size+4] = (i_val>>16) & 0xff; ptr[count*size+3] = (i_val>>24) & 0xff; } ptr[count*size+7] = i; count++; if( count * size >= MAX_MSG_LEN ) break; } if ( count > 0 ){ i=0; max_num=(MAX_APDU_LEN-15)/size; while ( count > max_num ){ M_PrepCmd(M_IT_NA,0,0,&(data_buf[i]),max_num,size); i = i + max_num*7; count = count - max_num; } M_PrepCmd(M_IT_NA,0,0, &(data_buf[i]),count,size); return; } }}void M_SP_TB_Proc(){ int i,j,k,count,i_val,addr; unsigned char data_buf[MAX_MSG_LEN],*ptr; unsigned short us_ms;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -