http://blog.csdn.net/chenli522/article/details/17001823

转自:http://blog.csdn.net/chenli522/article/details/17001823


//

//  bleCentralManager.m

//  MonitoringCenter

//

//  Created by David ding on 13-1-10.

//

//


#import "bleCentralManager.h"

#

@implementation bleCentralManager


#pragma mark -

#pragma mark Init

/******************************************************/

//          类初始化                                   //

/******************************************************/

// 初始化蓝牙

-(id)init{

    self = [super init];

    if (self) {

        _activeCentralManager = [[CBCentralManager allocinitWithDelegate:(id<CBCentralManagerDelegate>)self queue:dispatch_get_main_queue()];

        [self initProperty];

    }

    return self;

}


-(void)initProperty{

        _blePeripheralArray = [[NSMutableArray alloc]init];

}


#pragma mark -

#pragma mark Scanning

/****************************************************************************/

/*   Scanning                                    */

/****************************************************************************/

// UUID进行扫描

-(void)startScanning{

NSArray *uuidArray = [NSArray arrayWithObjects:[CBUUIDUUIDWithString:kConnectedServiceUUID], nil];

    // CBCentralManagerScanOptionAllowDuplicatesKey | CBConnectPeripheralOptionNotifyOnConnectionKey | CBConnectPeripheralOptionNotifyOnDisconnectionKey | CBConnectPeripheralOptionNotifyOnNotificationKey

NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumbernumberWithBool:NOforKey:CBCentralManagerScanOptionAllowDuplicatesKey];

[_activeCentralManager scanForPeripheralsWithServices:uuidArrayoptions:options];

}


// 停止扫描

-(void)stopScanning{

[_activeCentralManager stopScan];

}


// 扫缪复位

-(void)resetScanning{

    [self stopScanning];

    [self startScanning];

}


#pragma mark -

#pragma mark Connection/Disconnection

/****************************************************************************/

/* Connection/Disconnection                            */

/****************************************************************************/

// 开始连接

-(void)connectPeripheral:(CBPeripheral*)peripheral

{

if (![peripheral isConnected]){

        // 连接设备 

        [_activeCentralManager connectPeripheral:peripheral options:nil];

}

    else{

        // 检测已连接Peripherals

        float version = [[[UIDevice currentDevicesystemVersion]floatValue];

        if (version >= 6.0){

            [_activeCentralManager retrieveConnectedPeripherals];

        }

    }

}


// 断开连接

-(void)disconnectPeripheral:(CBPeripheral*)peripheral

{

    // 主动断开

    [_activeCentralManager cancelPeripheralConnection:peripheral];

    [self resetScanning];

}


#pragma mark -

#pragma mark CBCentralManager    // delegate methods

/****************************************************************************/

/* CBCentralManager*/

/****************************************************************************/

// 中心设备状态更新

-(void)centralManagerDidUpdateState:(CBCentralManager *)central

{

    //activeCentralManager = central;

    if ([_activeCentralManager isEqual:central]) {

        switch ([central state]){

                // 掉电状态

            case CBCentralManagerStatePoweredOff:

            {

                // 更新状态

                _currentCentralManagerState =bleCentralDelegateStateCentralManagerPoweredOff;

                nCentralStateChange

                [self resetScanning];

                NSLog(@"CBCentralManagerStatePoweredOff\n");

                break;

            }

                

                // 未经授权的状态

            case CBCentralManagerStateUnauthorized:

            {

                /* Tell user the app is not allowed. */

                // 更新状态

                _currentCentralManagerState =bleCentralDelegateStateCentralManagerUnauthorized;

                nCentralStateChange

                [self resetScanning];

                NSLog(@"CBCentralManagerStateUnauthorized\n");

                break;

            }

                

                // 未知状态

            case CBCentralManagerStateUnknown:

            {

                /* Bad news, let's wait for another event. */

                // 更新状态

                _currentCentralManagerState =bleCentralDelegateStateCentralManagerUnknown;

                nCentralStateChange

                [self resetScanning];

                NSLog(@"CBCentralManagerStateUnknown\n");

                break;

            }

                

            case CBCentralManagerStateUnsupported:

            {

                // 更新状态

                _currentCentralManagerState =bleCentralDelegateStateCentralManagerUnsupported;

                nCentralStateChange

                [self resetScanning];

                NSLog(@"CBCentralManagerStateUnsupported\n");

                break;

            }

                

                // 上电状态

            case CBCentralManagerStatePoweredOn:

            {

                // 更新状态

                _currentCentralManagerState =bleCentralDelegateStateCentralManagerPoweredOn;

                nCentralStateChange

                [self startScanning];

                NSLog(@"CBCentralManagerStatePoweredOn\n");

                break;

            }

                

                // 重置状态

            case CBCentralManagerStateResetting:

            {

                // 更新状态

                _currentCentralManagerState =bleCentralDelegateStateCentralManagerResetting;

                nCentralStateChange

                [self resetScanning];

                NSLog(@"CBCentralManagerStateResetting\n");

                break;

            }

        }

    }

}

// 中心设备连接检索到的外围设备

-(void)centralManager:(CBCentralManager *)central didRetrieveConnectedPeripherals:(NSArray *)peripherals{

    if ([_activeCentralManager isEqual:central]) {

        for (CBPeripheral *aPeripheral in peripherals){

            [central connectPeripheral:aPeripheral options:nil];

        }

        // 更新状态

        _currentCentralManagerState =bleCentralDelegateStateRetrieveConnectedPeripherals;

        nCentralStateChange

    }

}


// 中心设备扫描外围

-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary*)advertisementData RSSI:(NSNumber *)RSSI{

    if ([_activeCentralManager isEqual:central]) {

        BOOL checkout = [selfcheckPeripheralFromBlePeripheralArray:peripheral];

        if (checkout == NO) {

            // 添加到新的Peripheral

            blePeripheral *bp = [[blePeripheral alloc]init];

            bp.activePeripheral = peripheral;

            [_blePeripheralArray addObject:bp];

        }

        

        // 更新状态

        _currentCentralManagerState =bleCentralDelegateStateDiscoverPeripheral;

        nCentralStateChange

    }

}


