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

📄 fdj_hb_p103.c.bak

📁 人机界面程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
                   command_statue.Config_Operation_Flag = 0xaa;
                   command_statue.Config_Operation_Count = 0;
                   break;
        case  0x0e00:   //通道系数调整选择
                   Channel_Ration_Flag.Select = 0x00;
                   Channel_Ration_Flag.Command = per1&0xff;
                   Order_Array.Order[ Order_Array.Set ] = 0x0e00;
                   Order_Array.Set = (Order_Array.Set+1)%10;
                   command_statue.Channel_Ration_Flag = 0xaa;
                   command_statue.Channel_Ration_Count = 0x00;
                   break;
        case  0x0e01:   //通道系数调整执行
                   if(Channel_Ration_Flag.Select == 0x11)
                     {
                       Channel_Ration_Flag.Command = per1&0xff;
                       Order_Array.Order[ Order_Array.Set ] = 0x0e00;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.Channel_Ration_Flag = 0xaa;
                       command_statue.Channel_Ration_Count = 0x00;
                     }
                   else
                     Res = 0;
                   break;
        case  0x0e02:   //通道系数调整撤销
                   if(Channel_Ration_Flag.Select == 0x11)
                     {
                       Channel_Ration_Flag.Command = per1&0xff;
                       Order_Array.Order[ Order_Array.Set ] = 0x0e00;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.Channel_Ration_Flag = 0xaa;
                       command_statue.Channel_Ration_Count = 0x00;
                     }
                   else
                     Res = 0;
                   break;
        case  0x0f00:   //软压板操作选择
                   YYB_Modify_Flag.Select = 0x00;
                   YYB_Modify_Flag.Command = 0x82;
                   YYB_Modify_Flag.YYB_temp = per1&0xffff;
                   Order_Array.Order[ Order_Array.Set ] = 0x0f00;
                   Order_Array.Set = (Order_Array.Set+1)%10;
                   command_statue.YYB_Opreation_Flag = 0xaa;
                   command_statue.YYB_Opreation_Count = 0x00;
                   break;
        case  0x0f01:   //软压板操作执行
                   if(YYB_Modify_Flag.Select == 0x11)
                     {
                       YYB_Modify_Flag.Command = 0x02;
                       YYB_Modify_Flag.YYB_temp = per1&0xffff;
                       Order_Array.Order[ Order_Array.Set ] = 0x0f00;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YYB_Opreation_Flag = 0xaa;
                       command_statue.YYB_Opreation_Count = 0x00;
                     }
                   else
                     Res = 0;
                   break;
        case  0x0f02:   //软压板操作撤销
                   if(YYB_Modify_Flag.Select == 0x11)
                     {
                       YYB_Modify_Flag.Command = 0xc2;
                       YYB_Modify_Flag.YYB_temp = per1&0xffff;
                       Order_Array.Order[ Order_Array.Set ] = 0x0f00;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YYB_Opreation_Flag = 0xaa;
                       command_statue.YYB_Opreation_Count = 0x00;
                     }
                   else
                     Res = 0;
                   break;
        case  0x1000:   //修改密码
                   Order_Array.Order[ Order_Array.Set ] = 0x1000;
                   Order_Array.Set = (Order_Array.Set+1)%10;
                   command_statue.Password_Modified_Flag = 0xaa;
                   command_statue.Password_Modified_Count = 0;
                   break;
        case  0x1100:   //开出传动选择
                   YK_Command_Style(per1,0x11,0x55);
                   Output_Test_YK.YkSelect = 0;

                   Order_Array.Order[ Order_Array.Set ] = 0x1100;
                   Order_Array.Set = (Order_Array.Set+1)%10;

                   command_statue.YK_Output_Command_Flag = 0xaa;
                   command_statue.YK_Output_Command_Count = 0;
                   break;
        case  0x1101:   //开出传动执行
                   if(Output_Test_YK.YkSelect == 0x11)
                     {
                       YK_Command_Style(per1,0x11,0xAA);
                       Output_Test_YK.YkSelect = 0;

                       Order_Array.Order[ Order_Array.Set ] = 0x1100;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YK_Output_Command_Flag = 0xaa;
                       command_statue.YK_Output_Command_Count = 0;
                     }
                   else
                     Res = 0;
                   break;
        case  0x1102:   //开出传动撤销
                   if(Output_Test_YK.YkSelect == 0x11)
                     {
                       YK_Command_Style(per1,0x11,0xcc);
                       Output_Test_YK.YkSelect = 0;

                       Order_Array.Order[ Order_Array.Set ] = 0x1100;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YK_Output_Command_Flag = 0xaa;
                       command_statue.YK_Output_Command_Count = 0;
                     }
                   else
                     Res = 0;
                   break;
        case  0x1110:   //遥控合选择
                   YK_Command_Style(per1,0x11,0x55);
                   Output_Test_YK.YkSelect = 0;

                   Order_Array.Order[ Order_Array.Set ] = 0x1100;
                   Order_Array.Set = (Order_Array.Set+1)%10;

                   command_statue.YK_Output_Command_Flag = 0xaa;
                   command_statue.YK_Output_Command_Count = 0;
                   break;
        case  0x1111:   //遥控合执行
                   if(Output_Test_YK.YkSelect == 0x11)
                     {
                       YK_Command_Style(per1,0x11,0xaa);
                       Output_Test_YK.YkSelect = 0;

                       Order_Array.Order[ Order_Array.Set ] = 0x1100;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YK_Output_Command_Flag = 0xaa;
                       command_statue.YK_Output_Command_Count = 0;
                     }
                   else
                     Res = 0;
                   break;
        case  0x1112:   //遥控合撤销
                   if(Output_Test_YK.YkSelect == 0x11)
                     {
                       YK_Command_Style(per1,0x11,0xcc);
                       Output_Test_YK.YkSelect = 0;

                       Order_Array.Order[ Order_Array.Set ] = 0x1100;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YK_Output_Command_Flag = 0xaa;
                       command_statue.YK_Output_Command_Count = 0;
                     }
                   else
                     Res = 0;
                   break;
        case  0x1120:   //遥控分选择
                   YK_Command_Style(per1,0x22,0x55);
                   Output_Test_YK.YkSelect = 0;

                   Order_Array.Order[ Order_Array.Set ] = 0x1100;
                   Order_Array.Set = (Order_Array.Set+1)%10;

                   command_statue.YK_Output_Command_Flag = 0xaa;
                   command_statue.YK_Output_Command_Count = 0;
                   break;
        case  0x1121:   //遥控分执行
                   if(Output_Test_YK.YkSelect == 0x11)
                     {
                       YK_Command_Style(per1,0x22,0xaa);
                       Output_Test_YK.YkSelect = 0;

                       Order_Array.Order[ Order_Array.Set ] = 0x1100;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YK_Output_Command_Flag = 0xaa;
                       command_statue.YK_Output_Command_Count = 0;
                     }
                   else
                     Res = 0;
                   break;
        case  0x1122:   //遥控分撤销
                   if(Output_Test_YK.YkSelect == 0x11)
                     {
                       YK_Command_Style(per1,0x22,0xcc);
                       Output_Test_YK.YkSelect = 0;

                       Order_Array.Order[ Order_Array.Set ] = 0x1100;
                       Order_Array.Set = (Order_Array.Set+1)%10;

                       command_statue.YK_Output_Command_Flag = 0xaa;
                       command_statue.YK_Output_Command_Count = 0;
                     }
                   else
                     Res = 0;
                   break;
        case  0x1200:   //查询SOE及故障报告
                   Fault_Recode_Flag.Number = per1; 
                   Fault_Recode_Flag.Type = per2;
                   Order_Array.Order[ Order_Array.Set ] = 0x1200;
                   Order_Array.Set = (Order_Array.Set+1)%10;
                   command_statue.Demand_Soe_Report_Flag = 0xaa;
                   command_statue.Demand_Soe_Report_Count = 0x00;
                   break;
        case  0x1300:   //装置复归
                   Order_Array.Order[ Order_Array.Set ] = 0x1300;
                   Order_Array.Set = (Order_Array.Set+1)%10;
                   command_statue.Device_FUGUI_Flag = 0xaa;
                   command_statue.Device_FUGUI_Count = 0x00;
                   break;
        case  0x1500:   //装置复归
                   Order_Array.Order[ Order_Array.Set ] = 0x1500;
                   Order_Array.Set = (Order_Array.Set+1)%10;
                   break;
       default:
                   break;
     }
   return(Res);
}



