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

📄 rcs900.c

📁 在Unix平台下完成的电力系统广发使用的IEC103规约的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "iec103.h"
#include "rcs900.h"

extern  SENDDEF       SendDef;
extern  RCVDEF        RcvDef;
extern  IECDEF        *pIECDEF[MaxIECNum],*pIEC;
extern  char          hostname[NAME_SIZE+1];
extern  int           Enqflag;

extern  SysDef       *pSysDef;

RCS_PL1_Proc(addr)
unsigned char addr;
{
alarm_msg Alarm_Msg;
audio_msg Audio;
unsigned char i,j,typeid,funtype,infno,dpi,cpu,width,num,dot,*p;
char str[128],pStr[128],file1[32];
int audio,ms,set_num;
float tmpdata;
int len,kod;
FILE *fp1;


      Alarm_Msg.alarm  = 1;
      Alarm_Msg.log    = 1;
      Alarm_Msg.n      = 0;
      Alarm_Msg.state  = 0x80;
      Alarm_Msg.data1  = 0;
      Alarm_Msg.data2  = 0;
      Alarm_Msg.data3  = 0;

      typeid  = RcvDef.Buf[6];
      funtype = RcvDef.Buf[10];
      infno   = RcvDef.Buf[11];
      len = 10;

      switch (typeid)
      {
      case M_TTM_TA:
         if( RcvDef.Buf[8] != COT_SPN ) break;
         Alarm_Msg.hour   = RcvDef.Buf[16] & 0x3f;
         Alarm_Msg.minute = RcvDef.Buf[15] & 0x3f;
         Alarm_Msg.second =  (RcvDef.Buf[14]*256+RcvDef.Buf[13])/1000;
         Alarm_Msg.ms     = ((RcvDef.Buf[14]*256+RcvDef.Buf[13])%1000)*10;
         strcpy(Alarm_Msg.alarm_tag,(char *)pSysDef+(int)pIECDEF[addr]->alarmtag);

         switch (funtype)
         {
           case 0xb2:
              for( i=0;i<sizeof(RCS_B2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_B2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_B2_Event[i].text);
              audio = RCS_B2_Event[i].audio;
              dpi = RCS_B2_Event[i].dpi;
              break;
           case 0xb8:
              for( i=0;i<sizeof(RCS_B8_Event)/sizeof(EVTALM);i++ )
                   if( RCS_B8_Event[i].index == infno ) break;
              strcpy(pStr,RCS_B8_Event[i].text);
              audio = RCS_B8_Event[i].audio;
              dpi = RCS_B8_Event[i].dpi;
              break;
           case 0xc2:
              for( i=0;i<sizeof(RCS_C2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C2_Event[i].text);
              audio = RCS_C2_Event[i].audio;
              dpi = RCS_C2_Event[i].dpi;
              break;
           case 0xc3:
              for( i=0;i<sizeof(RCS_C3_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C3_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C3_Event[i].text);
              audio = RCS_C3_Event[i].audio;
              dpi = RCS_C3_Event[i].dpi;
              break;
           case 0xc4:
              for( i=0;i<sizeof(RCS_C4_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C4_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C4_Event[i].text);
              audio = RCS_C4_Event[i].audio;
              dpi = RCS_C4_Event[i].dpi;
              break;
           case 0xc5:
              for( i=0;i<sizeof(RCS_C5_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C5_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C5_Event[i].text);
              audio = RCS_C5_Event[i].audio;
              dpi = RCS_C5_Event[i].dpi;
              break;
           case 0xc6:
              for( i=0;i<sizeof(RCS_C6_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C6_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C6_Event[i].text);
              audio = RCS_C6_Event[i].audio;
              dpi = RCS_C6_Event[i].dpi;
              break;
           case 0xd2:
              for( i=0;i<sizeof(RCS_D2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_D2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_D2_Event[i].text);
              audio = RCS_D2_Event[i].audio;
              dpi = RCS_D2_Event[i].dpi;
              break;
           case 0xd3:
              for( i=0;i<sizeof(RCS_D3_Event)/sizeof(EVTALM);i++ )
                   if( RCS_D3_Event[i].index == infno ) break;
              strcpy(pStr,RCS_D3_Event[i].text);
              audio = RCS_D3_Event[i].audio;
              dpi = RCS_D3_Event[i].dpi;
              break;
           case 0xe2:
              for( i=0;i<sizeof(RCS_E2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_E2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_E2_Event[i].text);
              audio = RCS_E2_Event[i].audio;
              dpi = RCS_E2_Event[i].dpi;
              break;
           case 0xe3:
              for( i=0;i<sizeof(RCS_E3_Event)/sizeof(EVTALM);i++ )
                   if( RCS_E3_Event[i].index == infno ) break;
              strcpy(pStr,RCS_E3_Event[i].text);
              audio = RCS_E3_Event[i].audio;
              dpi = RCS_E3_Event[i].dpi;
              break;
           case 0xe6:
              for( i=0;i<sizeof(RCS_E6_Event)/sizeof(EVTALM);i++ )
                   if( RCS_E6_Event[i].index == infno ) break;
              strcpy(pStr,RCS_E6_Event[i].text);
              audio = RCS_E6_Event[i].audio;
              dpi = RCS_E6_Event[i].dpi;
              break;
           case 0xf2:
              for( i=0;i<sizeof(RCS_F2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_F2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_F2_Event[i].text);
              audio = RCS_F2_Event[i].audio;
              dpi = RCS_F2_Event[i].dpi;
              break;
           case 0xf8:
              for( i=0;i<sizeof(RCS_F8_Event)/sizeof(EVTALM);i++ )
                   if( RCS_F8_Event[i].index == infno ) break;
              strcpy(pStr,RCS_F8_Event[i].text);
              audio = RCS_F8_Event[i].audio;
              dpi = RCS_F8_Event[i].dpi;
              break;
           default:
              printf("functione no define!\n");
              break;
         }

         if( RcvDef.Buf[12]==2 )  strcpy(str,"动作");
         else
           if( RcvDef.Buf[12]==1 )  strcpy(str,"复归");
         else strcpy(str,"无效");

         sprintf(Alarm_Msg.msg,"%s%s%s(%s)",
            ((char *)pSysDef+(int)pIECDEF[addr]->FB.pDescript),pStr,str,hostname);
         build_alarm(&Alarm_Msg,0);
         if( audio !=0 ){
             Audio.audio_no =audio;
             audio_alarm(&Audio);
         }
         break;
      case M_TMR_TA:
         if( RcvDef.Buf[8] != COT_SPN ) break;
         Alarm_Msg.hour   = RcvDef.Buf[20] & 0x3f;
         Alarm_Msg.minute = RcvDef.Buf[19] & 0x3f;
         Alarm_Msg.second =  (RcvDef.Buf[18]*256+RcvDef.Buf[17])/1000;
         Alarm_Msg.ms     = ((RcvDef.Buf[18]*256+RcvDef.Buf[17])%1000)*10;
         strcpy(Alarm_Msg.alarm_tag,(char *)pSysDef+(int)pIECDEF[addr]->alarmtag);

         switch (funtype)
         {
           case 0xb2:
              for( i=0;i<sizeof(RCS_B2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_B2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_B2_Event[i].text);
              audio = RCS_B2_Event[i].audio;
              dpi = RCS_B2_Event[i].dpi;
              break;
           case 0xb8:
              for( i=0;i<sizeof(RCS_B8_Event)/sizeof(EVTALM);i++ )
                   if( RCS_B8_Event[i].index == infno ) break;
              strcpy(pStr,RCS_B8_Event[i].text);
              audio = RCS_B8_Event[i].audio;
              dpi = RCS_B8_Event[i].dpi;
              break;
           case 0xc2:
              for( i=0;i<sizeof(RCS_C2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C2_Event[i].text);
              audio = RCS_C2_Event[i].audio;
              dpi = RCS_C2_Event[i].dpi;
              break;
           case 0xc3:
              for( i=0;i<sizeof(RCS_C3_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C3_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C3_Event[i].text);
              audio = RCS_C3_Event[i].audio;
              dpi = RCS_C3_Event[i].dpi;
              break;
           case 0xc4:
              for( i=0;i<sizeof(RCS_C4_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C4_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C4_Event[i].text);
              audio = RCS_C4_Event[i].audio;
              dpi = RCS_C4_Event[i].dpi;
              break;
           case 0xc5:
              for( i=0;i<sizeof(RCS_C5_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C5_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C5_Event[i].text);
              audio = RCS_C5_Event[i].audio;
              dpi = RCS_C5_Event[i].dpi;
              break;
           case 0xc6:
              for( i=0;i<sizeof(RCS_C6_Event)/sizeof(EVTALM);i++ )
                   if( RCS_C6_Event[i].index == infno ) break;
              strcpy(pStr,RCS_C6_Event[i].text);
              audio = RCS_C6_Event[i].audio;
              dpi = RCS_C6_Event[i].dpi;
              break;
           case 0xd2:
              for( i=0;i<sizeof(RCS_D2_Event)/sizeof(EVTALM);i++ )
                   if( RCS_D2_Event[i].index == infno ) break;
              strcpy(pStr,RCS_D2_Event[i].text);
              audio = RCS_D2_Event[i].audio;
              dpi = RCS_D2_Event[i].dpi;
              break;
           case 0xd3:
              for( i=0;i<sizeof(RCS_D3_Event)/sizeof(EVTALM);i++ )
                   if( RCS_D3_Event[i].index == infno ) break;
              strcpy(pStr,RCS_D3_Event[i].text);
              audio = RCS_D3_Event[i].audio;
              dpi = RCS_D3_Event[i].dpi;
              break;

⌨️ 快捷键说明

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