亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nsiec104server.c

?? 南瑞的IEC104規約實現的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
                 if(YcNap<0)
                      YcNap=NsIec104Struct.YcLastValue[NsIec104Struct.YcLibIndex+i]-YcValue;
 
                 if(YcNap>NsIec104Struct.YcNap[NsIec104Struct.YcLibIndex+i])
                 {
                      NsIec104Struct.YcChangeCount++;
                      NsIec104Struct.YcLastValue[NsIec104Struct.YcLibIndex+i]=YcValue;*/    
                      /* Information Object Address Now Three Bytes */
                      General=0x701+NsIec104Struct.YcLibIndex+i;
                      P=(unsigned char    *)&General;
                      NsIec104Struct.SendBuffer[Index++]=P[0];
                      NsIec104Struct.SendBuffer[Index++]=P[1];
                      NsIec104Struct.SendBuffer[Index++]=0;

                      /*fYc = YcValue * 1.0;
		      P=(unsigned char    *)&fYc;
			
		      NsIec104Struct.SendBuffer[Index++]=P[0];
                      NsIec104Struct.SendBuffer[Index++]=P[1];
 		      NsIec104Struct.SendBuffer[Index++]=P[2];
                      NsIec104Struct.SendBuffer[Index++]=P[3];*/
 		      NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.DataBuff[2*i];
                      NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.DataBuff[2*i + 1];
                      NsIec104Struct.SendBuffer[Index++]=0x00;  /*qds*/
                  /*}*/
          }

          /* Repair Length  and Count*/
          NsIec104Struct.SendBuffer[1]=Index-2;
          NsIec104Struct.SendBuffer[7]=NsIec104Struct.YcChangeCount;
          if(NsIec104Struct.YcChangeCount>0)
          {/*
             printf("\n Co=%d Ind=%dGe=%d",NsIec104Struct.YcChangeCount,NsIec104Struct.YcLibIndex,General);
			*/
             if((NsIec104Struct.SendLength=send(NsIec104Struct.NsNewSocketId,&NsIec104Struct.SendBuffer[0],Index,0x0))<0)
             {
	               perror ("Client FirstWrite Error");
             }
          }
}


static void  NsIec104SendGroup(void)
{
  if(NsIec104Struct.NeedSendNumber>0&&NsIec104Struct.HasSendNumber<NS_IEC104_MAX_K)
  {
     /*
           printf("\n GroupId=%d",NsIec104Struct.NsNewSocketId);
     */
     if((NsIec104Struct.SendLength=send(NsIec104Struct.NsNewSocketId,&NsIec104Struct.GroupSendBuffer[NsIec104Struct.LeftSendNumber][0],NsIec104Struct.GroupSendLength[NsIec104Struct.LeftSendNumber],0x0))<0)
     {
        perror ("GRoup Erroe");
     }
     
     NsIec104Struct.LeftSendNumber++;  
     /* 
       printf("\n Send Group=%d",NsIec104Struct.SendLength);
      */
    if(NsIec104Struct.LeftSendNumber>=NsIec104Struct.NeedSendNumber)
    {
       NsIec104Struct.HasSendNumber=0;
       NsIec104Struct.NeedSendNumber=0;
       NsIec104Struct.LeftSendNumber=0;
    }
  }
  taskDelay(108);

}


static void  NsIec104Process(void)
{
 int              i;

/*      printf("r:");
      for(i=0;i<NsIec104Struct.ReceiveLength;i++)
          printf("%4x",NsIec104Struct.ReceiveBuffer[i]);
      printf("\n");
*/      
    if(NsIec104Struct.ReceiveLength>=NS_IEC_104_MIN_LENGTH&&NsIec104Struct.ReceiveBuffer[0]==NS_IEC_104_HEAD)
    {                            
       NsIec104Struct.FormatType=NsIec104Struct.ReceiveBuffer[2]&0x03;
       if(NsIec104Struct.FormatType==0||NsIec104Struct.FormatType==2)            /* I */
       {
              NsIec104ProcessFormatI();
       }
       else 
       {
              if(NsIec104Struct.FormatType==1)     /*  S  */ 
                   NsIec104ProcessFormatS();
              else
              {
                   if(NsIec104Struct.FormatType==3)/*  U  */
                      NsIec104ProcessFormatU();
              }
        }
        NsIec104Reset();
    }

}

