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
相关产品推荐
相关产品推荐