// 中心设备连接外围设备

-(void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral{

    if ([_activeCentralManager isEqual:central]) {

        blePeripheral *bp = [selfgetBlePeripheralFromBlePeripheralArray:peripheral];

        if (bp != nil) {

            bp.activePeripheral = peripheral;

            // 如果当前设备是已连接设备开始扫描服务

            CBUUID*RecSerUUID     = [CBUUIDUUIDWithString:kReceiveDataServiceUUID];

            CBUUID  *SenSerUUID     = [CBUUIDUUIDWithString:kSendDataServiceUUID];

            NSArray*serviceArray= [NSArray arrayWithObjects:RecSerUUID, SenSerUUID, nil];

            [bp startPeripheral:peripheral DiscoverServices:serviceArray];

        }

        

        // 更新状态

        _currentCentralManagerState =bleCentralDelegateStateConnectPeripheral;

        nCentralStateChange

    }

}


// 中心设备断开连接

-(void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error{

    if ([_activeCentralManager isEqual:central]) {

    }

    // 更新状态

    NSLog(@"domain:%@\nuserInfo:%@",error.domain, error.userInfo);

    _currentCentralManagerState =bleCentralDelegateStateDisconnectPeripheral;

    nCentralStateChange

    

}


/****************************************************************************/

/* check/get peripheral                            */

/****************************************************************************/

#pragma mark 查询peripheral函数

-(BOOL)checkPeripheralFromBlePeripheralArray:(CBPeripheral *)peripheral{

    BOOL checkout = NO;

    if (_blePeripheralArray.count > 0) {

        for (NSUInteger idx=0; idx<_blePeripheralArray.count; idx++) {

            blePeripheral *bp = [_blePeripheralArray objectAtIndex:idx];

            if ([peripheral isEqual:bp.activePeripheral]) {

                checkout = YES;

                break;

            }

        }

    }

    return checkout;

}


#pragma mark 获取peripheral函数

-(blePeripheral *)getBlePeripheralFromBlePeripheralArray:(CBPeripheral*)peripheral{

    blePeripheral *abp = nil;

    if (_blePeripheralArray.count > 0) {

        for (NSUInteger idx=0; idx<_blePeripheralArray.count; idx++) {

            blePeripheral *bp = [_blePeripheralArray objectAtIndex:idx];

            if ([peripheral isEqual:bp.activePeripheral]) {

                abp = bp;

                break;

            }

        }

    }

    return abp;

}


/****************************************************************************/

/*                                  END                                     */

/****************************************************************************/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Echarts的条形图中,x轴上的值显示不完时,可以使用newline-echarts.js库来实现文字换行显示。具体的使用方法是在代码中调用newline函数,并传入option、行数(例如3)、以及'xAxis'参数。 如果需要在条形图的左半部分显示负数的数值为正数,可以按以下几个步骤修改。首先,找到xAxis[i].axisLabel,然后重写其formatter属性的值。代码如下所示: ``` xAxis: [ { type: 'value', axisLabel: { formatter: (value) => { // 负数取反,显示的就是正数了 if (value < 0) return -value; else return value; } } } ] ``` 通过这样的修改,x轴上显示为负数的刻度标签将被转换为正数显示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ECharts 统计图中的bar(条形统计)的X轴上的值的显示方法](https://blog.csdn.net/csdn_chenli/article/details/51445341)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Echarts正负条形图将x轴都设置成正数](https://blog.csdn.net/aSmallProgrammer/article/details/103308298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值