static  void  NsIec104ProcessFormatI(void)
{
int i;
unsigned  char   *p;
unsigned  short  NoWay;
/* 
       printf("\nFormatI");
*/
       NsIec104Struct.ApduLength=NsIec104Struct.ReceiveBuffer[1];
       if(NsIec104Struct.ApduLength>NS_IEC_104_MIN_LENGTH)
       {
          NsIec104Struct.ReceiveHimNumber[0]=NsIec104Struct.ReceiveBuffer[2];
          NsIec104Struct.ReceiveHimNumber[1]=NsIec104Struct.ReceiveBuffer[3];
          NoWay=*(unsigned short *)&NsIec104Struct.ReceiveHimNumber[0];
          NoWay>>=1;
          NoWay+=1;
          NoWay<<=1;
          p=(unsigned char *)&NoWay;
          NsIec104Struct.ReceiveHimNumber[0]=p[0];
          NsIec104Struct.ReceiveHimNumber[1]=p[1];

          NsIec104Struct.AsduType=NsIec104Struct.ReceiveBuffer[6];  

          for(i=0;i< NS_IEC_104_REASONBYTE;i++)
             NsIec104Struct.TransmitReason[i]=NsIec104Struct.ReceiveBuffer[NS_STARTREASON+i];
         
          for(i=0;i<NS_IEC_104_ASDUADDRESSBYTE;i++)
             NsIec104Struct.CommonAsduAddress[i]=NsIec104Struct.ReceiveBuffer[NS_STARTASDUADDRESS+i];

          for(i=0;i<NS_IEC_104_INFORMATIONBYTE;i++)
             NsIec104Struct.InformationObject[i]=NsIec104Struct.ReceiveBuffer[NS_STARTINFORMATION+i];

          NsIec104Struct.AsduQualifier=NsIec104Struct.ReceiveBuffer[NS_STARTQUALIFIER];  

          switch(NsIec104Struct.AsduType)
          {
             case 46:
             case 47:
                      NsIec104Struct.YkYtType=NsIec104Struct.AsduType;
                      NsIec104ProcessYkYt();
                      break;
             case 100:  /* Interrogation */
                      NsIec104Interrogation();
                      break;
             case 101:
                      NsIec104ProcessPulse();
                      break;
             case 103:
                      NsIec104ProcessTime();
                      /*
                        printf("\n Time1");
                       */
                      break;
             default:
                      break;
          }
       }
}


