搜索
bottom↓
回复: 44

ipod iphone 接口控制协议(比较齐全)

[复制链接]

出0入0汤圆

发表于 2012-2-25 09:51:35 | 显示全部楼层 |阅读模式
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周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-2-25 09:52:05 | 显示全部楼层
我自己先顶一个!

出0入0汤圆

发表于 2012-2-25 10:07:24 | 显示全部楼层
可惜我家放着的苹果不懂这个语言,不然可以试下跟MCU谈谈情。。。

出0入12汤圆

发表于 2012-2-25 10:11:17 | 显示全部楼层
回复【2楼】zhikai_wu
可惜我家放着的苹果不懂这个语言,不然可以试下跟mcu谈谈情。。。
-----------------------------------------------------------------------

这个不是和MCU谈情说爱的,是和X86谈情说爱的

出0入4汤圆

发表于 2012-2-25 10:52:44 | 显示全部楼层
mark

出0入17汤圆

发表于 2012-2-25 10:55:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-25 10:55:40 | 显示全部楼层
这个顶 可以开发 水果 周边产品了
有能力的上

出0入0汤圆

发表于 2012-2-25 11:02:46 | 显示全部楼层
mark,51能控制不?

出0入0汤圆

发表于 2012-2-25 11:02:49 | 显示全部楼层
iphone上面的那个接口定义是怎样的啊?

出0入4汤圆

发表于 2012-2-25 11:10:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-25 11:28:34 | 显示全部楼层
就是个串口控制的。本论坛早就传了这个的资料了,还有接口引脚说明。它的波特率有4种,自适应的。9600,19200,34800,57600.看到每条指令前面的FF了不。它就是个同步头,一般是先发同步头10ms,由此来辨别波特率等。另外楼主的拼写错了。应该是iPod。第一个字母是小写,第2个才是大写。

出0入17汤圆

发表于 2012-2-25 14:43:08 | 显示全部楼层
弱弱的问,这个是唯冠的协议,还是苹果的协议啊?

出0入476汤圆

发表于 2012-2-25 15:11:58 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2012-2-27 16:56:29 | 显示全部楼层
回复【3楼】skynet 青青草原
-----------------------------------------------------------------------

都可以 用串口控制的回复【7楼】zhangnan
-----------------------------------------------------------------------

出0入0汤圆

 楼主| 发表于 2012-2-27 16:57:03 | 显示全部楼层
回复【7楼】zhangnan
-----------------------------------------------------------------------

有串口的都可以

出0入0汤圆

 楼主| 发表于 2012-2-27 17:02:29 | 显示全部楼层
回复【10楼】mcu_mouse
-----------------------------------------------------------------------
谢谢你的指出我的错误

不过格式应该是是帧头+长度+命令+校验位,帧头是ff 55

出0入0汤圆

发表于 2012-2-27 18:38:06 | 显示全部楼层
回复【15楼】xlf159
回复【10楼】mcu_mouse  
-----------------------------------------------------------------------
谢谢你的指出我的错误
不过格式应该是是帧头+长度+命令+校验位,帧头是ff 55

-----------------------------------------------------------------------

呵呵。到这里的29楼下我发的那个Datasheet喽。里面有说明的FF是同步头,55才是包头。只是每次都会把FF加上,所以你才误认为它和55加一起才是包头了,当然如果把它加在一起认为是包头也未尝不可。不过如果你试着发完第一条带FF的命令后发第2条指令时去掉FF看,也能认出来的,如果它也是包头的话那肯定是认不出的。呵呵。

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4631280&bbs_page_no=2&search_mode=4&search_text=mcu_mouse&bbs_id=9999



(原文件名:1.jpg)


(原文件名:2.jpg)

出0入0汤圆

 楼主| 发表于 2012-2-28 10:28:40 | 显示全部楼层
回复【16楼】mcu_mouse
-----------------------------------------------------------------------

非常好!研究的比我深,佩服,我还有个主题,帮我瞧瞧...http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5437461&bbs_page_no=1&search_mode=3&search_text=xlf159&bbs_id=9999

出0入0汤圆

 楼主| 发表于 2012-2-28 10:35:46 | 显示全部楼层
自己先顶起来..

出0入0汤圆

发表于 2012-2-28 12:04:08 | 显示全部楼层
回复【17楼】xlf159
回复【16楼】mcu_mouse  
-----------------------------------------------------------------------
非常好!研究的比我深,佩服,我还有个主题,帮我瞧瞧...http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5437461&bbs_page_no=1&search_mode=3&search_text=xlf159&bbs_id=9999
-----------------------------------------------------------------------

这个没玩过了。呵呵

出0入0汤圆

发表于 2012-2-28 12:12:06 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2012-2-29 10:05:17 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2012-2-29 10:05:37 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2012-2-29 10:05:55 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2012-2-29 10:06:11 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2012-2-29 10:06:28 | 显示全部楼层

出0入0汤圆

发表于 2012-3-7 19:56:05 | 显示全部楼层
不错的东东啊,顶个。。

出0入0汤圆

发表于 2012-3-7 20:15:06 | 显示全部楼层
mark!

出0入0汤圆

发表于 2012-3-7 20:30:04 | 显示全部楼层
好东西,顶了

出0入0汤圆

 楼主| 发表于 2012-3-8 16:26:29 | 显示全部楼层
顶了   datasheet.....

出0入0汤圆

发表于 2012-3-27 17:17:58 | 显示全部楼层
      mark

出0入0汤圆

发表于 2012-3-27 20:10:39 | 显示全部楼层
有待测试,有官方的一些文档最好了。

出0入0汤圆

发表于 2012-3-27 21:48:10 | 显示全部楼层
看一看!

出0入0汤圆

发表于 2012-4-4 14:23:39 | 显示全部楼层
收下先,但是大家做的时候有没有遇到有时候IPOD不返回信息的时候,好像就是挂了一样的

出0入0汤圆

发表于 2012-11-12 16:13:55 | 显示全部楼层
用这个可不可以控制IPHONE4S的啊

出0入0汤圆

发表于 2012-11-22 22:49:09 | 显示全部楼层
ding  ding

出0入0汤圆

发表于 2012-11-22 22:50:35 | 显示全部楼层
不错! 有这个可以搞一些DIY了

出0入0汤圆

发表于 2012-11-25 14:09:03 | 显示全部楼层
用这个可以控制IPHONE4吗,我发信号后好像没什么反应啊,串口有数据返回,但是手机上没什么反应啊

出0入0汤圆

发表于 2014-10-18 22:44:33 | 显示全部楼层
好资料啊,需要。及时雨啊。

出0入0汤圆

发表于 2014-10-25 19:18:57 | 显示全部楼层
水一贴。2012-12的贴

出0入0汤圆

发表于 2014-11-15 19:32:08 | 显示全部楼层
我来标记一下

出0入0汤圆

发表于 2014-11-16 19:26:47 来自手机 | 显示全部楼层
如果有让ipod和iPhone输出视频的协议那就厉害了

出0入0汤圆

发表于 2014-11-17 14:52:08 | 显示全部楼层
额。。这个都弄搞到,强大,学习下

出0入0汤圆

发表于 2014-11-19 22:28:41 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2014-11-19 23:08:18 | 显示全部楼层
gwichenjin 发表于 2014-11-17 14:52
额。。这个都弄搞到,强大,学习下

在论坛搜。还有更完善的,几十页PDF的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 14:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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