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

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

?? nsiec104server.c

?? 南瑞的IEC104規約實現的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:

unsigned short   YkObject,Index;
unsigned char    *P,i;
unsigned short   RealNumber;

          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++]=NsIec104Struct.YkYtType;                 /*    asdu type   */
          NsIec104Struct.SendBuffer[Index++]=1;                  /*    information object count  */

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

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

          /* Information Object Address now three byte:  0xc01---0xc80 */
          YkObject=NsIec104Struct.ReceiveYkId+0xb01;
          P=(unsigned char *)&YkObject;
          NsIec104Struct.SendBuffer[Index++]=P[0];
          NsIec104Struct.SendBuffer[Index++]=P[1];
          NsIec104Struct.SendBuffer[Index++]=0x00;
              /* Value  */
          if(NsIec104Struct.YkCellAction==NS_TRIP)
             NsIec104Struct.SendBuffer[Index++]=0x81;
          else 
               if(NsIec104Struct.YkCellAction==NS_CLOSE)
                  NsIec104Struct.SendBuffer[Index++]=0x82;
               else 
                  NsIec104Struct.YkCellAction=0xff;       
         
          /* Repair Length */
          NsIec104Struct.SendBuffer[1]=Index-2;
          if((NsIec104Struct.SendLength=send(NsIec104Struct.NsNewSocketId,&NsIec104Struct.SendBuffer[0],Index,0x0))<0)
          {
              perror ("Client FirstWrite Error");
          }
}



static  void       NsIec104ProcessPulseAck(void)
{
unsigned short   i,Index,RealNumber;
unsigned char    *P;

          /*  First Send  Confirm */
          Index=0;
          NsIec104Struct.SendBuffer[Index++]=0x68;
          NsIec104Struct.SendBuffer[Index++]=0x0e;

          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++]=101;
          NsIec104Struct.SendBuffer[Index++]=1;

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


          for(i=0;i<NS_IEC_104_INFORMATIONBYTE;i++)
             NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.InformationObject[i];

          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.Qcc;

          if((NsIec104Struct.SendLength = send(NsIec104Struct.NsNewSocketId,&NsIec104Struct.SendBuffer[0],Index,0x0))<0)
          {
	               perror ("Client Write Error");
          }


}

static  void       NsIec104ProcessPulseEnd(void)
{
unsigned short   i,Index,RealNumber;
unsigned char    *P;

          /*  end confirm*/
          taskDelay(16);
          Index=0;
          NsIec104Struct.SendBuffer[Index++]=0x68;
          NsIec104Struct.SendBuffer[Index++]=0x0e;

          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++]=101;
          NsIec104Struct.SendBuffer[Index++]=1;

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


          for(i=0;i<NS_IEC_104_INFORMATIONBYTE;i++)
             NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.InformationObject[i];

          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.Qcc;

          if((NsIec104Struct.SendLength = send(NsIec104Struct.NsNewSocketId,&NsIec104Struct.SendBuffer[0],Index,0x0)) < 0)
          {
	               perror ("Client Write Error");
          }

}


static  void       NsIec104ProcessPulse(void)
{
unsigned short   General,Index;
unsigned char    *P;
unsigned short    i,j,RealNumber;



     NsIec104Struct.Qcc=NsIec104Struct.ReceiveBuffer[NS_IEC_104_QCC_POSITION];  
     NsIec104Struct.FreezeSign=NsIec104Struct.Qcc&0xc0;
     
     NsIec104Struct.FreezeSign>>=6;
     NsIec104Struct.PulseGroup=NsIec104Struct.Qcc&0x3f;

     switch(NsIec104Struct.FreezeSign)
     {
        case 0:
               NsIec104ProcessPulseData();
               break;
        case 1:
        case 2:
        case 3:
               NsIec104ProcessPulseAck();
               break;
     }           
}

static  void       NsIec104ProcessPulseGroup(void)
{
unsigned short   General,Index;
unsigned char    *P,start;
unsigned short    i,j,RealNumber,YmLib;


     for(start=0;start<2;start++)
     {
          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++]=15;                 /*    asdu type   */
          NsIec104Struct.SendBuffer[Index++]=16;           /*    information object count  */

           /*  REASONBYTE  now is two */
          NsIec104Struct.SendBuffer[Index++]=37+NsIec104Struct.PulseGroup;          /*    reason  */
          NsIec104Struct.SendBuffer[Index++]=0x0;               /*    reason  */

             
          for(i=0;i<NS_IEC_104_ASDUADDRESSBYTE;i++)
             NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.CommonAsduAddress[i];
          YmLib=start*16+32*(NsIec104Struct.PulseGroup-1);
          switch(NsIec104Struct.Table)
          {
           case 0:
                 NsGetDd1Lib(NS_YM_DATA,YmLib,NsIec104Struct.DataBuff,16);
                 break;
           case 1:
                 NsGetDd2Lib(NS_YM_DATA,YmLib,NsIec104Struct.DataBuff,16);
                 break;
           case 2:
                 NsGetDd3Lib(NS_YM_DATA,YmLib,NsIec104Struct.DataBuff,16);
                 break;
           case 3:
                 NsGetDd4Lib(NS_YM_DATA,YmLib,NsIec104Struct.DataBuff,16);
                 break;
          }

          for(i=0;i<16;i++)
          {
              /* Information Object Address now three byte:  0xc01---0xc80 */

              NsIec104Struct.SendBuffer[Index++]=0x80+i+start*16+32*(NsIec104Struct.PulseGroup-1);
              NsIec104Struct.SendBuffer[Index++]=0x0c;
              NsIec104Struct.SendBuffer[Index++]=0;
              /* Value  */
              NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.DataBuff[4*i];
              NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.DataBuff[4*i+1];
              NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.DataBuff[4*i+2];
              NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.DataBuff[4*i+3];
              /* sequence number  */
              NsIec104Struct.SendBuffer[Index++]=start*16+i;
          }  
          /* Repair Length */
          NsIec104Struct.SendBuffer[1]=Index-2;
          if((NsIec104Struct.SendLength=send(NsIec104Struct.NsNewSocketId,&NsIec104Struct.SendBuffer[0],Index,0x0))<0)
          {
	               perror ("Client FirstWrite Error");
          }
     }
}

