|
Ipod 通讯协议
1.通讯格式说明:
field size value
Header 2 0xff 0x55
Length 1 Size of mode+command+parameter
Mode 1 the mode the command is referring to
Command 2 the two byte command
Parameter 0..n optional parameter, depending on the command
Checksum 1 0x100 - ( (sum of all length/mode/command/parameter bytes) & 0xFF)
2.具体通讯命令说明:
命令 说明
0xff,0x55,0x03,0x00,0x01,0x04,0xf8 打开ipod串口连接,并进入高级控制模式
ff 55 03 00 01 04 f8
通讯命令 说明
? 0xFF 0x55+length+0x04 0x00 0x00+Result(1)
+Command(2)+ 校验位(1) think that the result 0x04 means that the command wasn´t understood
返回: 0xFF 0x55+length+0x04 0x00 0x01+Result(1)
+Command(2)+ 校验位(1) 返回信息result: 0.表示成功 2.表示失败 4表示超出范围
Command:表示之前发送的指令的command
0xFF,0x55,0x03,0x04,0x00,0x02,0xf7
FF 55 03 04 00 02 f7 发送简单的ping指令,返回:FF 55 0B 04 00 03 FF FF FF FF 00 00 00 00 F2,表示连接成功
返回: 0xFF,0x55,0x0B,0x04,0x00,0x03,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0xF2 表示成功连接
? 0xff,0x55,0x03,0x04,0x00,0x09,0xf0 ? returns flag set with 0x00 0x0b, don´t know, what this means (perhaps an indicator for track-change - if you set this flag to 0x01 it turns to 0x00 again after changing the track)
? 返回: 0xFF 0x55 0x04 0x04 0x00 0x0A +byte(1)
+ 校验位(1) Byte=0x00 or 0x01
? 0xFF 0x55 0x04 0x04 0x00 0x0B +byte(1)
+ 校验位(1) parameter 0x00 & 0x01 result in a success-answere (copare 0x00 0x01), don´t know what happens - seems to be a flag which can be read with 0x00 0x09
? 0xFF 0x55 0x04 0x04 0x00 0x0C +byte(7)
+ 校验位(1) ??? results in a answer 0x0d
? 0xFF 0x55 0x04 0x04 0x00 0x0D + byte(7)or byte(1)+ 校验位(1) tried some parameters - result seems to dependent on current playlist
parameters 0x00 0x00 0x00 0x00 0x00 0x00 0x00 give (on my Ipod) 11 bytes(0x00 0x00 0x00 0x00 0x00 0x00 0x02 0xf0 0xdb 0x00 0x00 in main-Playlist - *not* the playlist-number and *not* the count of tracks in this playlist)
This command can also inform the accessory when there is a track change (one song ends and another begins). So it is a "subscription" - some previous query caused the ipod to send this every time the track changes. Probably the parameter bytes are a kind of track ID, maybe based on some filesystem attribute, such as actual position on the hard disk.
0xFF,0x55,0x03,0x04,0x00,0x12,0xe7 获取ipod型号指令
返回: 0xFF,0x55,0x05,0x04,0x00,0x13,0x01,0x0D,0xD6 返回ipod型号
0xFF,0x55,0x03,0x04,0x00,0x14,0xe5 获取ipod,name
返回: 0xFF 0x55 + length + 0x04 0x00 0x15
+ipod name+校验位(1) 返回的ipod name数据
0xFF,0x55,0x03,0x04,0x00,0x16,0xe3 发送指令,使控制命令0x00 0x17有效
返回: 0xFF,0x55,0x06,0x04,0x00,0x01,0x00,0x00,0x16,0xDF 表示已经激活了0x00 0x17的控制命令
0xFF 0x55 0x08 0x04 0x00 0x17 + type(1) +number(4)+ 校验位(1) 切换到指定的type(1)(0x01表示进入 播放列表,0x02表示进入 表演者,0x03 表示进入 专辑,0x04表示进入 风格,0x05 表示进入 歌曲,0x06 表示进入 作曲家)
Number(4)(进入type的第几个项,从零开始)
返回: 0xFF,0x55,0x06,0x04,0x00,0x01,0x00,0x00,0x17
0xDE 返回0x17的命令是否成功切换
0xFF,0x55,0x04,0x04,0x00,0x18 +type(1)+校验位(1) 获取ipod type(1)(0x01表示 播放列表,0x02表示 表演者,0x03表示 专辑,0x04表示 风格, 0x05表示 歌曲,0x06表示 作曲家)的总数
返回: 0xFF 0x55 0x07 0x04 0x00 0x19 +number(4)+校验位(1) 获取各种类型返回的总数number(4)
0xff 0x55 +length +0x04 +0x00 0x1a +type(1)+number(4)(从0开始索引)
+Number(4)(从1开始索引)+校验位(1) 获取相应type(1)和第一个number(4)表示要获取的类型的开始位置,第二个number(4)表示要返回的类型的数量,
注:当type=0x01时第一个number=0时,返回的第一项是ipod name。
返回: 0xff 0x55 +length +0x04 +0x00 0x1B +
number(4) + string(N)+校验位(1) 返回多项相应的项目名称
0xFF,0x55,0x03,0x04,0x00,0x1c,0xdd 获取现在的播放的歌曲总时间和已播放的时间还有播放状态
返回: 0xFF 0x55 0x0C 0x04 0x00 0x1D +length(4)+ time(4)+status(1)+校验位(1)
获取正在播放的曲目总时间和当前时间(以毫秒为单位),length(4)(表示总时间),time(4)(表示当前时间),status(1)(status=0x0 stop, 0x01 playing, 0x02 paused)
0xFF,0x55,0x03,0x04,0x00,0x1E,0xDB 获取当前歌曲的类型列表的位置(从0开始索引)
返回: 0xFF 0x55 0x07 0x04 0x00 0x1F + number(4)
+ 校验位(1) 返回当前歌曲所在类型列表的位置从0开始
0xFF 0x55 0x07 0x04 0x00 0x20 + number(4)
+ 校验位(1) 获取当前播放列表,你所请求的歌曲名称(从0开始),
返回: 0xFF 0x55 0x1B 0x04 0x00 0x21+ string(N)
+ 校验位(1) 返回请求返回的歌曲名称string
0xFF 0x55 0x07 0x04 0x00 0x22 +number(4)
+校验位(1) 获取当前列表中number(4)(从0开始)索引的歌曲的演唱者
返回: 0xFF 0x55 0x0A 0x04 0x00 0x23 + string(N)
+校验位(1) 返回请求的歌曲的演唱者
0xFF 0x55 0x07 0x04 0x00 0x24 +number(4)
+校验位(1) 获取当前列表中number(4)(从0开始)索引的歌曲的专辑
返回: 0xFF 0x55 0x07 0x04 0x00 0x25 +string(N)
+校验位(1) 返回请求的歌曲的专辑
0xFF 0x55 0x04 0x04 0x00 0x26 0x01 0xd1 开始自动每隔500毫秒返回一次歌曲播放的当前时间,如果中途暂停播放,则自动停止发送,直到取消自动返回时间命令。
返回: 0xFF 0x55 0x08 0x04 0x00 0x27 0x04 +number(4) + 校验位(1) 返回的当前播放的时间
0xFF 0x55 0x04 0x04 0x00 0x26 0x00 0xd2 停止自动发送时间的命令
返回: 0xFF,0x55,0x06,0x04,0x00,0x01,0x00,0x00,0x26,0xCF 成功停止自动发送时间返回的串口数据
0xFF,0x55,0x07,0x04,0x00,0x28,0xff,0xff,0xff,0xff,0xd1
FF 55 07 04 00 28 ff ff ff ff d1 从播放列表第一首开始播放歌曲
0xff,0x55,+length +0x04+0x00 0x28+歌曲索引(4)(从0开始索引)+校验位(1) 在没有指定播放模式的时候,播放指定的歌曲列表索引值的歌曲,在指定播放模式情况下,播放第一首
0xFF 0x55,0x04,0x04,0x00,0x29,0x01,0xce
FF 55 04 04 00 29 01 ce 播放\暂停
0xFF 0x55 0x04 0x04 0x00 0x29 0x02 0xcd 停止
0xFF 0x55 0x04 0x04 0x00 0x29 0x03 0xcc
FF 55 04 04 00 29 03 cc 播放下一首
0xFF 0x55 0x04 0x04 0x00 0x29 0x04 0xcb 播放上一首
0xFF 0x55 0x04 0x04 0x00 0x29 0x05 0xca 快进播放
0xFF 0x55 0x04 0x04 0x00 0x29 0x06 0xc9 快退播放
0xFF 0x55 0x04 0x04 0x00 0x29 0x07 0xc8 停止快进或快退
0xFF 0x55 0x03 0x04 0x00 0x2c 0xcd 获取目前的随机播放方式
返回: 0xFF 0x55 0x04 0x04 0x00 0x2D + 播放方式(1)
+校验位(1) 返回随机播放方式 播放方式(1) (Off = 0x00, Songs = 0x01, Albums = 0x02)
0xFF 0x55 0x04 0x04 0x00 0x2e + 播放方式(1)+ 校验位(1) 设置当时随机播放方式(1) (Off = 0x00, Songs = 0x01, Albums = 0x02)
0xFF 0x55 0x03 0x04 0x00 0x2f 0xca 获取目前的播放方式
返回: 0xFF 0x55 0x04 0x04 0x00 0x30 + 播放方式(1)+ 校验位(1) 返回 播放方式(1) (Off = 0x00, One song = 0x01, All songs = 0x02)
0xFF 0x55 0x04 0x04 0x00 0x31 0x00 0xc7 设置目前播放方式(1) (Off = 0x00, One song = 0x01, All songs = 0x02)
0xFF 0x55 0x03 0x04 0x00 0x35 0xc4 获取总的歌曲数量
返回: 0xFF 0x55 0x07 0x04 0x00 0x36 +number(4)
+ 校验位(1) 返回的当前播放列表的总数number(4)
0xFF 0x55 0x07 0x04 0x00 0x37 +number(4)
+ 校验位(1) 跳转并播放number(4)列表位置的歌曲(从0开始)
0xFF 0x55 0x09 0x04 0x00 0x38 +byte(1)+number(4)+FF+校验位 Byte(1)表示type,number(4)表示准备要查询的第几个项目里面的播放列表歌曲
返回: 0xFF 0x55 0x06 0x04 0x00 0x01 0x00 0x00 0x38 0xBD 0x00 0x38指令成功返回
返回: 0xFF 0x55 0x06 0x04 0x00 0x01 0x00 0x00 0x37 0xBE 成功跳转到制定播放的歌曲
Type bytes
Type Purpose
0x01 Playlist
0x02 Artist
0x03 Album
0x04 Genre
0x05 Song
0x06 Composer |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|