OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8241|回复: 5

stm32蓝牙控制音乐播放的问题

[复制链接]

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2015-9-19
在线时间
1 小时
发表于 2015-11-21 17:20:04 | 显示全部楼层 |阅读模式
5金钱
您好,原子哥,我想修改一下音乐播放器实验源程序,本来是用按键控制音乐开始暂停的,程序部分如下
while(1)
{
key=KEY_Scan(0); 
if(key==WKUP_PRES)//暂停
{
audiodev.status&=~(1<<0);
}
if(key==KEY1_PRES)//开始
{
audiodev.status|=0X01;  
}
if(key==KEY2_PRES||key==KEY0_PRES)//下一曲/上一曲
{
res=key;
break; 
}
wav_get_curtime(audiodev.file,&wavctrl);//得到总时间和当前播放的时间 
audio_msg_show(wavctrl.totsec,wavctrl.cursec,wavctrl.bitrate);
t++;
if(t==20)
{
t=0;
  LED0=!LED0;
}
if((audiodev.status&0X01)==0)delay_ms(10);
else break;
}
我想把中间改成了蓝牙控制,程序如下
while(1)
{
if(USART3_RX_STA&0X8000) //接收到一次数据了
{
LCD_Fill(30,200,240,320,WHITE); //清除显示
reclen=USART3_RX_STA&0X7FFF; //得到数据长度
USART3_RX_BUF[reclen]=0; //加入结束符
if(reclen==9||reclen==8) //控制DS1检测
{
if(strcmp((const char*)USART3_RX_BUF,"+LED1 ON")==0)LED1=0; //打开LED1
if(strcmp((const char*)USART3_RX_BUF,"+LED1 OFF")==0)LED1=1;//关闭LED1
}
}
LCD_ShowString(30,200,209,119,16,USART3_RX_BUF);//显示接收到的数据

if(strcmp((const char*)USART3_RX_BUF,"zanting")==0)//暂停
{
audiodev.status&=~(1<<0);
USART3_RX_STA=0;
}
if(strcmp((const char*)USART3_RX_BUF,"kaishi")==0)//开始
{
audiodev.status|=0X01; 
USART3_RX_STA=0;
}
if(strcmp((const char*)USART3_RX_BUF,"shangyiqu")==0)//上一曲
{
USART3_RX_STA=0;
res=3;
break;
}
if(strcmp((const char*)USART3_RX_BUF,"xiayiqu")==0)//下一曲
{
USART3_RX_STA=0;
res=1;
break;
}


wav_get_curtime(audiodev.file,&wavctrl);//得到总时间和当前播放的时间 
audio_msg_show(wavctrl.totsec,wavctrl.cursec,wavctrl.bitrate);
t++;
if(t==20)
{
t=0;
  LED0=!LED0;
}
if((audiodev.status&0X01)==0)delay_ms(10);
else break;
}
其他部分不变,不知道为什么只能接收第一次蓝牙传过来的数据,后边的数据就不执行了,不知道是哪里的问题,还请大神指导一下

音乐播放蓝牙控制.zip

10.34 MB, 下载次数: 466

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-11-21 19:09:29 | 显示全部楼层
回复

使用道具 举报

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2015-9-19
在线时间
1 小时
 楼主| 发表于 2015-11-21 19:11:47 | 显示全部楼层
回复【2楼】FantaSy_:
---------------------------------
strncmp和strcmp有什么区别呢
回复

使用道具 举报

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2015-9-19
在线时间
1 小时
 楼主| 发表于 2015-11-21 19:18:53 | 显示全部楼层
回复【2楼】FantaSy_:
---------------------------------
函数:int strcmp (const char *s1, const char *s2) 
       这个函数用来比较s1和s2字符串,这个函数将返回一个值,它的符号与第一对不同的字符的比较结果相关。
      如果两个字符串相等的话,strcmp将返回0。
       如果s1是s2的一个子串的话,s1小于s2
此外还有函数 
    int strncmp (const char *s1, const char *s2, size_t size) 
    此函数与strcmp极为类似。不同之处是,strncmp函数是指定比较size个字符。也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0。
我觉得原因不在这里,而且原子哥也用的strcmp
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-11-22 22:50:40 | 显示全部楼层
仿真。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2019-12-7
在线时间
15 小时
发表于 2020-4-22 15:00:51 | 显示全部楼层
楼主问题解决了吗?能否发一下解决后的例程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表