iOS蓝牙传输数据演示-3

摘要:
蓝牙传输数据演示在上一节中,我们开发了一个基于蓝牙通信的工具类。在本节中,我们通过向小米手环发送数据来演示工具类的用法。该工具类属于MVC的M层,仅负责处理其自身的处理。不要处理任何业务逻辑或UI。我的小米手环标识符:60C955B2-8F7C…我稍后不会写它。每个手环的唯一标识符是不同的UUID:2A06数据,可以使小米手环振动:2示例效果:1。
蓝牙传输数据演示
  • 在上一小节中,我们一起开发了基于蓝牙通讯的工具类,该类中详细的实现蓝牙连接流程中的每一个环节

  • 本小节我们就以给小米手环发送数据使其震动来演示我们工具类的用法

  • 工具类本身具有通用性,属于MVC中的M层,只负责处理自身负责的处理,不处理任何的业务逻辑和UI

  • 我的小米手环的identifer:60C955B2-8F7C……

    • 后面我就不写了,每一个手环的唯一标识符都是不一样的
  • 能够让小米手环震动的特征的UUID:2A06
  • 能够让小米手环震动的数据:2(二进制数据)

  • 示例效果:1。点击开始扫描按钮,搜索蓝牙设备,并且将外设的信息显示在tableview中 2.点击指定的tableviewcell,让小米手环震动

这里写图片描述

#import "ViewController.h"

#import "HMBluetoothManager.h"

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tableView;


@end

//我的小米手环dentifier
#define kIdentifier @"60C955B2-8F7C-8784-665F-D05E520F5A12"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];


    // Do any additional setup after loading the view, typically from a nib.
}

#pragma mark -扫描按钮
- (IBAction)scanButtonClick:(id)sender {

    kHMBluetoothManager.UUID = @"2A06";
        //1.开始扫描
        [kHMBluetoothManager BeginScanPeripheral:^(CBPeripheral *peripheral) {
            //刷新tableview
            [self.tableView reloadData];


        }];
}

#pragma mark -tableviewdelegate

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return kHMBluetoothManager.scanArr.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

    CBPeripheral *peripheral = kHMBluetoothManager.scanArr[indexPath.row];

    cell.textLabel.text = [peripheral.identifier UUIDString];

    cell.detailTextLabel.text = peripheral.name;

    return cell;
}

//点击cell连接设备
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //获取点击的外设
    CBPeripheral *peripheral = kHMBluetoothManager.scanArr[indexPath.row];

    //判断是否是我的小米手环(专门为了测试买的),因为蓝牙会扫描到周边很多外设,我们通过唯一标识符来判断自己的外设
    if ([[peripheral.identifier UUIDString] isEqualToString:kIdentifier]) {

        //3.连接设备
        [kHMBluetoothManager connectPeripheral:peripheral Completion:^(CBPeripheral *peripheral, NSString *connectState) {
            NSLog(@"%@",connectState);
            //4.发送数据
            //实际开发中,扫描特征会有一定的延迟,我们可以通过回调或者通知来获取发现特征的回调,这里为了快速演示,我就设置了3s的延迟
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                Byte *byte[1];
                byte[0]= 02 & 0xff;
                NSData *data = [NSData dataWithBytes:byte length:1];
                [kHMBluetoothManager writeValue:data toPeripheral:kHMBluetoothManager.currentPeripheral characteristic:kHMBluetoothManager.currentCharacteristic];
            });

        }];
    }
    else
    {
        NSLog(@"这不是你的小米手环");
    }
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

免责声明:文章转载自《iOS蓝牙传输数据演示-3》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux随笔:安装软连接时:ln: failed to create symbolic link ‘/usr/bin/python3/python3’: File existsNginx+keepalived的高可用集群(一、基本概念介绍)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

安卓手机连接苹果蓝牙耳机声音变小

安卓手机连接苹果蓝牙耳机声音变小 打开安卓手机------点击设置-----关于手机------版本号----连续点击7下,就可以进去开发者模式------如果手机设置有密码,需要打开密码,提示进入开发者模式后退出 然后点击-----设置-----点击 系统和更新 ----- 然后 点击 开发人员协助---进去选择 蓝牙绝对音量 【如果一开始进去是打开那...

Arduino---HC-05 蓝牙模块

蓝牙基础知识回顾: (一)Arduino和HC-05连接 注意:Arduino通过TX与HC-05进行通信,而Arduino的电压为5V,HC-05的允许电压为3.3V。短时间通信无妨(长时间可能烧毁HC-05)<接分压电路> U = 5*20/30 = 3.3V I = 5V/(10K+20K) = 0.16mA (二)Arduino和...

原创翻译:iOS 应用程序 蓝牙后台运行

    默认情况下,普通的CoreBluetooth 任务中的大多数,无论是Central还是peripheral ,在后台或者挂起状况下都是无法进行的。也就是说,你可以通过宣布你的应用程序支持后台处理模式来允许你的一个应用程序把你从一个挂起状态中唤醒来执行某些蓝牙相关的事件。   即使你的应用程序支持一种或者两种CoreBluetooth后台执行模式,那...

蓝牙协议分析(4)_IPv6 Over BLE介绍

1. 前言 蓝牙是个奇葩的家伙:它总是以后来者的身份出现,很喜欢打仗,而且还不落下风(有点像某讯的风格)。90年代末期和Wi-Fi的无线标准之争如此,当前和802.15.4系(ZigBee、RF4CE、Thread等)的IoT之争,也如此。 90年代末期,蓝牙刚出道的时候,就曾叫嚣着把Wi-Fi(802.11)从地球上抹去。反过来,1999年Wi-Fi...

ios开发之--UITableView中的visibleCells的用法

先上图: 具体代码如下: #import "ViewController.h" @interface ViewController ()<UITableViewDelegate,UITableViewDataSource> @property(nonatomic,strong)UITableView *myTableV; @propert...

CoreData使用方法二:NSFetchedResultsController实例操作与解说

        学习了NSFetchedResultsController。才深深的体会到coredata的牛逼之处。原来Apple公司弄个新技术。不是平白无故的去弄,会给代码执行到来非常大的优点。coredata不仅能让我们大大的降低代码量。还最大化的提高执行效率。        就拿NSFetchedResultsController来说吧,他是和...