版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ben_xiao_hai_123/article/details/78604228
//static int BUTTON;
//static int x;x=0则是先声明了,而后才进行赋值,在赋值操作前,x所指向的内存地址的内容是不能确定的
//m_old_btn 初始值为0
if(m_old_btn == MotionStatus::BUTTON)
{
if(m_cur_mode == READY && m_is_started == 0 && m_chicago_mode_cnt > MAX_CHICAGO_CNT)//max_chicago=90
{
fprintf(stderr, "CHICAGO MODE ! \n\n");
m_cur_mode = SOCCER;
m_old_btn == BTN_START;
}
else if(m_cur_mode == READY && m_is_started == 0 && m_chicago_mode_cnt <= MAX_CHICAGO_CNT)
{
m_chicago_mode_cnt++;
return;
}
else
{
m_chicago_mode_cnt = 0;
return;
}
}
else
{
m_chicago_mode_cnt = 0;
m_old_btn = MotionStatus::BUTTON;
}
if(m_old_btn & BTN_MODE)//BTN_MODE = 1 BTN_START = 2
//(m_old_btn & BTN_MODE) = 1 时代表按键按下
//BTN_MODE = 1 是模式选择按键
{
fprintf(stderr, "Mode button pressed.. \n");
if(m_is_started != 0)
{
m_is_started = 0;
m_cur_mode = READY;//初始值为1
LinuxActionScript::m_stop = 1;
Walking::GetInstance()->Stop();//走路停下
// Joint Enable...
Action::GetInstance()->m_Joint.SetEnableBody(true, true);
//演示准备模式
while(Action::GetInstance()->Start(15) == false) usleep(8000);
while(Action::GetInstance()->IsRunning() == true) usleep(8000);
}
else
{
m_cur_mode++;
if(m_cur_mode >= MAX_MODE) m_cur_mode = READY;//m_cur_mode加到(>=5)5时,重新变成1 否则进行++操作
}
MotionManager::GetInstance()->SetEnable(false);
usleep(10000);
//模式判断:单按一个物理按键,引起相应的物理led灯亮灭,播报相应的语音文件
if(m_cur_mode == READY)//1
{
cm730.WriteByte(CM730::P_LED_PANNEL, 0x01|0x02|0x04, NULL);
LinuxActionScript::PlayMP3("../../../Data/mp3/Demonstration ready mode.mp3");
}
else if(m_cur_mode == SOCCER)//2
{
cm730.WriteByte(CM730::P_LED_PANNEL, 0x01, NULL);
LinuxActionScript::PlayMP3("../../../Data/mp3/Autonomous soccer mode.mp3");
}
else if(m_cur_mode == MOTION)//3
{
cm730.WriteByte(CM730::P_LED_PANNEL, 0x02, NULL);
LinuxActionScript::PlayMP3("../../../Data/mp3/Interactive motion mode.mp3");
}
else if(m_cur_mode == VISION)//4
{
cm730.WriteByte(CM730::P_LED_PANNEL, 0x04, NULL);
LinuxActionScript::PlayMP3("../../../Data/mp3/Vision processing mode.mp3");
}
}
1.按下达尔文op2模式选择按键,依次会变为演示准备模式,自主足球模式,互动模式,视觉处理模式。
2.循环播报:当模式为视觉处理模式时,再次按下按键,会重新回到演示准备模式。(加到5重新变为0)
3.led模式跟随,选择不同的模式,会有不同的led灯亮起(在达尔文op2的背部,颜色不同来区分)。
4.音频播放,相应的模式会有不同的音频文件播出。
5.走路停下在此函数中出现:Walking:;Getinstance()->Stop();
6.物理按键:BTN_MODE=1,BTN_START=2;