3kmenu2.c
来自「嵌入式开发 嵌入式开发 嵌入式开发」· C语言 代码 · 共 1,816 行 · 第 1/5 页
C
1,816 行
sprintf(szE, "%02d", unit[cNewSEL22].submenu1.ColorNum);
Edit(160, 95+45*cNewSEL22, 125, 35, 0x4f, szE);
cOldSEL22=cNewSEL22;
bFlagsINPUT22=0x01; g_Klength=2; g_Kmask=0x03; ClearKBuffer();
break;
case 2: // 纵向报警
if( bFlagsINPUT22&0x10 )
{ SyncC_Disp22(0, (VarST3000.jobAB==1?SysSet.CofBanA:SysSet.CofBanB));}
if(cNewSEL22!=cOldSEL22)
{ //恢复原先选择的
memset(szB, 0, 20);
sprintf(szB, "%dU", cOldSEL22+1);
Button(50, 95+45*cOldSEL22, 90, 35, 0x81, szB, 192, 192, 192);
memset(szE, 0, 20);
sprintf(szE, "%4.2f", unit[cOldSEL22].submenu1.v_alarm/100.0);
Edit(160, 95+45*cOldSEL22, 125, 35, 0x0f, szE);
}
//当前选中
memset(szB, 0, 20);
sprintf(szB, "%dU", cNewSEL22+1);
Button(50, 95+45*cNewSEL22, 90, 35, 0x91, szB, 192, 192, 192);
memset(szE, 0, 20);
sprintf(szE, "%4.2f", unit[cNewSEL22].submenu1.v_alarm/100.0);
Edit(160, 95+45*cNewSEL22, 125, 35, 0x4f, szE);
cOldSEL22=cNewSEL22;
bFlagsINPUT22=0x01; g_Klength=3; g_Kmask=0x02; ClearKBuffer();
break;
case 3: // 波门地址
if(bFlagsINPUT22&0x10)
{ SyncC_Disp22(0, (VarST3000.jobAB==1?SysSet.CofBanA:SysSet.CofBanB));}
if(cNewSEL22!=cOldSEL22)
{ //恢复原先选择的
memset(szB, 0, 20);
sprintf(szB, "%dU", cOldSEL22+1);
Button(50, 95+45*cOldSEL22, 90, 35, 0x81, szB, 192, 192, 192);
memset(szE, 0, 20);
sprintf(szE, "%5d", unit[cOldSEL22].submenu1.addressofwav);
Edit(160, 95+45*cOldSEL22, 125, 35, 0x0f, szE);
}
//当前选中
memset(szB, 0, 20);
sprintf(szB, "%dU", cNewSEL22+1);
Button(50, 95+45*cNewSEL22, 90, 35, 0x91, szB, 192, 192, 192);
memset(szE, 0, 20);
sprintf(szE, "%5d", unit[cNewSEL22].submenu1.addressofwav);
Edit(160, 95+45*cNewSEL22, 125, 35, 0x4f, szE);
cOldSEL22=cNewSEL22;
bFlagsINPUT22=0x01; g_Klength=4; g_Kmask=0x03; ClearKBuffer();
break;
case 4: // 波门宽度
if(bFlagsINPUT22&0x10)
{ SyncC_Disp22(0, (VarST3000.jobAB==1?SysSet.CofBanA:SysSet.CofBanB));}
if(cNewSEL22!=cOldSEL22)
{ //恢复原先选择的
memset(szB, 0, 20);
sprintf(szB, "%dU", cOldSEL22+1);
Button(50, 95+45*cOldSEL22, 90, 35, 0x81, szB, 192, 192, 192);
memset(szE, 0, 20);
sprintf(szE, "%5d", unit[cOldSEL22].submenu2.ValueWidth);
Edit(160, 95+45*cOldSEL22, 125, 35, 0x0f, szE);
}
//当前选中
memset(szB, 0, 20);
sprintf(szB, "%dU", cNewSEL22+1);
Button(50, 95+45*cNewSEL22, 90, 35, 0x91, szB, 192, 192, 192);
memset(szE, 0, 20);
sprintf(szE, "%5d", unit[cNewSEL22].submenu2.ValueWidth);
Edit(160, 95+45*cNewSEL22, 125, 35, 0x4f, szE);
cOldSEL22=cNewSEL22;
bFlagsINPUT22=0x01; g_Klength=2; g_Kmask=0x03; ClearKBuffer();
break;
default:
if( bFlagsINPUT22&0x10 )
{ SyncC_Disp22(0, (VarST3000.jobAB==1?SysSet.CofBanA:SysSet.CofBanB));}
cOldSEL22=cNewSEL22;
bFlagsINPUT22=0x00; g_Klength=0; g_Kmask=0x03; ClearKBuffer();
break;
}
}
/***
设定指定通道的预套准工作状态记录
-iCNL 通道号
-iDAT 1置位; 0清除
***/
void SetFlags_ytz(const int iCNL, const int iDAT)
{
unsigned uVAL=0x0001;
if( iDAT )
{ EntireStatus.EntireYtzFlags = EntireStatus.EntireYtzFlags|(uVAL<<iCNL);}
else
{
uVAL<<=iCNL;
uVAL^=0xFFFF;
EntireStatus.EntireYtzFlags&=uVAL;
}
}
/***
查询本通道是否在预套准工作
***/
int GetFlags_ytz(const int iCNL)
{
unsigned uVAL=0x0001;
return ( (EntireStatus.EntireYtzFlags&(uVAL<<iCNL)) ? 1 : 0 );
}
/***
描述: 查询指定系的预套准工作是否属于进行阶段
返回:
-2 表示没有通道
-1 表示有预套准
-0 表示没有预套准
***/
int GetJOB_ytz(const int jobID)
{
int t,tCountCU=0;
unsigned uVAL=0x0001;
for(t=1; t<VarST3000.UnitCounts; t++)
{
if( unit[t].submenu1.unitworksnum.i==jobID &&
unit[t].submenu1.unitworksnum.j )
{
tCountCU++;
if( EntireStatus.EntireYtzFlags&(uVAL<<t) )
{ return 1;}
}
}
if( !tCountCU ) { return 2;}
return 0;
}
/***
统计出指定系属的工作通道数
***/
int CountJOBCU(const int jobID)
{
int t,iret=0;
for(t=1; t<VarST3000.UnitCounts; t++)
{
if( unit[t].submenu1.unitworksnum.i==jobID &&
unit[t].submenu1.unitworksnum.j )
{ iret++;}
}
return(iret);
}
/******************************
描述: 预套准开始 AB系
******************************/
void StartYtz(void)
{
int jcnl;
char tSZ[10];
long vLONG;
float vFLOAT;
unsigned char vSEL,hSEL;
unsigned char sty_b=(VarST3000.Language?0x01:0x03);
unsigned int vCBRec=(VarST3000.jobAB==1?SysSet.CofBanA:SysSet.CofBanB);
if(VarST3000.jobAB==1)
{ vSEL=ytzVSELa; hSEL=ytzHSELa;}
else
{ vSEL=ytzVSELb; hSEL=ytzHSELb;}
//___开始按钮禁用
StartStop_button(0, (sty_b|0x10)); delay(15);
StartStop_button(0, (sty_b|0x04));
//___停止按钮激活
StartStop_button(1, sty_b);
//___清除本系属内的C号命令缓冲区
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j)
{ memset(CommandData[jcnl].CmdC, 0x00, 6);} //___清除电机调整命令缓冲
}
//___开始对纵向下发内容进行填充
switch(vSEL)
{
case 0: //___纵向重复值
hjYTZButton(2, (sty_b|0x04)); //___纵向计算值禁止使用
hjYTZButton(3, (sty_b|0x04)); //___纵向设定值禁止使用
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j)
{ memset(tSZ, 0, 10);
sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.VRepeatValue/100.0);
Edit(270, 138+40*jcnl, 85, 32, 0x00, NULL);
Edit(370, 138+40*jcnl, 85, 32, 0x05, tSZ);
vLONG = unit[jcnl].submenu6.VRepeatValue*100/SysSet.VCoef;
//___填充命令缓冲区
if(vLONG<0)
{ vLONG*=-1;
CommandData[jcnl].CmdC[0] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[0]|=0x80;
CommandData[jcnl].CmdC[1] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[2] =(unsigned char)(vLONG%256);
}
else
{
CommandData[jcnl].CmdC[0] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[1] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[2] =(unsigned char)(vLONG%256);
}
}
}
break;
case 1: //___纵向计算值
hjYTZButton(1, (sty_b|0x04)); //___纵向重复值禁止使用
hjYTZButton(3, (sty_b|0x04)); //___纵向设定值禁止使用
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j)
{
vFLOAT=unit[jcnl].submenu6.length/100.0+0.005;
if(vFLOAT<50) { vFLOAT+=(vCBRec/10.0);}
//___计算出下发的命令
vLONG =vFLOAT*100;
vLONG =vLONG*100/SysSet.VCoef;
//___更新界面的显示
memset(tSZ, 0, 10);
sprintf(tSZ, "%8.2f", vFLOAT);
Edit(370, 138+40*jcnl, 85, 32, 0x05, tSZ);
Edit(270, 138+40*jcnl, 85, 32, 0x05, "0.00");
//___填充命令缓冲区
if(vLONG<0)
{ vLONG*=-1;
CommandData[jcnl].CmdC[0] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[0]|=0x80;
CommandData[jcnl].CmdC[1] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[2] =(unsigned char)(vLONG%256);
}
else
{
CommandData[jcnl].CmdC[0] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[1] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[2] =(unsigned char)(vLONG%256);
}
}
}
break;
case 2: //___纵向设定值
hjYTZButton(1, (sty_b|0x04)); //___纵向重复值禁止使用
hjYTZButton(2, (sty_b|0x04)); //___纵向计算值禁止使用
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j)
{
//___更新界面显示
memset(tSZ, 0, 10);
sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.VSetupValue/100.0);
Edit(370, 138+40*jcnl, 85, 32, 0x05, tSZ);
Edit(270, 138+40*jcnl, 85, 32, 0x05, "0.00");
vLONG =unit[jcnl].submenu6.VSetupValue*100/SysSet.VCoef;
//___填充命令缓冲区
if(vLONG<0)
{ vLONG*=-1;
CommandData[jcnl].CmdC[0] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[0]|=0x80;
CommandData[jcnl].CmdC[1] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[2] =(unsigned char)(vLONG%256);
}
else
{
CommandData[jcnl].CmdC[0] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[1] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[2] =(unsigned char)(vLONG%256);
}
}
}
break;
default:
break;
}
//___开始对横向下发内容进行填充
switch(hSEL)
{
case 0: //___横向重复值
hjYTZButton(5, (sty_b|0x04)); //___横向设定值禁止使用
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j &&
unit[jcnl].submenu1.bitfield.hcontrol)
{
memset(tSZ, 0, 10);
sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.HRepeatValue/100.0);
Edit(570, 138+40*jcnl, 85, 32, 0x05, tSZ);
Edit(470, 138+40*jcnl, 85, 32, 0x00, NULL);
vLONG =unit[jcnl].submenu6.HRepeatValue*100/SysSet.HCoef;
//___填充命令缓冲区
if(vLONG<0)
{ vLONG*=-1;
CommandData[jcnl].CmdC[3] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[3]|=0x80;
CommandData[jcnl].CmdC[4] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[5] =(unsigned char)(vLONG%256);
}
else
{
CommandData[jcnl].CmdC[3] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[4] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[5] =(unsigned char)(vLONG%256);
}
}
}
break;
case 1: //___横向设定值
hjYTZButton(4, (sty_b|0x04)); //___横向重复值禁止使用
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j &&
unit[jcnl].submenu1.bitfield.hcontrol)
{
memset(tSZ, 0, 10);
//sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.HSetupValue/100.0);
sprintf(tSZ, "%6.2f", (unit[jcnl].submenu6.HSetupValue+unit[jcnl].submenu6.HMaxValue)/100.0);
Edit(570, 138+40*jcnl, 85, 32, 0x05, tSZ);
Edit(470, 138+40*jcnl, 85, 32, 0x05, "0.00");
//vLONG =unit[jcnl].submenu6.HSetupValue*100/SysSet.HCoef;
vLONG= (unit[jcnl].submenu6.HSetupValue+unit[jcnl].submenu6.HMaxValue)*100/SysSet.HCoef;
//___填充命令缓冲区
if(vLONG<0)
{ vLONG*=-1;
CommandData[jcnl].CmdC[3] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[3]|=0x80;
CommandData[jcnl].CmdC[4] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[5] =(unsigned char)(vLONG%256);
}
else
{
CommandData[jcnl].CmdC[3] =(unsigned char)(vLONG/65536L);
CommandData[jcnl].CmdC[4] =(unsigned char)((vLONG%65536L)/256);
CommandData[jcnl].CmdC[5] =(unsigned char)(vLONG%256);
}
}
}
break;
default:
break;
}
//___开始发送工作命令
if( VarST3000.jobAB==1 )
{ EntireStatus.EntireAuto_A=0; EntireStatus.EntireIntelligent_A=0;} //___如果在A系工作 则整机手动 整机智能关
else
{ EntireStatus.EntireAuto_B=0; EntireStatus.EntireIntelligent_B=0;} //___如果在B系工作 则整机手动 整机智能关
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j)
{
//___如果确定要开始预套准 则必须关闭原来处于自动运作的电机 和智能寻址
unit[jcnl].submenu1.bitfield.autowork=0;
CommandData[jcnl].Cmd6[1]&=0xf9; //1111 1001 本组智能和整机智能关闭
unit[jcnl].submenu1.bitfield.hand_auto=0;
CommandData[jcnl].Cmd6[2]&=0xfc; //1111 1100
if( unit[jcnl].submenu1.bitfield.hcontrol )
{ unit[jcnl].submenu1.bitfield.h_motorruning=0;
CommandData[jcnl].Cmd6[6]&=0xdf;}
//___开始设置预套准
if( (vSEL==1) || (vSEL==2) )
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?