Sible 0.1.1

Sible 0.1.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最新版本2015年2月

Kevin Rohling维护。



Sible 0.1.1

  • 作者:
  • Emberlight

SIBLE - 为iOS提供的简单蓝牙低功耗(BLE)库

介绍

Sible是在iOS蓝牙低功耗(BLE)API之上的抽象层。当开发复杂的BLE应用程序时,发现服务、特征并启动读写请求的过程会迅速变得复杂且难以管理。Sible封装了这种复杂性,并使可以使用更简单、直观且易于使用的模式与BLE设备进行交互。

快速入门

  1. 使用gem install cocoapods安装CocoaPods。
  2. 在你的XCode项目中创建一个名为Podfile的文件,并添加以下行

    pod 'Sible'
  3. 在Xcode项目目录中运行pod install。CocoaPods应该会下载并安装Sible库,并创建一个新的Xcode工作区。在Xcode中打开此工作区。

使用方法

搜索附近设备

  Sible *sible = [[Sible alloc] init];
  [sible scan:@"SERVICE-UUID" WithDuration:5.0 Handler:^(NSArray *scans, NSError *error) {
    for (PeripheralScan *scan in scans) {
      NSLog(@"Peripheral: %@", scan.peripheral);
      NSLog(@"Advertisement: %@", scan.advertisement);
      NSLog(@"RSSI: %@", scan.RSSI);
    }
  }];

读取BLE特征值

  Sible *sible = [[Sible alloc] init];
  [sible read:peripheral ServiceUUID:@"SERVICE-UUID" CharacteristicUUID:@"CHAR-UUID" 
    Handler:^(CBPeripheral *peripheral, NSData *data, NSError *error) {
      NSLog(@"Result: %@", data);
  }];

向BLE特征值写入单个字节

  Sible *sible = [[Sible alloc] init];
  [sible write:device.peripheral ServiceUUID:@"SERVICE-UUID" CharacteristicUUID:@"CHAR-UUID" Byte:0x99 
    Handler:^(CBPeripheral *peripheral, NSError *error) { }];

向BLE特征值写入ASCII字符串

  Sible *sible = [[Sible alloc] init];
  [sible write:device.peripheral ServiceUUID:@"SERVICE-UUID" CharacteristicUUID:@"CHAR-UUID" String:@"my data" 
    Handler:^(CBPeripheral *peripheral, NSError *error) { }];

向BLE特征值写入一组字节

  unsigned char bytes = {0x01, 0x02, 0x03};
  NSData *data = [NSData dataWithBytes:bytes length:3];
  Sible *sible = [[Sible alloc] init];

  [sible write:device.peripheral ServiceUUID:@"SERVICE-UUID" CharacteristicUUID:@"CHAR-UUID" Value:data 
    Handler:^(CBPeripheral *peripheral, NSError *error) { }];

并行交互多个设备

同时执行针对多个外设的操作也是可能的。下面的例子将并行向设备列表写入。

  for (CBPeripheral *peripheral in myListOfPeripherals) {
    [sible write:peripheral ServiceUUID:@"SERVICE-UUID" CharacteristicUUID:@"CHAR-UUID" Byte:0x99 Handler:^(CBPeripheral *peripheral, NSError *error) { }];
  }

Sible 事务

事务是一种简单的 orchestration(编排)方式,用于使一系列连续发生的操作按顺序执行。这些操作可以是读取或写入,甚至是针对不同的外部设备(Peripherals)执行。所有的事务中的操作都是顺序执行,每次只执行一个,直到所有操作都完成。如果在事务执行过程中某个操作失败,事务将停止,并调用适当的错误处理块。

事务示例

  //This transaction executes 2 write operations and then a read

  SiblePeripheralTransaction *transaction = [[SiblePeripheralTransaction alloc] initWithPeripheral:peripheral];
  [transaction enqueueWriteOperation:@"SERVICE1-UUID" CharacteristicUUID:@"CHAR1-UUID" Byte:0x01];
  [transaction enqueueWriteOperation:@"SERVICE2-UUID" CharacteristicUUID:@"CHAR2-UUID" String:@"my data"];
  SibleReadOperation *readOp = [transaction enqueueReadOperation:@"SERVICE3-UUID" CharacteristicUUID:@"CHAR3-UUID"];

  [sible executeTransaction:transaction Handler:^(SibleTransaction *transaction, NSError *error) {
      NSLog(@"Result: %@", readOp.readValue);
  }];

带有多个外部设备的事务示例

  //This transaction executes 2 write operations and then a read.  
  //Each operation is executed against a different peripheral.

  SibleTransaction *transaction = [[SibleTransaction alloc] init];
  [transaction enqueueWriteOperation:peripheral1 ServiceUUID:@"SERVICE1-UUID" CharacteristicUUID:@"CHAR1-UUID" Byte:0x01];
  [transaction enqueueWriteOperation:peripheral2 ServiceUUID:@"SERVICE2-UUID" CharacteristicUUID:@"CHAR2-UUID" String:@"my data"];
  SibleReadOperation *readOp = [transaction enqueueReadOperation:peripheral3 ServiceUUID:@"SERVICE3-UUID" CharacteristicUUID:@"CHAR30UUID"];

  [sible executeTransaction:transaction Handler:^(SibleTransaction *transaction, NSError *error) {
      NSLog(@"Result: %@", readOp.readValue);
  }];