static  void       NsIec104ProcessPulseAll(void)
{
unsigned short      General,Index;
unsigned char       *P,GroupIndex,start;
unsigned short      i,j,RealNumber;
unsigned long       InformationObject;


   GroupIndex=0;
   NsIec104Struct.NeedSendNumber=0;
   NsIec104Struct.HasSendNumber=0;
   NsIec104Struct.LeftSendNumber=0;

   /*  First Send  Confirm */
   Index=0;
   NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=0x68;
   NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=0x0e;

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

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

   NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=101;
   NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=1;

   for(i=0;i< NS_IEC_104_REASONBYTE;i++)
       NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=0x07;
             
   for(i=0;i<NS_IEC_104_ASDUADDRESSBYTE;i++)
       NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NsIec104Struct.CommonAsduAddress[i];

   for(i=0;i<NS_IEC_104_INFORMATIONBYTE;i++)
       NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NsIec104Struct.InformationObject[i];

   NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NsIec104Struct.Qcc;
   NsIec104Struct.GroupSendLength[GroupIndex]=Index;

   GroupIndex++;
   NsIec104Struct.NeedSendNumber++;
   
   for(start=0;start<NS_IEC_104_TOTAL_YM_TIMES;start++)           /* total 128 ym send 8 times */            
   {
          Index=0;
          NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=0x68;
          NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=0x00;

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

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

          NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=15;                            /*    asdu type   */
          NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NS_IEC_104_ONCE_YM ;           /*    information object count  */

           /*  REASONBYTE  now is two */
          NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=37  ;          /*    reason  */
          NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=0x0;               /*    reason  */

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

          switch(NsIec104Struct.Table)
          {
           case 0:
                 NsGetDd1Lib(NS_YM_DATA,start*NS_IEC_104_ONCE_YM,NsIec104Struct.DataBuff,NS_IEC_104_ONCE_YM);
                 break;
           case 1:
                 NsGetDd2Lib(NS_YM_DATA,start*NS_IEC_104_ONCE_YM,NsIec104Struct.DataBuff,NS_IEC_104_ONCE_YM);
                 break;
           case 2:
                 NsGetDd3Lib(NS_YM_DATA,start*NS_IEC_104_ONCE_YM,NsIec104Struct.DataBuff,NS_IEC_104_ONCE_YM);
                 break;
           case 3:
                 NsGetDd4Lib(NS_YM_DATA,start*NS_IEC_104_ONCE_YM,NsIec104Struct.DataBuff,NS_IEC_104_ONCE_YM);
                 break;
          }
          for(i=0;i<NS_IEC_104_ONCE_YM;i++)
          {
              /* Information Object Address now three byte:  0xc01---0xc80 */
              InformationObject=0xc01+i+start*NS_IEC_104_ONCE_YM;
              P=(unsigned char *)&InformationObject;
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=P[0];
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=P[1];
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=P[2];
              /* Value  */
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NsIec104Struct.DataBuff[4*i];
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NsIec104Struct.DataBuff[4*i+1];
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NsIec104Struct.DataBuff[4*i+2];
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=NsIec104Struct.DataBuff[4*i+3];
              /* sequence number  */
              NsIec104Struct.GroupSendBuffer[GroupIndex][Index++]=i;
          }  
          /* Repair Length */
          NsIec104Struct.GroupSendBuffer[GroupIndex][1]=Index-2;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩v精品一区二区| 中文字幕一区二区在线播放| 欧洲一区二区三区在线| 色呦呦网站一区| 色视频一区二区| 91黄色免费看| 欧美视频一二三区| 欧美一区二区福利视频| 亚洲精品一区二区三区99| 久久综合九色综合97婷婷女人| 亚洲精品一区二区三区蜜桃下载| 精品国产髙清在线看国产毛片| 26uuu国产电影一区二区| 国产欧美日韩综合| 亚洲女厕所小便bbb| 亚洲444eee在线观看| 免费在线观看不卡| 国产成a人亚洲| 91麻豆精品一区二区三区| 色婷婷综合久久久久中文一区二区| 欧洲亚洲精品在线| 日韩午夜av一区| 国产精品久久国产精麻豆99网站| 一区二区三区精密机械公司| 秋霞国产午夜精品免费视频| 国产精品乡下勾搭老头1| 成人美女视频在线观看| 91成人免费网站| 日韩一级黄色大片| ...av二区三区久久精品| 三级不卡在线观看| 国v精品久久久网| 欧美肥妇毛茸茸| 亚洲人成7777| 国产精品2024| 欧美一区二区三区白人| 亚洲色图都市小说| 激情综合网天天干| 欧美三级韩国三级日本三斤| 久久精品亚洲一区二区三区浴池 | av一本久道久久综合久久鬼色| 色综合久久久久综合| 日韩亚洲欧美高清| 亚洲精品乱码久久久久久黑人 | 欧美写真视频网站| 久久九九影视网| 日韩精品欧美成人高清一区二区| 成人久久18免费网站麻豆| 欧美一区二区二区| 亚洲va欧美va人人爽| 不卡一卡二卡三乱码免费网站| 日韩亚洲电影在线| 午夜精品福利一区二区蜜股av| 成人av片在线观看| 2023国产精品自拍| 日韩精品欧美成人高清一区二区| www.66久久| 中文成人综合网| 韩国精品主播一区二区在线观看 | 欧美最猛黑人xxxxx猛交| 久久久久久麻豆| 另类小说欧美激情| 日韩一区二区免费电影| 亚洲综合色成人| www.av精品| 18欧美乱大交hd1984| 高清不卡一区二区在线| 久久欧美中文字幕| 国产一区在线精品| 2023国产精华国产精品| 黄色精品一二区| 久久色中文字幕| 激情综合色播五月| 精品国产一区二区精华| 麻豆国产精品官网| 精品少妇一区二区三区在线视频| 免费在线看成人av| 精品国产一区二区三区久久久蜜月 | 亚洲另类中文字| 国产白丝网站精品污在线入口| 久久人人97超碰com| 国产乱码精品一品二品| 国产欧美精品在线观看| 97精品国产97久久久久久久久久久久 | 精品一区二区三区的国产在线播放 | 久久99国产精品麻豆| 久久伊人蜜桃av一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美三级中文字幕在线观看| 水野朝阳av一区二区三区| 日韩欧美一区二区不卡| 国产精品69毛片高清亚洲| 国产精品麻豆视频| 欧美专区亚洲专区| 另类小说图片综合网| 国产精品久久久久久亚洲毛片| 在线精品视频免费播放| 欧美aaa在线| 国产精品久久看| 欧美性生活久久| 久草在线在线精品观看| 国产精品久久久久aaaa樱花 | 亚洲欧美日韩久久精品| 宅男在线国产精品| 国产黄色精品网站| 亚洲已满18点击进入久久| 欧美一区二区三区男人的天堂 | 国产精品网站导航| 欧美日产国产精品| 国产成人午夜视频| 午夜伦理一区二区| 国产精品美女久久久久久久久| 欧美日韩亚州综合| 国产超碰在线一区| 肉肉av福利一精品导航| 国产精品久久久久久久裸模| 3d动漫精品啪啪1区2区免费| 懂色av中文字幕一区二区三区| 香蕉影视欧美成人| 日韩美女视频一区二区| 欧美α欧美αv大片| 色94色欧美sute亚洲线路一ni| 国产老女人精品毛片久久| 天天做天天摸天天爽国产一区| 国产精品视频免费| 久久综合视频网| 日韩免费看的电影| 欧美视频日韩视频在线观看| 处破女av一区二区| 激情小说欧美图片| 免费在线观看一区二区三区| 亚洲一区在线电影| 亚洲色图在线视频| 国产精品美女一区二区| 久久久久88色偷偷免费| 欧美tickling网站挠脚心| 678五月天丁香亚洲综合网| 色8久久精品久久久久久蜜| 成人开心网精品视频| 欧美体内she精高潮| 91在线视频免费观看| 成人不卡免费av| eeuss国产一区二区三区| 国产精品亚洲人在线观看| 国产精品综合av一区二区国产馆| 奇米亚洲午夜久久精品| 另类小说视频一区二区| 奇米影视一区二区三区小说| 青青草国产成人99久久| 五月综合激情婷婷六月色窝| 午夜精品影院在线观看| 亚洲成av人片在www色猫咪| 亚洲成人一区二区在线观看| 午夜在线成人av| 日本欧美一区二区在线观看| 日韩av电影天堂| 青青草一区二区三区| 精东粉嫩av免费一区二区三区| 久久er99热精品一区二区| 久久99久久久欧美国产| 国产乱码精品1区2区3区| 成人性生交大片免费看中文网站| 国产成a人亚洲精| 91麻豆免费观看| 欧美精品一级二级| 欧美大片免费久久精品三p| 欧美精品一区二区三区蜜桃| 久久精品欧美日韩| 亚洲欧洲精品一区二区三区| 一区二区三区精品视频在线| 日韩不卡一区二区三区| 国产一区二区福利| 色婷婷综合久久久| 欧美一级在线视频| 国产精品视频一二| 亚洲成年人网站在线观看| 男女激情视频一区| 成人国产精品免费| 亚洲黄一区二区三区| 久久久久国产精品厨房| 国产在线精品免费av| 国产成人在线看| ●精品国产综合乱码久久久久| 在线视频综合导航| 日韩欧美在线一区二区三区| 亚洲一卡二卡三卡四卡| 91一区二区在线| 自拍av一区二区三区| 成人精品小蝌蚪| 国产精品日韩成人| 国产成人av一区| 国产欧美一区二区在线观看| 久久精品国产99国产精品| 欧美电影免费观看高清完整版| 亚洲国产精品久久不卡毛片 | 久久综合中文字幕| 经典一区二区三区| 久久久久国产精品免费免费搜索| 国内精品免费在线观看| 久久精品视频网|