core_com.c
来自「嵌入式开发 嵌入式开发 嵌入式开发」· C语言 代码 · 共 1,744 行 · 第 1/5 页
C
1,744 行
case 0x0B: // 横向设置信息
{
int ID=0;
if(unit[iCNL].submenu1.unitworksnum.i==1)
{
if(unit[iCNL].submenu1.bitTurns.turnsoflabsA==3)
{ ID=2;}
else
{ ID=SysSet.bitStand.AsetStandard;}
CommandData[iCNL].CmdB[5]=SysSet.ASignTangle;
}
else
{
if(unit[iCNL].submenu1.bitTurns.turnsoflabsB==3)
{ ID=2;}
else
{ ID=SysSet.bitStand.BsetStandard;}
CommandData[iCNL].CmdB[5]=SysSet.BSignTangle;
}
CommandData[iCNL].CmdB[0]=unit[iCNL].submenu2.HDeadZone[ID];
CommandData[iCNL].CmdB[1]=unit[iCNL].submenu2.VHaver[ID].HAver;
CommandData[iCNL].CmdB[2]=unit[iCNL].submenu2.HPlus_P[ID];
CommandData[iCNL].CmdB[3]=unit[iCNL].submenu2.HPlus_D[ID];
CommandData[iCNL].CmdB[4]=unit[iCNL].submenu2.HFps[ID];
smsg1.dlen=7;
memcpy(smsg1.data, CommandData[iCNL].CmdB, smsg1.dlen);
CAN_SendMsg(smsg1);
}
break;
case 0x0C: // 电机调整量
smsg1.dlen=6;
memcpy(smsg1.data, CommandData[iCNL].CmdC, smsg1.dlen);
CAN_SendMsg(smsg1);
break;
default:
break;
}
#endif
}
/******************************
Func: 发送指定系属的7#8#9#A#B#工作命令
Parameters:
-JOB; 指定系属
******************************/
void NotifyCU789AB(int JOB)
{
int t;
for(t=1; t<VarST3000.UnitCounts; t++)
{
if( unit[t].submenu1.unitworksnum.i==JOB &&
unit[t].submenu1.unitworksnum.j )
{ SendCnlData(t, 0x07);}
}
delay(30);
for(t=1; t<VarST3000.UnitCounts; t++)
{
if( unit[t].submenu1.unitworksnum.i==JOB &&
unit[t].submenu1.unitworksnum.j )
{ SendCnlData(t, 0x08);}
}
delay(30);
for(t=1; t<VarST3000.UnitCounts; t++)
{
if( unit[t].submenu1.unitworksnum.i==JOB &&
unit[t].submenu1.unitworksnum.j )
{ SendCnlData(t, 0x09);}
}
delay(30);
for(t=1; t<VarST3000.UnitCounts; t++)
{
if( unit[t].submenu1.unitworksnum.i==JOB &&
unit[t].submenu1.unitworksnum.j )
{ SendCnlData(t, 0x0A);}
}
delay(30);
for(t=1; t<VarST3000.UnitCounts; t++)
{
if( unit[t].submenu1.unitworksnum.i==JOB &&
unit[t].submenu1.unitworksnum.j )
{ SendCnlData(t, 0x0B);}
}
}
/******************************
描述: 设置本组智能按钮显示
******************************/
void _SetCnlSA_M23(void)
{
int vICO;
unsigned char vFLAG;
if( (unit[UnitSEL-1].submenu1.bitfield.autowork) )
{ vICO=17; vFLAG=0x10;}
else
{ vICO=16; vFLAG=0x00;}
Button(870, 380, 85, 45, vFLAG, NULL, 192, 192, 192);
Rect(870, 380, 85, 45, vFLAG);
ShowICO3232(vICO, 894, 386);
}
/******************************
描述: 设置整机智能按钮显示
******************************/
void _SetAllSA_M23(void)
{
int vICO;
unsigned char vFLAG;
if( ((VarST3000.jobAB==1) && (EntireStatus.EntireIntelligent_A)) ||
((VarST3000.jobAB==2) && (EntireStatus.EntireIntelligent_B)) )
{ vICO=4; vFLAG=0x10;}
else
{ vICO=3; vFLAG=0x00;}
Button(30, 240, 85, 45, vFLAG, NULL, 192, 192, 192);
ShowICO3232(vICO, 53, 246);
}
/******************************
描述: 设置整机自手动按钮显示
******************************/
void _SetAllWS_M23(void)
{
int vICO;
unsigned char vFLAG;
if( ((VarST3000.jobAB==1) && (EntireStatus.EntireAuto_A)) ||
((VarST3000.jobAB==2) && (EntireStatus.EntireAuto_B)) )
{ vICO=2; vFLAG=0x10;}
else
{ vICO=1; vFLAG=0x00;}
Button(30, 170, 85, 45, vFLAG, NULL, 192, 192, 192);
ShowICO3232(vICO, 53, 176);
}
/******************************
描述: 设置纵向自手动按钮显示
******************************/
void _SetVWS_M23(void)
{
int vICO;
unsigned char vFLAG;
if( unit[UnitSEL-1].submenu1.bitfield.hand_auto )
{ vICO=8; vFLAG=0x10;}
else
{ vICO=7; vFLAG=0x00;}
Button(870, 100, 85, 45, vFLAG, NULL, 192, 192, 192);
ShowICO3232(vICO, 894, 106);
}
/******************************
描述: 设置横向自手动按钮显示
******************************/
void _SetHWS_M23(void)
{
int vICO;
unsigned char vFLAG;
if( unit[UnitSEL-1].submenu1.bitfield.h_motorruning )
{ vICO=10; vFLAG=0x10;}
else
{ vICO=9; vFLAG=0x00;}
Button(870, 170, 85, 45, vFLAG, NULL, 192, 192, 192);
ShowICO3232(vICO, 894, 176);
}
/******************************
描述: 清除波形界面横向修正量和横向误差显示
******************************/
void _ClearHAlrAdj_M23(void)
{
int x=AlrAdjBox_M23_X+(AlrAdjBox_M23_W>>1);
int y=AlrAdjBox_M23_Y+AlrAdjBox_M23_H;
// 横向误差
Bar(AlrAdjBox_M23_X+2, y-20, x-28, y-4, 192, 192, 192);
// 横向修正量
Bar(x+28, y-20, AlrAdjBox_M23_X+AlrAdjBox_M23_W-2, y-4, 192, 192, 192);
}
/******************************
描述: 设置色标形式的选中或者失去选中
参数: vID色标形式编号 ; vSEL显示控制
******************************/
void _SyncShapeSEL(const int vID, const unsigned char vSEL)
{
int vX,vY,vShapeXY[8];
vX=345;
vY=160+70*vID;
//Button(vX-10, vY-10, 84, 45, (vSEL?0x10:0x00), NULL, 192, 192, 192);
Rect(vX-10, vY-10, 84, 45, (vSEL?1:0));
switch(vID)
{
case 4: //条形标记
if(vSEL)
{ Bar(vX+2, vY+2, vX+62, vY+22, 255, 0, 0);}
else
{ Bar(vX+2, vY+2, vX+62, vY+22, 0, 128, 0);}
break;
case 0: //纵前左正
vShapeXY[0]=vX;
vShapeXY[1]=vY;
vShapeXY[2]=vX+64;
vShapeXY[3]=vY;
vShapeXY[4]=vX+64;
vShapeXY[5]=vY+12;
vShapeXY[6]=vX;
vShapeXY[7]=vY+24;
if(vSEL)
{ FillPoly(4, vShapeXY, 255, 0, 0);}
else
{ FillPoly(4, vShapeXY, 0, 128, 0);}
break;
case 1: //纵前左负
vShapeXY[0]=vX;
vShapeXY[1]=vY;
vShapeXY[2]=vX+64;
vShapeXY[3]=vY;
vShapeXY[4]=vX+64;
vShapeXY[5]=vY+24;
vShapeXY[6]=vX;
vShapeXY[7]=vY+12;
if(vSEL)
{ FillPoly(4, vShapeXY, 255, 0, 0);}
else
{ FillPoly(4, vShapeXY, 0, 128, 0);}
break;
case 2: //纵后左正
vShapeXY[0]=vX;
vShapeXY[1]=vY;
vShapeXY[2]=vX+64;
vShapeXY[3]=vY+12;
vShapeXY[4]=vX+64;
vShapeXY[5]=vY+24;
vShapeXY[6]=vX;
vShapeXY[7]=vY+24;
if(vSEL)
{ FillPoly(4, vShapeXY, 255, 0, 0);}
else
{ FillPoly(4, vShapeXY, 0, 128, 0);}
break;
case 3: //纵后左负
vShapeXY[0]=vX+64;
vShapeXY[1]=vY;
vShapeXY[2]=vX+64;
vShapeXY[3]=vY+24;
vShapeXY[4]=vX;
vShapeXY[5]=vY+24;
vShapeXY[6]=vX;
vShapeXY[7]=vY+12;
if(vSEL)
{ FillPoly(4, vShapeXY, 255, 0, 0);}
else
{ FillPoly(4, vShapeXY, 0, 128, 0);}
break;
case 5: //三角1
vShapeXY[0]=vX+5;
vShapeXY[1]=vY+12;
vShapeXY[2]=vX+59;
vShapeXY[3]=vY-3;
vShapeXY[4]=vX+59;
vShapeXY[5]=vY+27;
if(vSEL)
{ FillPoly(3, vShapeXY, 255, 0, 0);}
else
{ FillPoly(3, vShapeXY, 0, 128, 0);}
break;
case 6: //三角2
vShapeXY[0]=vX+5;
vShapeXY[1]=vY-3;
vShapeXY[2]=vX+5;
vShapeXY[3]=vY+27;
vShapeXY[4]=vX+59;
vShapeXY[5]=vY+12;
if(vSEL)
{ FillPoly(3, vShapeXY, 255, 0, 0);}
else
{ FillPoly(3, vShapeXY, 0, 128, 0);}
break;
default:
break;
}
}
/***
查询指定系属的预套准是否都处于暂停状态
(可能由于上报达到位置而转到暂停)
***/
int WhetherAllPause_YTZ(const unsigned char iSER)
{
int jcnl,iret=0;
unsigned int vUINT=0x0001;
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==iSER &&
unit[jcnl].submenu1.unitworksnum.j)
{
if( (EntireStatus.EntireYtzFlags&(vUINT<<jcnl)) &&
(CommandData[jcnl].Cmd6[3]==0x03) ) //___如果是预套准状态而且处于暂停状态
{ iret=1;}
else
{ iret=0; break;}
}
}
return(iret);
}
/******************************
描述: 当下位机上报标记形式的时候 获取上报的标记形式并且更新记录
******************************/
void UpdateEntireShape(const unsigned char iSER, const unsigned char iDAT)
{
if(iSER==1)
{ //___A系
switch( (iDAT&0x07) )
{
case 1:
SysSet.bitShape.ShapeA=4; break;
case 2:
SysSet.bitShape.ShapeA=6; break;
case 3:
SysSet.bitShape.ShapeA=5; break;
case 4:
SysSet.bitShape.ShapeA=0; break;
case 5:
SysSet.bitShape.ShapeA=1; break;
case 6:
SysSet.bitShape.ShapeA=2; break;
case 7:
SysSet.bitShape.ShapeA=3; break;
default:
break;
}
}
else
{ //___B系
switch( (iDAT&0x07) )
{
case 1:
SysSet.bitShape.ShapeB=4; break;
case 2:
SysSet.bitShape.ShapeB=6; break;
case 3:
SysSet.bitShape.ShapeB=5; break;
case 4:
SysSet.bitShape.ShapeB=0; break;
case 5:
SysSet.bitShape.ShapeB=1; break;
case 6:
SysSet.bitShape.ShapeB=2; break;
case 7:
SysSet.bitShape.ShapeB=3; break;
default:
break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?