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 + -
显示快捷键?