ExternalAccessory.framework 第三方硬件接口


     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的比较,可以尝试重连配件或者提示用户断开配件重新连接设备。



3EASession

    这个类是用来创建一个程序和连接设备的一个交流渠道。当创建一个会话时,你必须指定你想和设备交流的协议。初始化这个类的实例之后,你会通过这个协议,用提供的输出和输入流去和设备交换数据。

创建一个会话对象之后,你应该马上配置流对象。流发送事件到他们关联的delegate去通知它流状态的改变。举个例子,当数据正等着被读或者有足够的空间被写,流就通知delegate

当通过提供的流,发送和接收数据,确保数据是按照协议格式化的就是你的责任。EASession类没有配件协议的知识,不能够尝试去格式化数据。

1

-(instancetype)initWithAccessory:(EAAccessory*)accessory
  forProtocol:(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

并且必须安排流是一个循环的执行,在程序的线程中异步接收(发送)数据。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值