static  unsigned  char       NsIec104SendCosSoe(void)
{
unsigned short     Number;
NS_SOE_FORMAT      SoeData;
NS_COS_FORMAT      CosData;   
unsigned short     Index,SendCount;
unsigned char      *P,i,CosSendSign;
unsigned short     RealNumber,Object,Msecond;

  Index=0;
  CosSendSign=0;
  Number=NsCheckDd1Cos();
  if(Number>0)
  {
          if(Number>36)
             Number=36;
          SendCount=0;
          Index=0;
          NsIec104Struct.SendBuffer[Index++]=0x68;
          NsIec104Struct.SendBuffer[Index++]=0x00;

          RealNumber=(NsIec104Struct.SendMeNumber<<1);
          P=(unsigned char *)&RealNumber;
          NsIec104Struct.SendBuffer[Index++]=P[0];              /*     send number       */
          NsIec104Struct.SendBuffer[Index++]=P[1];
          NsIec104Struct.SendMeNumber=(NsIec104Struct.SendMeNumber+1)%65535;


          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.ReceiveHimNumber[0];              /*     receive number    */
          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.ReceiveHimNumber[1];

          NsIec104Struct.SendBuffer[Index++]=0x01;                 /*    0x01--->0x02 asdu type   */
          NsIec104Struct.SendBuffer[Index++]=1;                  /*    information object count  */

           /*  REASONBYTE  now is two */
          NsIec104Struct.SendBuffer[Index++]=0x03;               /*    reason  */
          NsIec104Struct.SendBuffer[Index++]=0x00;               /*    reason  */

             
          for(i=0;i<NS_IEC_104_ASDUADDRESSBYTE;i++)
             NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.CommonAsduAddress[i];
          for(i=0;i<Number;i++)
          {
               if(NsGetDd1CosLib(&CosData)==ON)
               {
                 SendCount++;
                 /* Information Object Address now three byte:  0xc01---0xc80 */
                 Object=CosData.SendNumber+0x01;
                 P=(unsigned char *)&Object;
                 NsIec104Struct.SendBuffer[Index++]=P[0];
                 NsIec104Struct.SendBuffer[Index++]=P[1];
                 NsIec104Struct.SendBuffer[Index++]=0x00;
                 NsIec104Struct.SendBuffer[Index++]=CosData.State;
               }

          }
          
          /* Repair Length */
          NsIec104Struct.SendBuffer[7]=SendCount;  /* vsq number */
          NsIec104Struct.SendBuffer[1]=Index-2;

  }
  else 
  {
      Number=NsCheckDd1Soe();
      if(Number>0)
      {
         if(Number>18)
            Number=18;
          SendCount=0;
          Index=0;
          NsIec104Struct.SendBuffer[Index++]=0x68;
          NsIec104Struct.SendBuffer[Index++]=0x00;

          RealNumber=(NsIec104Struct.SendMeNumber<<1);
          P=(unsigned char *)&RealNumber;
          NsIec104Struct.SendBuffer[Index++]=P[0];              /*     send number       */
          NsIec104Struct.SendBuffer[Index++]=P[1];
          NsIec104Struct.SendMeNumber=(NsIec104Struct.SendMeNumber+1)%65535;


          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.ReceiveHimNumber[0];              /*     receive number    */
          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.ReceiveHimNumber[1];

          NsIec104Struct.SendBuffer[Index++]=30;                 /*    asdu type   */
          NsIec104Struct.SendBuffer[Index++]=1;                  /*    information object count  */

           /*  REASONBYTE  now is two */
          NsIec104Struct.SendBuffer[Index++]=0x03;               /*    reason  */
          NsIec104Struct.SendBuffer[Index++]=0x00;               /*    reason  */

             
          for(i=0;i<NS_IEC_104_ASDUADDRESSBYTE;i++)
             NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.CommonAsduAddress[i];

          for(i=0;i<Number;i++)
          {
              if(NsGetDd1SoeLib(&SoeData)==ON)
              {               
                 SendCount++;
                 /* Information Object Address now three byte:  0xc01---0xc80 */
                 Object=SoeData.SendNumber+0x01;
                 P=(unsigned char *)&Object;
                 NsIec104Struct.SendBuffer[Index++]=P[0];
                 NsIec104Struct.SendBuffer[Index++]=P[1];
                 NsIec104Struct.SendBuffer[Index++]=0x00;
                 NsIec104Struct.SendBuffer[Index++]=SoeData.State;
                 Msecond=SoeData.Msecond+SoeData.Second*1000;
                 P=(unsigned char *)&Msecond;
                 NsIec104Struct.SendBuffer[Index++]=P[0];
                 NsIec104Struct.SendBuffer[Index++]=P[1];
                 NsIec104Struct.SendBuffer[Index++]=SoeData.Minute;
                 NsIec104Struct.SendBuffer[Index++]=SoeData.Hour;
                 NsIec104Struct.SendBuffer[Index++]=SoeData.Day;
                 NsIec104Struct.SendBuffer[Index++]=SoeData.Month;
                 NsIec104Struct.SendBuffer[Index++]=(SoeData.Year-2000);

              }
           }
          /* Repair Length */
          NsIec104Struct.SendBuffer[7]=SendCount;  /* vsq number */
          NsIec104Struct.SendBuffer[1]=Index-2;
      }
      else 
      {
         if(NsIec104Cycle[0].TimeSign== ON)
         {
                    Index=0;
                    NsIec104Struct.SendBuffer[Index++]=0x68;
                    NsIec104Struct.SendBuffer[Index++]=0x04;
                    NsIec104Struct.SendBuffer[Index++]=0x43;
                    NsIec104Struct.SendBuffer[Index++]=0x00;
                    NsIec104Struct.SendBuffer[Index++]=0x00;
                    NsIec104Struct.SendBuffer[Index++]=0x00;
                    NsIec104Cycle[0].TimeSign=OFF;
         }
      }
  }
  if(Index>0)
  {
     NsIec104Struct.SendLength=send(NsIec104Struct.NsNewSocketId,&NsIec104Struct.SendBuffer[0],Index,0x0);
     CosSendSign=0x01;
  }
  return CosSendSign;
}



