📄 fdj_hb_p103.c.bak
字号:
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 接收处理
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
void Comm_RecvProcess(void)
{
unsigned char temp,i;
switch(comm_buf_flag->synchro)
{
case 0:
while( comm_buf_flag->com_103->RecvSet != comm_buf_flag->com_103->RecvGet )
{
if(comm_buf_flag->com_103->RecvBuf[comm_buf_flag->com_103->RecvGet]==0x10)
{
comm_buf_flag->synchro=1;
comm_buf_flag->Type = 0;
break;
}
else if(comm_buf_flag->com_103->RecvBuf[comm_buf_flag->com_103->RecvGet]==0x68)
{
comm_buf_flag->synchro=1;
comm_buf_flag->Type = 1;
break;
}
else
{
comm_buf_flag->com_103->RecvGet++;
if(comm_buf_flag->com_103->RecvGet >= RECVNUM) comm_buf_flag->com_103->RecvGet = 0;
continue;
}
}
break;
case 1:
while( comm_buf_flag->com_103->RecvSet != comm_buf_flag->com_103->RecvGet )
{
comm_buf_flag->RecvBuf[comm_buf_flag->ReceivePoint] = comm_buf_flag->com_103->RecvBuf[comm_buf_flag->com_103->RecvGet];
comm_buf_flag->ReceivePoint++;
comm_buf_flag->com_103->RecvGet++;
if(comm_buf_flag->com_103->RecvGet >= RECVNUM) comm_buf_flag->com_103->RecvGet = 0;
if(comm_buf_flag->Type == 0)
{
if(comm_buf_flag->ReceivePoint>=5)
{
temp = comm_buf_flag->RecvBuf[1]+comm_buf_flag->RecvBuf[2];
if ((comm_buf_flag->RecvBuf[2]==comm_buf_flag->DeviceAddr)||(comm_buf_flag->RecvBuf[2]==0xFF))
{
comm_buf_flag->FrameRecv = 0x15;
comm_buf_flag->Type = 0xff;
comm_buf_flag->synchro = 0;
comm_buf_flag->ReceivePoint = 0;
}
else
{
comm_buf_flag->FrameRecv = 0;
comm_buf_flag->Type = 0xff;
comm_buf_flag->synchro = 0;
comm_buf_flag->ReceivePoint = 0;
}
break;
}
}
else if(comm_buf_flag->Type == 1)
{
if((comm_buf_flag->ReceivePoint>=4))
{
if((comm_buf_flag->RecvBuf[0]!=0x68)||(comm_buf_flag->RecvBuf[3]!=0x68)||
(comm_buf_flag->RecvBuf[1]!=comm_buf_flag->RecvBuf[2]))
{
comm_buf_flag->Type = 0xff;
comm_buf_flag->synchro = 0;
comm_buf_flag->ReceivePoint = 0;
break;
}
if(comm_buf_flag->ReceivePoint >= (comm_buf_flag->RecvBuf[1]+6))
{
temp = 0;
for(i=0;i< comm_buf_flag->RecvBuf[1];i++)
temp = temp + comm_buf_flag->RecvBuf[4+i];
if (((comm_buf_flag->RecvBuf[5]==comm_buf_flag->DeviceAddr)||(comm_buf_flag->RecvBuf[5]==0xFF))
&&(temp==(comm_buf_flag->RecvBuf[comm_buf_flag->RecvBuf[1]+4])))
{
comm_buf_flag->FrameRecv = 0x1A;
comm_buf_flag->Type = 0xff;
comm_buf_flag->synchro = 0;
comm_buf_flag->ReceivePoint = 0;
}
else
{
comm_buf_flag->FrameRecv = 0x0;
comm_buf_flag->Type = 0xff;
comm_buf_flag->synchro = 0;
comm_buf_flag->ReceivePoint = 0;
}
break;
}
}
}
else
{
comm_buf_flag->Type = 0xff;
comm_buf_flag->synchro = 0;
comm_buf_flag->ReceivePoint = 0;
break;
}
}
break;
default :
comm_buf_flag->Type = 0xff;
comm_buf_flag->synchro = 0;
comm_buf_flag->ReceivePoint = 0;
break;
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 通信时间间隔计数
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
void CommDspTimeUpdate(void)
{
comm_buf_flag->Timing++;
/* comm_buf_flag->Timer_CallAll++;
if( comm_buf_flag->Timer_CallAll >= 900000 )
{
comm_buf_flag->Flag_CallAll = 0x01; //上电允许总召唤
Order_Array.Order[ Order_Array.Set ] = 0x0100;
Order_Array.Set = (Order_Array.Set+1)%10;
comm_buf_flag->Timer_CallAll = 0; //总召唤计时器回零
}
*/
if( ComDsp_buf_flag.CommError!=0x11 )
{
comm_buf_flag->Timer_CheckTime++;
if( comm_buf_flag->Timer_CheckTime >= 6000 ) //_CheckTime
{
comm_buf_flag->Flag_CheckTime = 0x01; //置对时标志
Order_Array.Order[ Order_Array.Set ] = 0x0200;
Order_Array.Set = (Order_Array.Set+1)%10;
comm_buf_flag->Timer_CheckTime = 0; //计数器归零
}
}
Command_Timer_Update();
}
//---------------------------------------------------------------------
// 遥控命令解析
//---------------------------------------------------------------------
void YK_Command_Style(unsigned int Addr,unsigned int Style,unsigned int Seq)
{
Output_Test_YK.YkDataNo1 = Addr;
if(Style == 0x11) //合
{
if(Seq == 0x55) Output_Test_YK.YkCommand = 0x82; //预合
else if(Seq == 0xAA) Output_Test_YK.YkCommand = 0x02; //合执行
else if(Seq == 0xcc) Output_Test_YK.YkCommand = 0xC2; //合命令撤销
else Output_Test_YK.YkCommand = 0x00; //未知
}
else if(Style == 0x22) //分
{
if(Seq == 0x55) Output_Test_YK.YkCommand = 0x81; //预分
else if(Seq == 0xAA) Output_Test_YK.YkCommand = 0x01; //分执行
else if(Seq == 0xcc) Output_Test_YK.YkCommand = 0xC1; //分命令撤销
else Output_Test_YK.YkCommand = 0x00; //未知
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 通信命令处理
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
int MMI_DSP_Instruction(unsigned int Command,unsigned int per1,unsigned int per2)
{
int Res;
Res = 1;
switch( Command )
{
case 0x0000: //复位CU/FCB
Order_Array.Order[ Order_Array.Set ] = 0x0000;
Order_Array.Set = (Order_Array.Set+1)%10;
break;
case 0x0100: //总召唤
Order_Array.Order[ Order_Array.Set ] = 0x0100;
Order_Array.Set = (Order_Array.Set+1)%10;
break;
case 0x0200: //对时
Order_Array.Order[ Order_Array.Set ] = 0x0200;
Order_Array.Set = (Order_Array.Set+1)%10;
break;
case 0x0210: //修改时间
Order_Array.Order[ Order_Array.Set ] = 0x0210;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Check_Time_Flag = 0xAA;
command_statue.Check_Time_Count = 0;
break;
case 0x0500: //读系统参数
Order_Array.Order[ Order_Array.Set ] = 0x0500;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Config_Operation_Flag = 0xaa;
command_statue.Config_Operation_Count = 0;
break;
case 0x0600: //读定值
comm_buf_flag->DzAreaNo = per1 + 0x17;
Order_Array.Order[ Order_Array.Set ] = 0x0600;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
break;
case 0x0700: //自动调整通道系数
Channel_Ration_Flag.Command = per1&0xff;
Order_Array.Order[ Order_Array.Set ] = 0x0700;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Channel_Ration_Flag = 0xaa;
command_statue.Channel_Ration_Count = 0x00;
break;
case 0x0800: //定值预修改
comm_buf_flag->DzSelect = 0x00;
comm_buf_flag->DzAreaNo = per1+0x17;
Order_Array.Order[ Order_Array.Set ] = 0x0800;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
break;
case 0x0900: //定值修改执行
if(comm_buf_flag->DzSelect == 0x11)
{
comm_buf_flag->DzAreaNo = per1+0x17;
Order_Array.Order[ Order_Array.Set ] = 0x0900;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
}
else
Res = 0;
break;
case 0x0a00: //定值区号切换选择
Setting_Switch.DzSelect = 0x00;
Setting_Switch.DzCommand = 0x82;
Setting_Switch.DzTarget = per1+0x17;
Order_Array.Order[ Order_Array.Set ] = 0x0a00;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
break;
case 0x0a01: //定值区号切换执行
if(Setting_Switch.DzSelect == 0x11)
{
Setting_Switch.DzCommand = 0x02;
Setting_Switch.DzTarget = per1+0x17;
Order_Array.Order[ Order_Array.Set ] = 0x0a00;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
}
else
Res = 0;
break;
case 0x0a02: //定值区号切换撤销
if(Setting_Switch.DzSelect == 0x11)
{
Setting_Switch.DzCommand = 0xc2;
Setting_Switch.DzTarget = per1+0x17;
Order_Array.Order[ Order_Array.Set ] = 0x0a00;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
}
else
Res = 0;
break;
case 0x0b00: //定值区复制选择
Setting_Copy.DzSelect = 0x00;
Setting_Copy.DzSource = per2+0x17;
Setting_Copy.DzTarget = per1+0x17;
Setting_Copy.DzCommand = 0x82;
Order_Array.Order[ Order_Array.Set ] = 0x0b00;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
break;
case 0x0b01: //定值区复制执行
if(Setting_Copy.DzSelect == 0x11)
{
Setting_Copy.DzSource = per2+0x17;
Setting_Copy.DzTarget = per1+0x17;
Setting_Copy.DzCommand = 0x02;
Order_Array.Order[ Order_Array.Set ] = 0x0b00;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
}
else
Res = 0;
break;
case 0x0b02: //定值区复制撤销
if(Setting_Copy.DzSelect == 0x11)
{
Setting_Copy.DzSource = per2+0x17;
Setting_Copy.DzTarget = per1+0x17;
Setting_Copy.DzCommand = 0xc2;
Order_Array.Order[ Order_Array.Set ] = 0x0b00;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Setting_Operation_Flag = 0xaa;
command_statue.Setting_Operation_Count = 0;
}
else
Res = 0;
break;
case 0x0c00: //系统配置修改选择
Order_Array.Order[ Order_Array.Set ] = 0x0c00;
Order_Array.Set = (Order_Array.Set+1)%10;
command_statue.Config_Operation_Flag = 0xaa;
command_statue.Config_Operation_Count = 0;
break;
case 0x0d00: //系统配置修改执行
Order_Array.Order[ Order_Array.Set ] = 0x0d00;
Order_Array.Set = (Order_Array.Set+1)%10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -