BLE服务是否能够在外设和服务器之间实现双向写入?
创始人
2024-12-22 13:30:24
0次

是的,BLE服务可以实现外设和服务器之间的双向写入。在设置BLE服务时,设置相应的属性即可实现双向写入。

以下是在Android设备上实现双向写入的示例代码:

在外设端:

//创建BluetoothGattCharacteristic对象,同时设置读写属性和回调函数 BluetoothGattCharacteristic myReadWriteCharacteristic = new BluetoothGattCharacteristic(UUID.fromString("your_readwrite_char_uuid"), BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_WRITE, BluetoothGattCharacteristic.PERMISSION_READ | BluetoothGattCharacteristic.PERMISSION_WRITE);

//添加Characteristic到Service中 BluetoothGattService myService = new BluetoothGattService(UUID.fromString("your_service_uuid"), BluetoothGattService.SERVICE_TYPE_PRIMARY); myService.addCharacteristic(myReadWriteCharacteristic);

//启动peripheral的BLE advertisement bluetoothLeAdvertiser = bluetoothAdapter.getBluetoothLeAdvertiser(); AdvertiseSettings settings = new AdvertiseSettings.Builder().setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED).setConnectable(true).setTimeout(0).setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH).build(); AdvertiseData data = new AdvertiseData.Builder().setIncludeTxPowerLevel(true).setIncludeDeviceName(true).build(); bluetoothLeAdvertiser.startAdvertising(settings, data, advertiseCallback);

//在Peripheral端的回调函数中处理双向写入 @Override public void onCharacteristicWriteRequest(BluetoothDevice device, int requestId, BluetoothGattCharacteristic characteristic, boolean preparedWrite, boolean responseNeeded, int offset, byte[] value) { if (characteristic.getUuid().equals(UUID.fromString("your_readwrite_char_uuid"))) { //获取写入的数据 String data = new String(value); Log.d(TAG, "onCharacteristicWriteRequest: data written - " + data);

    //处理写入的数据
    //此处可以回复写入状态给Central端,如果responseNeeded为true
    if (responseNeeded) {
        bluetoothGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, offset, value);
    }
}

}

在服务器端:

//连接到Peripheral端 bluetoothGatt = bluetoothDevice.connectGatt(this, false, gattCallback);

//获取Peripheral端的Service和Characteristic BluetoothGattService myService = bluetoothGatt.getService(UUID.fromString("your_service_uuid")); BluetoothGattCharacteristic myReadWriteCharacteristic = myService.getCharacteristic(UUID.fromString("your_readwrite_char_uuid"));

//写入数据到Peripheral端的Characteristic byte[] data = "Hello Peripheral!".getBytes(); myReadWriteCharacteristic.setValue(data); bluetoothGatt.writeCharacteristic(myReadWriteCharacteristic);

//在Central端的回调函数中处理Peripheral端的回复

相关内容

热门资讯

攻略讲解,德扑之星辅助作弊挂,... 攻略讲解,德扑之星辅助作弊挂,AApoker开挂破解窍要(本来真的有辅助器)AI 是一款可以让一直输...
总算明白!,wepoker透视... 总算明白!,wepoker透视辅助挂有游戏亮点,菠萝智星德州是如何开挂的窍门(先前存在有透视)AI ...
攻略讲解,wepoker辅助器... 攻略讲解,wepoker辅助器免费下载,菠萝智星德州究竟有没有挂窍要(起初真的有辅助器)是一款可以让...
分享给玩家,wepoker作弊... 您好:wepoker作弊软件是不是真的这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会...
重大通报,德州辅助nzt有用吗... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
攻略讲解,wepoker线上发... 您好:wepoker线上发牌的规律这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现...
每日必备,wepoker线上发... 每日必备,wepoker线上发牌的规律,德扑之星到底有挂吗指南书(先前是真的有开挂)是一款可以让一直...
玩家必看科普!,微扑克辅助器有... 您好,微扑克辅助器有用吗这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家...
查到实测,WePoKer有没有... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
实用技巧,德扑之星能不能透视,... 实用技巧,德扑之星能不能透视,WOK有没有透视挂举措(往昔是有透视挂)是一款可以让一直输的玩家,快速...