//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
//     组装并发送固定帧
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
void SendFixFrm(UC SFunCode)
{
  int   i;
  comm_buf_flag->Sendbuf[0] = 0x10;
  comm_buf_flag->Sendbuf[1] = (SFunCode & 0x0F) + (comm_buf_flag->FCB& 0x20) 
                            + (comm_buf_flag->FCV& 0x10) + 0x40;
  comm_buf_flag->Sendbuf[2] = comm_buf_flag->DeviceAddr;
  comm_buf_flag->Sendbuf[3] = comm_buf_flag->Sendbuf[1] + comm_buf_flag->Sendbuf[2];
  comm_buf_flag->Sendbuf[4] = 0x16;
  
  comm_buf_flag->Length = 5;
  ComSend();
  
  for(i=0;i<comm_buf_flag->Length;i++)
   comm_buf_flag->TempBuf[i] = comm_buf_flag->Sendbuf[i];
   
  comm_buf_flag->FCB = comm_buf_flag->FCB^0x20;

}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
//     组装并发送可变帧
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
void  SendValFrm(UC SFunCode, UC len )
{
  int i;
  comm_buf_flag->Sendbuf[0] = comm_buf_flag->Sendbuf[3] = 0x68;
  comm_buf_flag->Sendbuf[1] = len+2;
  comm_buf_flag->Sendbuf[2] = comm_buf_flag->Sendbuf[1];
  comm_buf_flag->Sendbuf[4] = (SFunCode & 0x0F) + (comm_buf_flag->FCB& 0x20) 
                            + (comm_buf_flag->FCV& 0x10) + 0x40;
                            
  comm_buf_flag->Sendbuf[5] =  comm_buf_flag->DeviceAddr;
  comm_buf_flag->Sendbuf[6+len] = comm_buf_flag->Sendbuf[4] + comm_buf_flag->Sendbuf[5] ;
  for(i=0; i<len; i++)
    {
      comm_buf_flag->Sendbuf[6+len] =  comm_buf_flag->Sendbuf[6+len] + comm_buf_flag->Sendbuf[6+i];
    }
   comm_buf_flag->Sendbuf[7+len] = 0x16;

  comm_buf_flag->Length = 8+len;
  ComSend(); 
  
  for(i=0;i<comm_buf_flag->Length;i++)
   comm_buf_flag->TempBuf[i] = comm_buf_flag->Sendbuf[i];
   
  comm_buf_flag->FCB = comm_buf_flag->FCB^0x20;
}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
//     链路层通信处理
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
void   LPDU_MMI_DSP_Send(void)
{
	
   if(comm_buf_flag->Timing >= DELAYACK)
     {
        comm_buf_flag->Timing = 0;

        if(comm_buf_flag->Counter>=6)
         {
           comm_buf_flag->Counter = 6;
           comm_buf_flag->LPDU_Command = 0x09;
           ComDsp_buf_flag.CommError = 0x11;
         }
        else if( comm_buf_flag->ACD == 0x20 )
           comm_buf_flag->LPDU_Command = 0x0a;
        else if( comm_buf_flag->LPDU_Command == 0x0b )
         {
             if( Order_Array.Set != Order_Array.Get)  //有其他命令
               {
                 comm_buf_flag->SendSeq = Order_Array.Order[Order_Array.Get];
                 Order_Array.Order[Order_Array.Get] = 0xFF00;
                 Order_Array.Get=(Order_Array.Get+1)%10;

                 ProcessMMI_DSP();
               }
         }
        switch( comm_buf_flag->LPDU_Command )
           {
              case  0x00:    comm_buf_flag->FCV = 0;
                             SendFixFrm( 0x00 );
                             break;
              case  0x03:    comm_buf_flag->FCV = 1;
                             SendValFrm( 0x03,comm_buf_flag->ASDU_Length );
                             break;
              case  0x04:    comm_buf_flag->FCV = 0;
                             SendValFrm( 0x04,comm_buf_flag->ASDU_Length );
                             break;
              case  0x07:    comm_buf_flag->FCV = 0;
                             SendFixFrm( 0x07 );
                             break;
              case  0x09:    comm_buf_flag->FCV = 0;
                             SendFixFrm( 0x09 );
                             break;
              case  0x0a:    comm_buf_flag->FCV = 1;
                             SendFixFrm( 0x0a );
                             comm_buf_flag->LPDU_Command = 0x0b;
                             break;
              case  0x0b:    comm_buf_flag->FCV = 1;
                             SendFixFrm( 0x0b );
                             break;
              default:       comm_buf_flag->LPDU_Command = 9;
                             break;
           }

⌨️ 快捷键说明

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