4 Star 0 Fork 15

OpenHarmony-SIG / FastBle

加入 Gitee
与超过 1000 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

FastBle

简介

FastBle是一个处理蓝牙BLE设备的库,可以对蓝牙BLE设备进行过滤,扫描,连接,读取,写入等。

gif

下载安装

npm install @ohos/fastble --save

OpenHarmony npm环境配置等更多内容,请参考 如何安装OpenHarmony npm包

使用说明

  1. 初始化
BleManager.getInstance().init();
  1. 初始化配置
BleManager.getInstance()
            .enableLog(true)
            .setReConnectCount(1, 5000)
            .setConnectOverTime(20000)
            .setOperateTimeout(5000);
  1. 配置扫描规则
let scanRuleConfig: BleScanRuleConfig = new BleScanRuleConfig.Builder()
              .setServiceUuids(serviceUuids)      // 只扫描指定的服务的设备,可选
              .setDeviceName(true, names)         // 只扫描指定广播名的设备,可选
              .setDeviceMac(mac)                  // 只扫描指定mac的设备,可选
              .setAutoConnect(isAutoConnect)      // 连接时的autoConnect参数,可选,默认false
              .setScanTimeOut(10000)              // 扫描超时时间,可选,默认10秒
              .build();
BleManager.getInstance().initScanRule(scanRuleConfig);
  1. 扫描设备
BleManager.getInstance().scan(new class extends BleScanCallback {
    @Override
    onScanStarted(success: boolean): void {
        console.info("onScanStarted");
        _this.clearScanDevice();
        _this.is_loading = true;
        _this.loading_rotate = 360;
        _this.btn_scan_text = $r('app.string.stop_scan');
        _this.connectedDevices = BleManager.getInstance().getAllConnectedDevice();
    }
    
    @Override
    onLeScan(bleDevice: BleDevice): void {
        console.info("onLeScan");
    }
    
    @Override
    onScanning(bleDevice: BleDevice): void {
        console.info("onScanning");
        ArrayHelper.add(_this.bleDeviceList, bleDevice);
    }
    
    @Override
    onScanFinished(scanResultList: Array<BleDevice>): void {
        console.info("onScanFinished");
        _this.is_loading = false;
        _this.loading_rotate = 0;
        _this.btn_scan_text = $r('app.string.start_scan');
        _this.connectedDevices = BleManager.getInstance().getAllConnectedDevice();
    }
})
  1. 连接设备
BleManager.getInstance().connect(bleDevice, new class extends BleGattCallback {
    public onStartConnect(): void {
        _this.progressDialogCtrl.open();
    }
    
    public onConnectFail(bleDevice: BleDevice, exception: BleException): void {
        _this.progressDialogCtrl.close();
    }
    
    public onConnectSuccess(bleDevice: BleDevice, gatt: bluetooth.GattClientDevice, status: number): void {
        _this.progressDialogCtrl.close();
    }
    
    public onDisConnected(isActiveDisConnected: boolean, device: BleDevice, gatt: bluetooth.GattClientDevice, status: number): void {
        _this.progressDialogCtrl.close();
    }
});
  1. 取消扫描
BleManager.getInstance().cancelScan();
  1. 读数据
BleManager.getInstance().read(
    this.device,
    this.characteristic.serviceUuid,
    this.characteristic.characteristicUuid,
    new class extends BleReadCallback {
    
        public onReadSuccess(data: Uint8Array): void {
            setTimeout(()=> {
                _this.appendDataText(HexUtil.formatHexString(data, true));
            });
        }
    
        public onReadFailure(exception: BleException): void {
            setTimeout(()=> {
                _this.appendDataText(exception.toString());
            });
        }
    });
  1. 写数据
BleManager.getInstance().write(
    this.device,
    this.characteristic.serviceUuid,
    this.characteristic.characteristicUuid,
    HexUtil.hexStringToBytes(hex),
    true,
    true,
    0,
    new class extends BleWriteCallback {
    
        public onWriteSuccess(current: number, total: number, justWrite: Uint8Array): void {
            setTimeout(()=> {
                _this.appendDataText("write success, current: " + current
                        + " total: " + total
                        + " justWrite: " + HexUtil.formatHexString(justWrite, true));
            });
        }
    
        public onWriteFailure(exception: BleException): void {
            setTimeout(()=> {
                _this.appendDataText(exception.toString());
            });
        }
    });

接口说明

  1. 获取实例 public static getInstance(): BleManager;
  2. 配置扫描规则 public initScanRule(config: BleScanRuleConfig)
  3. 扫描设备 public scan(callback: BleScanCallback)
  4. 取消扫描 public cancelScan()
  5. 连接设备 public connect(device: BleDevice | string, bleGattCallback: BleGattCallback)
  6. 判断设备是否连接 public isConnected(device: BleDevice | string): boolean
  7. 断开连接 public disconnect(bleDevice: BleDevice)
  8. 读数据 public read(bleDevice: BleDevice, uuid_service: string, uuid_read: string, callback: BleReadCallback)
  9. 写数据 public write(bleDevice: BleDevice, uuid_service: string, uuid_write: string, data: Uint8Array, split: boolean=true, sendNextWhenLastSuccess: boolean=true, intervalBetweenTwoPackage: number=0, callback: BleWriteCallback)

约束与限制

  • DevEco Studio 3.1Beta1版本。
  • OpenHarmony SDK版本:API version 9版本。

目录结构

|---- FastBle
|     |---- entry  # 示例代码文件夹
|     |---- wxFastBle  # fastble库文件夹
|	    |----src
          |----main
              |----ets
                  |----bluetooth 核心逻辑
                  |----callback #回调处理
                  |----exception #异常事件处理
                  |----scan #蓝牙扫描实现
                  |----data #数据处理实现
                  |----utils #工具类
                  |----BleManager.ets #蓝牙连接管理
|           |---- index.ets  # 对外接口
|     |---- README.md  # 安装使用方法                    

贡献代码

使用过程中发现任何问题都可以提 Issue 给我们,当然,我们也非常欢迎你给我们发 PR

开源协议

本项目基于 Apache License 2.0 ,请自由地享受和参与开源。

简介

暂无描述 展开 收起
TypeScript 等 2 种语言
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/openharmony-sig/FastBle.git
git@gitee.com:openharmony-sig/FastBle.git
openharmony-sig
FastBle
FastBle
master

搜索帮助