//CRC蓝牙校验
var crc16 = function(buffer) {
var crc = 0x0000;
var odd;
for (var i = 0; i < buffer.length; i++) {
crc ^= (buffer[i] << 8)
for (var j = 0; j < 8; j++) {
odd = crc & 0x8000;
crc = crc << 1;
if (odd) {
crc = crc ^ 0x1021
}
}
}
var hi = ((crc & 0xFF00) >> 8); //高位置
var lo = (crc & 0x00FF); //低位置
var crcArr = []
crcArr.push(hi)
crcArr.push(lo)
crc &= 0xFFFF
return crcToString(crcArr, true)
};
//转为大写String
function crcToString(arr, isReverse) {
if (typeof isReverse == 'undefined') {
isReverse = true;
}
var hi = arr[0],
lo = arr[1];
return padLeft((isReverse ? hi + lo * 0x100 : hi * 0x100 + lo).toString(16).toUpperCase(), 4, '0');
};
var padLeft = function(s, w, pc) {
if (pc == undefined) {
pc = '0';
}
for (var i = 0, c = w - s.length; i < c; i++) {
s = pc + s;
}
return s;
};
//十六进制字符串转字节数组
function hexString2Bytes(str) {
var pos = 0;
var len = str.length;
if (len % 2 != 0) {
return null;
}
len /= 2;
var arrBytes = new Array();
for (var i = 0; i < len; i++) {
var s = str.substr(pos, 2);
var v = parseInt(s, 16);
arrBytes.push(v);
pos += 2;
}
return arrBytes;
}
function buf2hex(buffer) {
return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('')
}
function buf2string(buffer) {
var arr = Array.prototype.map.call(new Uint8Array(buffer), x => x)
var str = ''
for (var i = 0; i < arr.length; i++) {
str += String.fromCharCode(arr[i])
}
return str
}
//字符串转ArrayBuffer
function hexStringToArrayBuffer(str) {
if (!str) {
return new ArrayBuffer(0);
}
var buffer = new ArrayBuffer(20);
let dataView = new DataView(buffer)
let ind = 0;
for (var i = 0; i < str.length; i += 2) {
let code = parseInt(str.substr(i, 2), 16)
dataView.setUint8(ind
uniapp 微信小程序蓝牙业务
最新推荐文章于 2024-07-10 10:07:07 发布
本文详细介绍了如何使用uniapp框架,结合微信小程序的蓝牙API,实现蓝牙设备的搜索、连接和数据交换功能,为物联网应用开发提供便利。
摘要由CSDN通过智能技术生成