📄 main.c
字号:
case 4: // 切换电机的序号
arr[0]=4;
xuhao++;
if(xuhao==3)xuhao=0;
OSQPost(ReMsgQeue,(void*)arr);
break;
default:
break;
}
break;
case 3: // 3号电机的转向设置
switch(key)
{
case 1: // 正转
arr[0]=19;
x3=0;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 2: // 反转
arr[0]=20;
x3=1;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 3: // 切换选项设置
arr[0]=3;
dangqian++;
if(dangqian==3)dangqian=0;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 4: // 切换电机的序号
arr[0]=4;
xuhao++;
if(xuhao==3)xuhao=0;
OSQPost(ReMsgQeue,(void*)arr);
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
if(key==5)
{
cond[0] = sudu1num[0]*1000+sudu1num[1]*100+sudu1num[2]*10+sudu1num[3];
cond[1] = sudu2num[0]*1000+sudu2num[1]*100+sudu2num[2]*10+sudu2num[3];
cond[2] = sudu3num[0]*1000+sudu3num[1]*100+sudu3num[2]*10+sudu3num[3];
cond[3] = weiyi1num[0]*1000+weiyi1num[1]*100+weiyi1num[2]*10+weiyi1num[3];
cond[4] = weiyi2num[0]*1000+weiyi2num[1]*100+weiyi2num[2]*10+weiyi2num[3];
cond[5] = weiyi3num[0]*1000+weiyi3num[1]*100+weiyi3num[2]*10+weiyi3num[3];
cond[6] = x1;
cond[7] = x2;
cond[8] = x3;
OSTaskCreate (TaskPJ1,(void *)cond, &TaskPJ1Stk[TaskStkLengh - 1], 3);
}
OSTimeDlyHMSM(0,0,0,20);
}
}
/*********************************************************************************************************
** TaskKEY1
查询按键,向TaskPWM发送改变后的消息
********************************************************************************************************/
void TaskDisp(void *pdata)
{
uint8 i,err,sudu1weizhi=0,sudu2weizhi=0,sudu3weizhi=0,weiyi1weizhi=0,weiyi2weizhi=0,weiyi3weizhi=0;
uint8 dangqian=0,xuhao=0;
uint8 zhuanxiang1=0,zhuanxiang2=0,zhuanxiang3=0;
uint8 *pt;
pdata = pdata;
sudu1num[0]=0;
sudu1num[1]=3;
sudu1num[2]=6;
sudu1num[3]=0;
sudu2num[0]=0;
sudu2num[1]=0;
sudu2num[2]=6;
sudu2num[3]=0;
sudu3num[0]=0;
sudu3num[1]=0;
sudu3num[2]=6;
sudu3num[3]=0;
weiyi1num[0]=3;
weiyi1num[1]=6;
weiyi1num[2]=0;
weiyi1num[3]=0;
weiyi2num[0]=1;
weiyi2num[1]=0;
weiyi2num[2]=0;
weiyi2num[3]=0;
weiyi3num[0]=3;
weiyi3num[1]=6;
weiyi3num[2]=0;
weiyi3num[3]=0;
GUI_Line(83,0,83,63,1);
GUI_LoadPic(88,0,shicezhi,36,14);
GUI_PutString(85,15,"0000000");
GUI_PutString(85,23,"0000000");
GUI_PutString(85,31,"0000000");
GUI_PutString(85,39,"0000000");
GUI_PutString(85,47,"0000000");
GUI_PutString(85,55,"0000000");
GUI_LoadPic(59,16,zhengzhuan,24,14);
GUI_LoadPic(59,30,zhengzhuan,24,14);
GUI_LoadPic(59,44,zhengzhuan,24,14);
for(i=0;i<4;i++) // 1号电机的速度显示
{
if(i==0)
GUI_LoadPic1(8+6*i,21,*(num+sudu1num[i]),5,8);
else
GUI_LoadPic(8+6*i,21,*(num+sudu1num[i]),5,8);
}
for(i=0;i<4;i++) // 1号电机的位移显示
GUI_LoadPic(33+6*i,21,*(num+weiyi1num[i]),5,8);
for(i=0;i<4;i++) // 2号电机的速度显示
GUI_LoadPic(8+6*i,35,*(num+sudu2num[i]),5,8);
for(i=0;i<4;i++) // 2号电机的位移显示
{
GUI_LoadPic(33+6*i,35,*(num+weiyi2num[i]),5,8);
}
for(i=0;i<4;i++) // 3号电机的速度显示
{
GUI_LoadPic(8+6*i,49,*(num+sudu3num[i]),5,8);
}
for(i=0;i<4;i++) // 3号电机的位移显示
{
GUI_LoadPic(33+6*i,49,*(num+weiyi3num[i]),5,8);
}
for(i=0;i<3;i++) // 电机选项的选定与不选定的显示
{
if(i==0)
GUI_LoadPic1(8+25*i,0,*(hanzi+i),24,14);
else
GUI_LoadPic(8+25*i,0,*(hanzi+i),24,14);
}
for(i=0;i<3;i++) // 电机序号的选定与不选定的状态的显示
{
if(i==0)
GUI_LoadPic1(0,21+14*i,*(num+i+1),5,8);
else
GUI_LoadPic(0,21+14*i,*(num+i+1),5,8);
}
while (1)
{
pt=(uint8*)OSQPend(ReMsgQeue,0,&err); //等待一条短消息
switch(pt[0])
{
case 1: // 1号电机的设置
sudu1num[sudu1weizhi]=pt[1];
break;
case 2:
sudu1weizhi++;
if(sudu1weizhi==4)sudu1weizhi=0;
break;
case 3:
dangqian++;
if(dangqian==3)dangqian=0;
break;
case 4:
xuhao++;
if(xuhao==3)xuhao=0;
break;
case 5:
weiyi1num[weiyi1weizhi]=pt[1];
break;
case 6:
weiyi1weizhi++;
if(weiyi1weizhi==4)weiyi1weizhi=0;
break;
case 7:
zhuanxiang1=0;
break;
case 8:
zhuanxiang1=1;
break;
case 9: // 2号电机的设置
sudu2num[sudu2weizhi]=pt[1];
break;
case 10:
sudu2weizhi++;
if(sudu2weizhi==4)sudu2weizhi=0;
break;
case 11:
weiyi2num[weiyi2weizhi]=pt[1];
break;
case 12:
weiyi2weizhi++;
if(weiyi2weizhi==4)weiyi2weizhi=0;
break;
case 13:
zhuanxiang2=0;
break;
case 14:
zhuanxiang2=1;
break;
case 15: // 3号电机的设置
sudu3num[sudu3weizhi]=pt[1];
break;
case 16:
sudu3weizhi++;
if(sudu3weizhi==4)sudu3weizhi=0;
break;
case 17:
weiyi3num[weiyi3weizhi]=pt[1];
break;
case 18:
weiyi3weizhi++;
if(weiyi3weizhi==4)weiyi3weizhi=0;
break;
case 19:
zhuanxiang3=0;
break;
case 20:
zhuanxiang3=1;
break;
default:
break;
}
if(zhuanxiang1==0) // 1号电机的转向显示
{
if((dangqian==2)&&(xuhao==0))
GUI_LoadPic1(59,16,zhengzhuan,24,14);
else
GUI_LoadPic(59,16,zhengzhuan,24,14);
}
else
{
if((dangqian==2)&&(xuhao==0))
GUI_LoadPic1(59,16,fanzhuan,24,14);
else
GUI_LoadPic(59,16,fanzhuan,24,14);
}
if(zhuanxiang2==0) // 2号电机的转向显示
{
if((dangqian==2)&&(xuhao==1))
GUI_LoadPic1(59,30,zhengzhuan,24,14);
else
GUI_LoadPic(59,30,zhengzhuan,24,14);
}
else
{
if((dangqian==2)&&(xuhao==1))
GUI_LoadPic1(59,30,fanzhuan,24,14);
else
GUI_LoadPic(59,30,fanzhuan,24,14);
}
if(zhuanxiang3==0) // 3号电机的转向显示
{
if((dangqian==2)&&(xuhao==2))
GUI_LoadPic1(59,44,zhengzhuan,24,14);
else
GUI_LoadPic(59,44,zhengzhuan,24,14);
}
else
{
if((dangqian==2)&&(xuhao==2))
GUI_LoadPic1(59,44,fanzhuan,24,14);
else
GUI_LoadPic(59,44,fanzhuan,24,14);
}
for(i=0;i<4;i++) // 1号电机的速度显示
{
if((i==sudu1weizhi)&&(dangqian==0)&&(xuhao==0))
GUI_LoadPic1(8+6*i,21,*(num+sudu1num[i]),5,8);
else
GUI_LoadPic(8+6*i,21,*(num+sudu1num[i]),5,8);
}
for(i=0;i<4;i++) // 1号电机的位移显示
{
if((i==weiyi1weizhi)&&(dangqian==1)&&(xuhao==0))
GUI_LoadPic1(33+6*i,21,*(num+weiyi1num[i]),5,8);
else
GUI_LoadPic(33+6*i,21,*(num+weiyi1num[i]),5,8);
}
for(i=0;i<4;i++) // 2号电机的速度显示
{
if((i==sudu2weizhi)&&(dangqian==0)&&(xuhao==1))
GUI_LoadPic1(8+6*i,35,*(num+sudu2num[i]),5,8);
else
GUI_LoadPic(8+6*i,35,*(num+sudu2num[i]),5,8);
}
for(i=0;i<4;i++) // 2号电机的位移显示
{
if((i==weiyi2weizhi)&&(dangqian==1)&&(xuhao==1))
GUI_LoadPic1(33+6*i,35,*(num+weiyi2num[i]),5,8);
else
GUI_LoadPic(33+6*i,35,*(num+weiyi2num[i]),5,8);
}
for(i=0;i<4;i++) // 3号电机的速度显示
{
if((i==sudu3weizhi)&&(dangqian==0)&&(xuhao==2))
GUI_LoadPic1(8+6*i,49,*(num+sudu3num[i]),5,8);
else
GUI_LoadPic(8+6*i,49,*(num+sudu3num[i]),5,8);
}
for(i=0;i<4;i++) // 3号电机的位移显示
{
if((i==weiyi3weizhi)&&(dangqian==1)&&(xuhao==2))
GUI_LoadPic1(33+6*i,49,*(num+weiyi3num[i]),5,8);
else
GUI_LoadPic(33+6*i,49,*(num+weiyi3num[i]),5,8);
}
for(i=0;i<3;i++) // 电机选项的选定与不选定的显示
{
if(i==dangqian)
GUI_LoadPic1(8+25*i,0,*(hanzi+i),24,14);
else
GUI_LoadPic(8+25*i,0,*(hanzi+i),24,14);
}
for(i=0;i<3;i++) // 电机序号的选定与不选定的状态的显示
{
if(i==xuhao)
GUI_LoadPic1(0,21+14*i,*(num+i+1),5,8);
else
GUI_LoadPic(0,21+14*i,*(num+i+1),5,8);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -