You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic Capacitor应用中用BleClient.write向BLE设备写入20字节数据的方法

在Ionic Capacitor中向BLE设备写入指定字节数据(DataView转换方法)

你当前调用BleClient.write时传入的是字符串格式的十六进制数据,但该方法要求参数为DataView类型,需要按以下步骤转换后再发送:

步骤1:将十六进制字符串转换为Uint8Array

先把给定的十六进制字符串处理成纯十六进制字符,再拆分每两位为一个字节,转换为十进制数值组成Uint8Array:

// 原始十六进制字符串
const hexStr = '34h 01h 50h 4Fh 4Ch 49h 54h 45h 43h 00 00 00h 00h 00h 00h 00h 00h 00h 00h 00h';
// 去掉所有的"h"和空格,得到纯十六进制字符串
const cleanHex = hexStr.replace(/[h\s]/g, '');
// 拆分每两位为一组,转换为字节数组
const bytes = new Uint8Array(cleanHex.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));

步骤2:将Uint8Array转换为DataView

基于Uint8Array的缓冲区创建DataView:

const dataView = new DataView(bytes.buffer);

最终调用代码

替换原调用中的字符串参数为转换后的DataView:

BleClient.write(
  device.deviceId,
  '02366e80-cf3a-11e1-9ab4-0002a5d5c51b',
  '340a1b80-cf4b-11e1-ac36-0002a5d5c51b',
  dataView
);

关键说明

  • 处理字符串时,replace(/[h\s]/g, '')会移除所有的"h"标记和空格,确保后续能正确拆分每两位十六进制值。
  • Uint8Array是存储单字节数据的最优类型,通过它的buffer属性可以直接创建符合要求的DataView。

内容的提问来源于stack exchange,提问作者rubenSousa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:05:20