ixdc 中国交互设计体验日-a5_吴晓丹_软硬件一体化设计
DESCRIPTION
我们处在一个智能移动终端设备繁盛的时代。移动终端,如iPhone,除了是人们随身的通讯设备,同时也是一台微型的计算机,可以用来连接外设和控制外设。而原本计算能力有限的 外设,在与智能移动终端相连后,获取了其计算能力、数据储存能力和联网能力,大大提高了功用。要使硬件和软件完美的协同工作,展现无缝的人机交互体验,以前硬件和软件分开设计的做法就显得有点过时了。在工作坊中,会以苹果iPhone及其配套外设为案例,讲述软件和硬件一起设计的技术要领。 课程目标 1、了解苹果公司的开发者资质规范 2、了解iPhone/iPod/iPad外设产品开发的可能性 3、了解基于iOS的应用程序的界面设计规范 4、了解苹果公司的软件与硬件外设的开发过程中所使用的工具与设备 5、了解软硬件一体化开发的基本流程 环节安排 1、实用案例分析 2、基础知识讲述 3、开发工具与设备的演示 2010年首届中国交互设计体验日,是以“赢在互动”为主题的大型交互设计会议盛宴。大会包括交互设计演讲、论坛、展览及工作坊。通过互动、交流体验的方式,将“交互设计”的理念在中国设计产业中进行高层次、深度、广泛的推广与传播。 我们希望通过这次大会,聚集国内外交互设计先驱者;展示中国交互设计优秀成果;为交互设计教育与企业搭建一个交流的平台; 促进中国交互设计产业与国际设计前沿的同步发展。TRANSCRIPT
软硬件一体化设计
广州顺科 吴晓丹
腾讯 徐森圣
中国交互设计体验日2010
工作坊
演示
iPhone外设产品点评
音响
显示屏? 按键?
有质感的
App界面
适用性
三个不同的
App?
一致的布局 一致的色调
医疗
娱乐与游戏
什么是iPhone没有的? • 红外线
• 温度感应
• 无线电
• 读卡器
• 物理按键
• 多余的电量
• ...
iPhone有什么?
• CPU
• Storage
• Networking
• Display
• Multi-Touch
• ...
iPhone有什么?
• CPU
• Storage
• Networking
• Display
• Multi-Touch
• ...
与外设的连接
屏幕
• 显示层和触摸层的分辨率是不一样的
• 但需要共享一样的坐标系统
• iPhone 4的Retina屏幕
iPad iPhone iPhone 3G Retina
• Points ≠ Pixels
• device-independent points
• 40 x 40 points → 6 mm
iPhone
3G
iPhone 4
(Retina)
屏幕尺寸 3.5 in 3.5 in
分辨率 320x480 640x960
ppi 163 326?
屏幕
• 显示层和触摸层的分辨率是不一样的
• 但需要共享一样的坐标系统
• iPhone 4的Retina屏幕
2
与外设的连接
通讯架构
Dock Connector
• 2003年以来,一直是iPod,
iPhone, iPad上的标准接口。
• 指令集
• Audio
• Video
• Location
• Multimedia remote control
• Keyboards
• Accessibility
• Custom protocols
蓝牙
• 支持协议
• Hands-Free Profile (HFP)
• Phone Book Access Profile (PBAP)
• Advanced Audio Distribution Profile (A2DP)
• Human Interface Device Profile (HID)
• Personal Area Networking (PAN)
• Device ID Profile (DID)
• Custom protocols
蓝牙
• 蓝牙与Wi-Fi共用天线
• Bluetooth 2.1 + EDR
App Store集成
连接方式比较
Dock Bluetooth Wi-Fi
连接速度
无线
低成本
开发速度
集成效果
开发资质
• iDP
• MFi
工具演示
需要些什么工具
• 一块开发板,一台iPhone
• External Accessory Framework
• ATS (Accessory Test System)
• 通常还需要一台Windows的PC
如何通讯?
• iPhone与附件通过Dock连接
• iPhone与附件至少约定一个协议串(Protocol String),用以标识对方所支持的协议。
• iPhone端使用External Accessory
Framework与附件通讯及收发的数据
• 附件端需要通过授权芯片与iPhone通讯和收发数据
EA Framework
• EASession:控制通讯过程中的输出输入流
• EAAccessory:用以标识一个附件
• EAAccessoryManager:管理附件的插入、拔出等事件
EA Framework
EASession
EAAccessoryManag
er
EAAccessory EAAccessory EAAccessory
EASession EASession
典型的编程方法
• 向你的新项目添加External Accessory
Framework
• 向EAAccessoryManager注册通知,以便获取附件插拔的消息
• 软件启动时应检查当前有无插入软件支持的附件
典型的编程方法
• 通过EASession与附件建立联系
• 通过EASession的inputStream和outputStream方法管理输入输出流
用ATS进行调试
• ATS是一套软件和硬件的套件
• ATS可帮助开发者检查iPhone和附件之间的通讯,监视收发的数据包,ACK和握手过程等等
小技巧之如何Debug
• 由于插入附件会占用iPhone的Dock接口,于是无法使用Xcode强大的调试功能
• 主要使用NSLog打印日志,然后通过Xcode的Organizer工具查看日志
• 将数据收发模块独立开来,这样在测试软件的界面时,可以制造伪数据收发模块,从而实现在Xcode上调试
小技巧之数据打包
• 每次通讯总是需要发送完整的状态吗?
• 通常,由于上位机与下位机需要不断的同步他们的状态,因此答案是肯定的。
• 然而,硬件厂商通常会选择较为低廉的MCU来生产附件,因此可用内存会很小。内存用毕的直接后果就是丢包。因此,数据包当然越小越好。
小技巧之数据打包
• 要使用变长的数据包还是定长的数据包?
• 尽量使用定长的数据包。如果数据包中的每个数据都是定长的,则不需要声明包的大小。这同样是为了附件的低廉MCU考虑的。下面的代码展示了定长数据包是如何计算自身的大小的。
小技巧之数据打包
• 是不是有点像TCP的数据包?可层层剥离的header-payload封包与解包方式是否适用?
• 是的,非常相似。一旦iPhone获取到一份数据,EA
Framework已经确保这份数据是完整的,并自动向附件发送了ACK。如果您进行过C/S架构的编程,您从前对付TCP封包和解包的方法可直接套用。但为了使包的大小尽量小一些,封包的层级应该尽量的小一点。
谢谢!
Q & A
新浪微博:t.sina.com.cn/infothinker