static  void       NsIec104ProcessYkYt(void)
{

unsigned char     YkInformation,YkReason,YkWhat;
unsigned short    YkObject;
unsigned char     Media,YkAction;
NS_RELATION       Dear;

/*
     Information Object Address 0xb01---0xb80  
 for(i=0;i< NS_IEC_104_REASONBYTE;i++)
             NsIec104Struct.TransmitReason[i]=NsIec104Struct.ReceiveBuffer[NS_STARTREASON+i];
for(i=0;i<NS_IEC_104_INFORMATIONBYTE;i++)
             NsIec104Struct.InformationObject[i]=NsIec104Struct.ReceiveBuffer[NS_STARTINFORMATION+i];

*/

 YkInformation=NsIec104Struct.ReceiveBuffer[NS_STARTINFORMATION+NS_IEC_104_INFORMATIONBYTE];
 YkReason=NsIec104Struct.ReceiveBuffer[NS_STARTREASON];

 YkObject=NsIec104Struct.ReceiveBuffer[NS_STARTINFORMATION]+NsIec104Struct.ReceiveBuffer[NS_STARTINFORMATION+1]*256;
 YkObject-=0xb01;

 YkWhat=0;  /* nothing */ 
 if(YkReason==6)
 {
      if(YkInformation&0x80)    /* YkSelect  */
          YkWhat=1;
      else 
          YkWhat=2;             /*  YkExe*/


 }
 else 
     if(YkReason==8)  /* Esc*/
        YkWhat=3;

 switch(YkWhat)
 {
   case 1:  /* select */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
9191成人精品久久| 国产制服丝袜一区| 免费亚洲电影在线| 风间由美一区二区av101| 麻豆成人在线观看| a级高清视频欧美日韩| 欧美丝袜丝nylons| 久久青草国产手机看片福利盒子| 中文字幕欧美一| 青青草原综合久久大伊人精品优势| 精品一区二区三区免费播放| 色综合久久久久综合体| 日韩免费一区二区| 一区二区免费看| 国产精品一区三区| 5858s免费视频成人| 18成人在线观看| 日韩成人av影视| 91蝌蚪porny九色| 久久久精品一品道一区| 亚洲aaa精品| 91在线无精精品入口| 欧美一区二区日韩一区二区| 欧美成人三级在线| 一区二区三区日韩精品| 国产精品自拍毛片| 欧美一区二区福利在线| 亚洲精品国产一区二区精华液| 久久er精品视频| 日本韩国一区二区三区| 中文字幕不卡的av| 激情文学综合网| 欧美一级一级性生活免费录像| 18涩涩午夜精品.www| 国产91露脸合集magnet| 久久看人人爽人人| 日本美女一区二区三区视频| 日本高清不卡在线观看| 国产精品乱人伦一区二区| 狠狠色丁香婷婷综合| 日韩一区二区在线免费观看| 亚洲与欧洲av电影| 91久久精品一区二区三区| 亚洲图片欧美激情| k8久久久一区二区三区| 久久精品视频免费| 国产成人精品亚洲午夜麻豆| 久久精品视频在线看| 国产一区二区美女| 久久久久久久av麻豆果冻| 紧缚奴在线一区二区三区| 欧美日韩国产综合视频在线观看| 亚洲一区影音先锋| 色激情天天射综合网| 亚洲精品免费电影| 欧美系列在线观看| 亚洲小少妇裸体bbw| 7777精品伊人久久久大香线蕉经典版下载 | eeuss鲁片一区二区三区在线看| 国产亚洲美州欧州综合国| 国产乱码精品一区二区三区五月婷 | 风间由美中文字幕在线看视频国产欧美| 精品国产91洋老外米糕| 国产高清一区日本| 国产精品日日摸夜夜摸av| 97久久超碰精品国产| 亚洲婷婷在线视频| 欧美日韩在线播放一区| 蜜桃av一区二区三区| 久久婷婷国产综合国色天香 | 性欧美大战久久久久久久久| 欧美日韩视频在线第一区| 日韩高清电影一区| 久久蜜桃av一区二区天堂| 国产91露脸合集magnet| 一区二区三区精品| 欧美一级日韩不卡播放免费| 国产乱码精品一区二区三区av| 国产精品久久久久久一区二区三区| 色综合天天在线| 天堂va蜜桃一区二区三区漫画版| 日韩欧美在线123| 国产91在线观看丝袜| 一区二区高清在线| 欧美日韩免费观看一区三区| 国产精品一区在线观看乱码 | 玉足女爽爽91| 日韩一区二区在线看片| 不卡一区二区三区四区| 国产精品乱码一区二区三区软件| 成人国产精品免费观看视频| 亚洲bt欧美bt精品777| 久久色.com| 欧美巨大另类极品videosbest | 国产精品美女一区二区三区| 欧美午夜一区二区三区| 国产精品一区二区久久不卡 | eeuss影院一区二区三区| 日韩av一区二区在线影视| 欧美国产综合色视频| 欧美一级二级三级蜜桃| av在线一区二区三区| 免费观看91视频大全| 亚洲女与黑人做爰| 日韩欧美不卡一区| 色成年激情久久综合| 国产乱码精品一区二区三区忘忧草 | 久久99精品国产麻豆不卡| 亚洲午夜精品在线| 亚洲一区在线观看网站| 亚洲精品国产第一综合99久久 | 精品国产区一区| 欧美www视频| 久久久噜噜噜久久中文字幕色伊伊| 日韩视频在线你懂得| 日韩免费看网站| 久久综合九色综合97_久久久| 精品av久久707| 国产日韩欧美a| 国产精品国产精品国产专区不蜜 | 日韩影院免费视频| 日韩中文字幕一区二区三区| 日本中文在线一区| 久久国产夜色精品鲁鲁99| 国产精品18久久久久久久久| 国产精品538一区二区在线| av日韩在线网站| 欧美最猛性xxxxx直播| 欧美二区三区91| 久久久噜噜噜久久人人看 | 99精品国产视频| 欧美午夜宅男影院| 日韩欧美精品三级| 亚洲国产精品99久久久久久久久| 亚洲欧洲日韩av| 午夜天堂影视香蕉久久| 精品一区二区三区免费| 97久久久精品综合88久久| 精品视频一区三区九区| 久久无码av三级| 亚洲日本免费电影| 日韩va亚洲va欧美va久久| 国产精品99久久久| 欧美午夜影院一区| 久久久国际精品| 亚洲大片精品永久免费| 国产一区二区三区免费观看| 色狠狠av一区二区三区| 日韩精品一区国产麻豆| 亚洲欧美另类小说| 蜜臀av性久久久久蜜臀av麻豆 | 亚洲乱码国产乱码精品精可以看 | 一本到三区不卡视频| 欧美成人在线直播| 亚洲人成精品久久久久久| 美女一区二区在线观看| 色综合天天综合给合国产| 欧美一区二区三区视频免费| 18涩涩午夜精品.www| 久久99深爱久久99精品| 欧美三级电影网| 国产精品久久99| 精品一区二区三区影院在线午夜| 色婷婷精品久久二区二区蜜臀av| 欧美精品一区二区三区久久久| 一区二区三区丝袜| 成人黄色av网站在线| 欧美xxx久久| 调教+趴+乳夹+国产+精品| 不卡的电影网站| 久久精品一区二区三区不卡| 日韩激情一二三区| 一本在线高清不卡dvd| 国产色一区二区| 精品综合免费视频观看| 欧美人xxxx| 亚洲综合在线视频| 91影视在线播放| 欧美国产精品v| 国产乱国产乱300精品| 日韩欧美资源站| 日韩av电影免费观看高清完整版| 91在线视频在线| 国产精品久久久久久久久久久免费看 | 色播五月激情综合网| 成人免费一区二区三区在线观看 | 中文字幕精品—区二区四季| 久久成人免费网| 欧美一二三四区在线| 亚洲chinese男男1069| 在线看国产一区二区| 中文字幕一区二区三区蜜月| 国产精品白丝av| 国产欧美日韩三区| 国产成人a级片| 日本一区二区三区免费乱视频| 国产原创一区二区| 国产欧美视频在线观看| 成人av在线一区二区三区| 久久免费的精品国产v∧|