KT404A芯片使用手册_3.串口通讯协议3.5

3.5 串口查询指令详解

一些基本的控制播放的功能,就无需查询,此章节可以跳过不看

以下我们对关键的地方进行详细的说明--针对查询指令:

  1. 查询当前在线的设备
  2. 播放状态查询指令
  3. 指定文件夹曲目总数查询
  4. 当前设备的总文件夹数查询

3.5.1 查询当前在线的设备

查询在线设备

7E FF 06 3F 00 00 00 FE BC EF

U盘正在播放

(1)、芯片在工作过程中,会不断的检测设备的在线情况,用户也可以通过0x3F这条指令进行查询

(2)、举例说明,如果芯片返回的数据为7E FF 06 3F 00 00 0A xx xx EF

     DL=0x0A = 0000 1010 代表了TF卡和FLASH在线

 如果DL=0x1F= 0000 1111 代表了U盘、TF卡、PC、FLASH均在线

(3)、0x0F--低四位均代表一种设备。

3.5.2 播放状态查询指令

正在播放

7E FF 06 42 00 01 01 xx xx EF

U盘正在播放

暂停播放

7E FF 06 42 00 02 02 xx xx EF

TF卡播放过程中被暂停

停止播放

7E FF 06 42 00 04 00 xx xx EF

PC连接下载模式

 

7E FF 06 42 00 08 01 xx xx EF

FLASH正在播放

 

7E FF 06 42 00 10 00 xx xx EF

芯片处于睡眠

(1)、芯片在解码过程中会有3种状态对用户开放。用户可以通过指令查询获取芯片的当前状态

(2)、播放暂停是指,正在播放一首曲目,人为的发送指令暂停播放,

播放停止是指,一首曲目播放完毕,芯片就处于播放停止的状态

(3)、如果返回的数据为7E FF 06 42 00 02 02 xx xx EF代表的意思详解如下:

DH = 0x02 --- 代表的是当前是TF卡设备,

DL = 0x02 --- 代表的是当前“TF卡播放过程中被暂停

(4)、如果返回的数据为7E FF 06 42 00 02 02 xx xx EF代表的意思详解如下:

DH的含义

DL的含义

0x01

当前设备是U盘

0x00

当前处于播放停止状态

0x02

当前设备是TF卡

0x01

当前处于正在播放状态

0x04

当前设备是USB盘

0x02

当前处于正在暂停状态

0x08

当前设备是FLASH盘

 

 

0x10

当前是SLEEP模式

 

 

3.5.3 指定文件夹曲目总数查询[0x4E]

查询文件夹曲目总数

7E FF 06 4E 00 00 01 FE AC EF

查询01文件夹的总曲目数

 

7E FF 06 4E 00 00 0B FE A2 EF

查询11文件夹的总曲目数

1、如果用户按照我们设定的规则命名文件,“01”、“02”等等,这样就可以对这些文件夹里面的曲目总数进行查询。查询的有效文件包括MP3、WAV。其它格式的文件忽视。

2、如果查询的文件夹为空[表示无有效文件],那么串口会直接返回以下信息

显示查询文件夹出错

 

3.5.4 当前设备的总文件夹数目查询[0x4F]

查询文件夹总数

7E FF 06 4F 00 00 00 FE AC EF

查询当前设备的文件夹总数

返回文件夹总数

7E FF 06 4F 00 00 03 FE AC EF

有3个文件夹

  1. 、用户可以对当前的设备进行文件夹总数的查询。我们只支持“根目录”下的文件夹的数目查询。不支持文件夹里面包含文件夹。另外请用户不要建立空的文件夹,这样会造成识别错误。
  2. 、假如设备中有5个有效文件夹[文件夹里面有MP3/WAV文件],一个空文件夹。那么查询文件夹的总数时,会返回有6个文件夹。所以建议用户不要建立空的文件夹。
  3. 、TF卡和U盘、SPIFLASH是一样的。查询的是当前的设备,如果当前处于U盘播放状态,则查询到的是U盘内部根目录的文件夹总数

3.5.6 查询当前播放的音乐的总时间和已经播放的时间[0x80][0x81]

查询当前播放的曲目总时间

7E FF 06 80 00 00 00 FE 7B EF

查询当前播放的曲目已经播放的时间

7E FF 06 81 00 00 00 FE 7A EF

这里我们扩展了两条指令,用于给用户查询当前播放的曲目总时间和已经播放的时间

  1. 当前播放的曲目的总时间,这个是每个MP3文件已经固定了的,直接读取MP3文件就可以获取这个时间
  2. 当前播放的曲目已经播放的时间,我们内部是通过读取MP3文件获取的,并不是内部自己定时计数产生的,所以是很准的
  3. 如下截图,是我们实际测试中,芯片返回的数据7E FF 06 80 00 01 4B FE 2F EF

其中01 4B就是芯片内部获取的总时间,合并起来就是0x014B转换为十进制就是331

我们推荐的算法是331/60 = 5分钟,331%60 = 31秒。这样就得出这首曲目的时间为5分31秒

       4. 用户在使用的过程中,如果要显示歌曲的播放时间,我们建议用户不要频繁的去查询,可以获取总时间之后,自己的MCU内部做一个计时处理,因为一般的播放时间不需要要求很准的。当然如果要去频繁的查询也是可以的。

       5. 查询歌曲的总时间和当前已经播放的时间,请一定要在当前曲目解码成功之后,才能获取正确的时间。否则查询回来的就是0x0000.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值