达尔文OP2解读(四)物理按键模式选择
来源:互联网 发布:渗透结晶防水涂料与js 编辑:程序博客网 时间:2024/06/05 19:24
//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;
阅读全文
0 0
- 达尔文OP2解读(四)物理按键模式选择
- 达尔文OP2代码解读(二)视觉处理模式
- 达尔文OP2官方demo解读(一)
- 达尔文op2官方代码解读(三)之信号处理
- 达尔文OP2音频播放
- 达尔文OP2链接WIFI配置(自动连接)
- 物理知识(四)
- OpenWRT添加物理按键(procd,ar71xx)
- Netty源码解读(四)Netty与Reactor模式
- Netty源码解读(四)Netty与Reactor模式
- Netty源码解读(四)Netty与Reactor模式
- 设计模式之工厂三姐妹解读(四)
- Netty源码解读(四)Netty与Reactor模式
- Netty源码解读(四)Netty与Reactor模式
- Netty源码解读(四)Netty与Reactor模式
- Netty源码解读(四)Netty与Reactor模式
- Netty源码解读(四)Netty与Reactor模式
- android 物理按键
- jsp的九个内置对象
- ios 三种方式加载本地HTMLString并计算高度
- 进程控制编程预习
- Python---copy()、deepcopy()与赋值的区别
- Postman的基础教程
- 达尔文OP2解读(四)物理按键模式选择
- Effective Java读书笔记-使可变性最小化
- 将数据流转化为图片 并显示在前台页面
- 了解BFF架构
- 【Q&A】tomcat启动报错org/jersey/com/google/common/base/Function
- 鼠标滚轮怎么变调节音量了
- 代码中动态设置权重
- TestRestTemplate注入时异常NoSuchBeanDefinitionException
- Java NIO原理图文分析及代码实现