3.5 串口查询指令详解
一些基本的控制播放的功能,就无需查询,此章节可以跳过不看
以下我们对关键的地方进行详细的说明--针对查询指令:
- 查询当前在线的设备
- 播放状态查询指令
- 指定文件夹曲目总数查询
- 当前设备的总文件夹数查询
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个文件夹 |
- 、用户可以对当前的设备进行文件夹总数的查询。我们只支持“根目录”下的文件夹的数目查询。不支持文件夹里面包含文件夹。另外请用户不要建立空的文件夹,这样会造成识别错误。
- 、假如设备中有5个有效文件夹[文件夹里面有MP3/WAV文件],一个空文件夹。那么查询文件夹的总数时,会返回有6个文件夹。所以建议用户不要建立空的文件夹。
- 、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 |
这里我们扩展了两条指令,用于给用户查询当前播放的曲目总时间和已经播放的时间
- 当前播放的曲目的总时间,这个是每个MP3文件已经固定了的,直接读取MP3文件就可以获取这个时间
- 当前播放的曲目已经播放的时间,我们内部是通过读取MP3文件获取的,并不是内部自己定时计数产生的,所以是很准的
- 如下截图,是我们实际测试中,芯片返回的数据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.