Table of Content

2014-11-14 更新

驾校也快该考科二了,最近也没怎么研究新东西。不过昨天把蓝牙发送数据研究出来了。原谅博主比较懒,有不明白的,可以加我 qq10771533 ,共同探讨。

代码

引入一个LGBluetooth的框架,在viewDidLoad方法里写上

[LGCentralManager sharedInstance];

再写一个方法扫描设备

// 扫描 1 秒钟
[[LGCentralManager sharedInstance] scanForPeripheralsByInterval:1
                                                     completion:^(NSArray *peripherals)
 {
     // 如果发现了设备
     if (peripherals.count) {
         [self testPeripheral:peripherals[0]];
     }
 }];

里面嵌套了一个testPeripheral方法

[peripheral connectWithCompletion:^(NSError *error) {
    [peripheral discoverServicesWithCompletion:^(NSArray *services, NSError *error) {
        for (LGService *service in services)
        {
            if ([service.UUIDString isEqualToString:@"ff00"]) {
                [service discoverCharacteristicsWithCompletion:^(NSArray *characteristics, NSError *error) {

                    for (LGCharacteristic *charact in characteristics) {

                        if ([charact.UUIDString isEqualToString:@"ff01"]) {
                            __block int i = 0;
                            [charact writeByte:0x01 completion:^(NSError *error) {
                                if (++i == 3) {
                                    // finnally disconnecting
                                    [self.peripheral disconnectWithCompletion:nil];
                                }
                            }];
                        }
                    }
                }];
            }
        }
    }];
}];

说明

代码写的应该很明白了,至于 ff00,ff01,我理解为通道,这个,下载一个 LightBlue,可以帮助你理解,在 ff00 通道中,扫出来 ff01 和 ff02 ,ff01 通道为写通道。不同模块可能不一样,附图两张供大家理解。


该图为LightBlue的截图,软件可以在 AppStore 下载到。

2014-11-11 更新

最近在做一个智能车,小车已经做出来了,支持蓝牙通信。现在差的就是软件部分。软件部分的语音识别已经做完,蓝牙做到了扫描和连接,发送数据还在继续蛋疼中。稍后补充详细内容。

智能车

先上图


由于不是我做的,技术参数我也不懂,就介绍到这里吧。

语音识别

开始用了百度的语音 API,发现百度太特么坑爹,那demo里面居然还有内存管理的代码妈蛋的。

然后果断选择了讯飞的云服务,也是完全免费 点我 申请这个服务,获得 App_Key,然后就可以用了。参照官方的demo,就行.不需要太多代码,很简洁的。

蓝牙

蓝牙协议本身经历了从 1.0 到 4.0 的升级演变, 最新的 4.0 以其低功耗著称,所以一般也叫 BLE(Bluetoothlow energy)。

iOS 有两个框架支持蓝牙与外设连接。一个是 ExternalAccessory。从 iOS3.0 就开始支持,也是在 iPhone4s 出来之前用的比较多的一种模式,但是它有个不好的地方,External Accessory 需要拿到苹果公司的 MFI 认证。

另一个框架则是本文要介绍的 CoreBluetooth ,在 iPhone4s开始支持,专门用于与 BLE 设备通讯(因为它的 API 都是基于 BLE 的)。这个不需要MFI,并且现在很多蓝牙设备都支持 4.0,所以也是在 iOS 比较推荐的一种开发方法。

这是最蛋疼的模块了,硬件方面我狗屁不通,什么通道啊啥的,完全不懂啊有木有,现在只知道通过FF01通道,可以写数据。

蓝牙模块用的 MBTV4,蓝牙 4.0 的。因为上面提到,正常情况下苹果只支持蓝牙 4.0 的模块。

蓝牙到现在其实还不算明白,简单了解下,有一个中央和周边的概念,如果用 CoreBluretooth 框架,步骤就是,创建中央管理器,扫描外设、连接外设、扫描可用的服务和特征、再去做交互。