概述
EAAccessoryManager
管理所有连接到iPhone的配件。
EASession
定义了iPhone app与外部配件的连接和通道。
EAAccessory类
EAAccessory
代表了一个单例的硬件配件对象。
EAAccessory类的属性:
1) Boolean connected read-only 配件是否连接iPhone的标志
@property (nonatomic, readonly, getter = isConnected) BOOL connected
2) NSUInteger connectionID read-only 连接设备的配件唯一标识
@property (nonatomic, readonly) NSUInteger connectionID
EAAccessory Framework提供了可用配件的列表,所以要用NSArray来处理:
1 for (EAAccessory *accessory in _accessoryList) {2 if ([disconnectedAccessory connectionID] == [accessory connectionID]) {3 break;4 }5 disconnectedAccessoryIndex++;6 }
3) id delegate 定义了接收配件状态变化的notifications的对象
定义一个accController类
1 @interface accController : NSObject {2 EAAccessory *_accessory;3 EASession *_session;4 NSString *_protocolString;5 }6 (void)accessoryDidDisconnect : (EAAccessory *)accessory;7 @end
4) NSString firmwareRevision read-only 固件版本信息,注意兼容性
@property (nonatomic, readonly) NSString *firmwareRevision
5) NNString hardwareRevision read-only 硬件版本信息,同上
@property (nonatomic, readonly) NSString *hardwareRevison
6) NSString manufacturer read-only 配件所属公司
@property (nonatomic, readonly) NSString *manufacturer
7) NSString modelNumber read-only 配件设备号
@property (nonatomic, readonly) NSString *modelNumber
8) NSString name read-only 配件名称,反馈给用户连接了正确的配件
@property (nonatomic, readonly) NSString *name
9) NSArray protocolStrings read-only protocols的名称,注意,跟connectionID对应,所以是一个NSArray的对象
@property (nonatomic, readonly) NSArray *protocolStrings
代码示例:
1 - (void)setupAccessoryController : (EAAccessory *)accessory withProtocolString : (NSString *)protocolString {2 [_accessory release]; // 防止断开连接后重连不同配件3 _accessory = [accessory retain];4 [_protocolString release];5 _protocolString = [protocolString copy];6 }
这段代码可以用在配件连接设备后来创建一个accessory controller对象。
调用个的方法:
1 [accessoryController setupAccessoryController : _selectedAccessory withProtocolString : [[_selectedAccessory protocolStrings] objectAtIndex : 0]]; // 只能连接一个设备
10) NSString serialNumber read-only 连接的配件序列号,每个配件唯一
@property (nonatomic, readonly) NSString *serialNumber
EAAccessory类中的常量:
EAConnectionIDNone 实质为0,无效的连接,通过与connectionID的比较,可以尝试重连配件或者提示用户断开配件重新连接设备。
3.EASession类
创建一个会话对象之后,你应该马上配置流对象。流发送事件到他们关联的delegate去通知它流状态的改变。举个例子,当数据正等着被读或者有足够的空间被写,流就通知delegate。
当通过提供的流,发送和接收数据,确保数据是按照协议格式化的就是你的责任。EASession类没有配件协议的知识,不能够尝试去格式化数据。
(
1
)
-(
instancetype)
initWithAccessory:(
EAAccessory*)
accessory
(
NSString*)
protocolString
这个方法会返回一个会话的实例。
accessory:是你的交流的配件对象,可以从EAAccessoryManager对象得到。
protocolString:和配件交流使用的协议,所有的交流都必须通过这个协议。
(2)@property(nonatomic, readonly) EAAccessory *accessory ,指的是这个会话的配件。
(3)@property(nonatomic, readonly) NSString *protocolString ,和配件交流使用的协议。
(
4
)
@property(nonatomic, readonly) NSInputStream *inputStream
(
5
)
@property(nonatomic, readonly) NSOutputStream *outputStream
(4)和(5)是通过session对象自动提供,但你必须配置它,如果你想要接收任何关联的流事件。你必须实现delegate一个方法- (
void)
stream:(
NSStream *)
theStreamhandleEvent:(
NSStreamEvent)
streamEvent;
并且必须安排流是一个循环的执行,在程序的线程中异步接收(发送)数据。
最后
以上就是优秀大门为你收集整理的ExternalAccessory.framework 第三方硬件接口的全部内容,希望文章能够帮你解决ExternalAccessory.framework 第三方硬件接口所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复