当前位置 主页 > 网站技术 > 代码类 >

    IOS Ble蓝牙开发实现方法

    栏目:代码类 时间:2019-12-25 18:10

    本篇博文阐述如何开发Ble蓝牙。在蓝牙中的一些常见服务,扫描,以及链接;

    主蓝牙类文件.h 主蓝牙类文件.m UUID文件 蓝牙列表展示的文件

    一:引入Ble蓝牙的框架<CoreBluetooth/CoreBluetooth.h>

    BuleHelp.h

    #import <Foundation/Foundation.h>
    //导入蓝牙框架
    #import <CoreBluetooth/CoreBluetooth.h>
    #import "DeviceModel.h"
    #import "Constants.h"
    #import "CommonUserDefaults.h"
    #import "CommonUtil.h"
    #import "TempDB.h"
    
    #define COMMAND_PACKET_MIN_SIZE 7
    
    @interface BlueHelp : NSObject
    
    //蓝牙的设备搜索显示在列表中
    @property (nonatomic, strong) NSMutableArray <CBPeripheral*>*periperals;
    
    //连接peripheral
    @property(nonatomic,strong) CBPeripheral *peripheral;
    
    //连接peripheral
    @property(nonatomic,strong) CBPeripheral *selectperipheral;
    
    //中心管理者
    @property (nonatomic, strong) CBCentralManager *centerManager;
    
    @property (nonatomic,strong) DeviceModel *deviceModel;
    
    //设备列表
    @property (nonatomic,strong) NSMutableArray *deviceList;
    
    @property (nonatomic,strong) NSMutableArray *commandArray;
    //是否进行ota升级
    @property (nonatomic) BOOL isOta;
    
    @property (nonatomic) BOOL isWritePacketDataSuccess;
    
    @property (strong,nonatomic) NSString * checkSumType;
    
    /*!
     * @property isApplicationValid
     *
     * @discussion flag used to check whether the application writing is success
     *
     */
    @property (nonatomic) BOOL isApplicationValid;
    /*!
     * @property checkSum
     *
     * @discussion checkSum received from the device for writing a single row
     *
     */
    @property (assign) uint8_t checkSum;
    
    /*!
     * @property startRowNumber
     *
     * @discussion Device flash start row number
     *
     */
    @property (nonatomic) int startRowNumber;
    
    /*!
     * @property endRowNumber
     *
     * @discussion Device flash end row number
     *
     */
    @property (nonatomic) int endRowNumber;
    
    /*!
     * @property siliconIDString
     *
     * @discussion siliconID from the device response
     *
     */
    @property (strong,nonatomic) NSString *siliconIDString;
    /*!
     * @property siliconRevString
     *
     * @discussion silicon rev from the device response
     *
     */
    @property (strong,nonatomic) NSString *siliconRevString;
    
    
    //是否发送数据
    @property (nonatomic) BOOL isSendData;
    
    @property (strong,nonatomic) CommonUtil *commonUtil;
    
    @property (strong,nonatomic) TempDB *tempDB;
    
    @property (strong,nonatomic) NSDate *currentDate;
    
    //时间格式化
    @property(strong,nonatomic) NSDateFormatter *dateformatter;
    
    @property(strong,nonatomic) NSString *deviceName;
    
    //@property (nonatomic,strong) NSUserDefaults *userDefaults;
    
    @property (nonatomic,strong) CommonUserDefaults *userDefaults;
    //发送温度数据
    @property (nonatomic,strong) CBCharacteristic *sendtempcharateristic;
    //发送OTA数据
    @property (nonatomic,strong) CBCharacteristic *sendotacharateristic;
    //高/低温度数据
    //@property (nonatomic,strong) CBCharacteristic *sendhighalarmcharateristic;
    //
    //@property (nonatomic,strong) CBCharacteristic *sendlowalarmcharateristic;
    //ota
    @property (nonatomic,strong) CBCharacteristic *senddfucharateristic;
    //发送字符串'CR'清除机子上的最大值(3个字节)
    @property (nonatomic,strong) CBCharacteristic *senddcrstrateristic;
    //发送字符串'PD'机子关机(3个字节)
    @property (nonatomic,strong) CBCharacteristic *senddoutstrateristic;
    //静音
    @property (strong,nonatomic) CBCharacteristic *sendmutealarmcharateristic;
    //calset
    @property(strong,nonatomic) CBCharacteristic *sendcalsetcharateristic;
    //intervaltime
    @property(strong,nonatomic) CBCharacteristic *sendintervaltimecharateristic;
    //alarmswitch
    @property(strong,nonatomic) CBCharacteristic *sendalarmswitchcharateristic;
    //tempunit
    @property(strong,nonatomic) CBCharacteristic *sendtempunitcharateristic;
    
    @property(strong,nonatomic) CBCharacteristic *sendlowalarmswitchcharateristic;
    
    ///<===============方法区块=======================>
    + (id)sharedManager;
    
    -(NSMutableArray *)getDeviceList;
    
    -(NSMutableArray *)getPeriperalList;
    
    -(void)startScan;
    //连接蓝牙
    -(void)contentBlue:(int) row;
    //断开蓝牙
    -(void)disContentBle;
    
    //断开ota的蓝牙连接
    -(void)disContentOtaBle;
    
    //温度符号
    -(void)writeTempUnit:(NSString *)value;
    
    //写入报警开关
    -(void)writeAlarmSwitch:(NSString *)value;
    
    
    //写入mute alarm
    -(void)writeMuteAlarm:(NSString *)value;
    
    //写入CR CLERVULE
    -(void)writeClearCR:(NSString *)value;
    
    
    //写入interval time
    -(void)writeIntervalTime:(NSString *)value;
    
    //写入cal set
    -(void)writeCalSet:(NSString *)value;
    
    //写入设备的开关按钮
    -(void)writeBluePD:(NSString *)value;
    
    //写入低温报警
    //-(void)writeLowAlarm:(NSString *)value;
    //
    ////写入高温报警
    //-(void)writeHighAlarm:(NSString *)value;
    
    //OTA固件升级 又称为DFU
    -(void)writeUpdateOTA:(NSString*)value;
    
    -(void)writeBlueOTA:(NSString *)value;
    
    -(void)wirteBlueOTAData:(NSData *)value;
    
    -(void)writeLowAlarmSwitch:(NSString *)value;
    
    -(void) discoverCharacteristicsWithCompletionHandler:(void (^) (BOOL success, NSError *error)) handler;
    
    -(void)updateValueForCharacteristicWithCompletionHandler:(void (^) (BOOL success,id command,NSError *error)) handler;
    
    -(void) stopUpdate;
    
    -(void) setCheckSumType:(NSString *) type;
    
    -(NSData *) createCommandPacketWithCommand:(uint8_t)commandCode dataLength:(unsigned short)dataLength data:(NSDictionary *)packetDataDictionary;
    
    -(void) writeValueToCharacteristicWithData:(NSData *)data bootLoaderCommandCode:(unsigned short)commandCode;
    
    /*
     * 停止扫描
     */
    -(void)stopScan;
    
    //是否是第一次连接设备
    @property(assign,nonatomic) BOOL isconnected;
    
    //当前的时间
    @property(nonatomic,assign) long currentTime;
    
    @property(nonatomic,strong) NSString *macAddre;
    
    @property(nonatomic,strong) NSString *macName;
    
    -(void)disMainOtaBle;
    
    @end