微信小程序蓝牙连接发送信息

///获取应用实例

var app = getApp()

Page({

data: {

lanya: "",

state: "",

msg: "",

sousuo: "",

status: "",

connectedDeviceId: "",//连接设备Id

devices: [],

serviceId: "",

writeCharacteristicId: "",

notifyCharacteristicId: "",

},

onLoad: function () {

var that = this;

wx.openBluetoothAdapter({

success: function (res) {

console.log(res.errMsg);

that.setData({

lanya: "初始化小程序蓝牙" + res.errMsg

});



},

fail: function (res) {

console.log(res);

that.setData({

lanya: "初始化小程序蓝牙" + res.errMsg

});

}

});

},

adapterState: function () {

//获取本机蓝牙适配器状态

var that = this;

wx.getBluetoothAdapterState({

success: function (res) {

console.log(res);

that.setData({

state: res.errMsg

});

}

});

},

selectDevices: function () {//搜索设备

var that = this;

wx.startBluetoothDevicesDiscovery({

allowDuplicatesKey: false,

success: function (res) {

//监听蓝牙适配器状态

wx.onBluetoothAdapterStateChange(function (res) {

that.setData({

sousuo: res.discovering ? "在搜索" : "未搜索",

status: res.available ? "可用" : "不可用",

});

});

setTimeout(function () {

that.getDevices();

}, 1000);



}

});

},

getDevices: function () {

//获取设备列表

var that = this;

wx.getBluetoothDevices({

success: function (res) {

that.setData({

devices: res.devices

});

//that.test(res.devices);

}

});

},

//停止搜索周边设备

stop: function () {

var that = this;

wx.stopBluetoothDevicesDiscovery({

success: function (res) {

that.setData({

sousuo: res.discovering ? "在搜索" : "未搜索",

status: res.available ? "可用" : "不可用",

});



}

})

},



test: function (devices) {

wx.onBluetoothDeviceFound(function (devices) {

console.log(devices);

function ab2hex(buffer) {

var hexArr = Array.prototype.map.call(

new Uint8Array(buffer),

function (bit) {

return ('00' + bit.toString(16)).slice(-2)

}

)

return hexArr.join('');

}

console.log('new device list has founded');

console.log(ab2hex(devices.devices[0].advertisData));



});

},

connect: function (e) {//连接蓝牙

var that = this;

wx.showModal({

title: '提示',

content: '确定连接此设备吗?',

success: function (res) {

if (res.confirm) {

console.log('用户点击确定');

var clickId = e.currentTarget.id;

wx.createBLEConnection({

// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接

deviceId: clickId,

success: function (res) {

that.setData({

connectedDeviceId: clickId

});

wx.showToast({

title: '成功',

icon: 'success',

duration: 2000

});

wx.getBLEDeviceServices({

// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接

deviceId: clickId,

success: function (res) {

console.log('device services:', res.services);

that.setData({

service: res.services[1]

});

}

});

that.getService(clickId);

setTimeout(function () {

that.getCharacteristics(clickId, that.data.serviceId);

}, 3000);

wx.onBLEConnectionStateChange(function (res) {

// 该方法回调中可以用于处理连接意外断开等异常情况

console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)

});

}, fail: function (res) {

console.log(res.errMsg);

}

});

} else if (res.cancel) {

console.log('用户点击取消')

}

}

});

},

getService: function (deviceId) {

var that = this;

wx.getBLEDeviceServices({

// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接

deviceId: deviceId,

success: function (res) {

console.log('device services:', res.services);

that.setData({

serviceId: res.services[1].uuid

});

}

});

},

getCharacteristics: function (deviceId, serviceId) {

var that = this;

wx.getBLEDeviceCharacteristics({

// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接

deviceId: deviceId,

// 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取

serviceId: serviceId,

success: function (res) {

console.log(res);

console.log('device getBLEDeviceCharacteristics:', res.characteristics);

for (var i = 0; i < res.characteristics.length; i++) {

if (res.characteristics[i].properties.write && !res.characteristics[i].properties.read &&

!res.characteristics[i].properties.notify && !res.characteristics[i].properties.indicate) {

that.setData({

writeCharacteristicId: res.characteristics[i].uuid

});

} else if (!res.characteristics[i].properties.write && !res.characteristics[i].properties.read &&

res.characteristics[i].properties.notify && !res.characteristics[i].properties.indicate) {

that.setData({

notifyCharacteristicId: res.characteristics[i].uuid

});

}

}

console.log("writeCharacteristicId=" + that.data.writeCharacteristicId);

console.log("notifyCharacteristicId=" + that.data.notifyCharacteristicId);

wx.notifyBLECharacteristicValueChange({

state: true, // 启用 notify 功能

// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接

deviceId: deviceId,

// 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取

serviceId: serviceId,

// 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取

characteristicId: that.data.notifyCharacteristicId,

success: function (res) {

console.log('notifyBLECharacteristicValueChange success', res.errMsg);

}

});

that.onBLECharacteristicValueChange();

}

});

},

writeMsg: function () {

var that = this;

let buffer = new ArrayBuffer(7);

let dataView = new DataView(buffer);

dataView.setUint8(0, 0xaa);

dataView.setUint8(1, 0x04);

dataView.setUint8(2, (1 << 7));

dataView.setUint8(3, (1 << 3 | 1));

dataView.setUint8(4, 1);

dataView.setUint8(5, 1 << 2);



// var buffer = new ArrayBuffer(7);

// buffer[0] = ;

// buffer[1] = ;

// buffer[2] = (1 << 7)

// buffer[3] = (1 << 3) | 1

// buffer[4] = 1;

// buffer[5] = 10;

console.log(buffer);

wx.writeBLECharacteristicValue({

// 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取

deviceId: that.data.connectedDeviceId,

// 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取

serviceId: that.data.serviceId,

// 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取

characteristicId: that.data.writeCharacteristicId,

// 这里的value是ArrayBuffer类型

value: buffer,

success: function (res) {

console.log('writeBLECharacteristicValue success', res.errMsg)

}

});

},

onBLECharacteristicValueChange: function () {

console.log("start change listen");

wx.onBLECharacteristicValueChange(function (res) {

console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`)

console.log(ab2hext(res.value))

});

},

closeBLEConnection: function () {

//断开蓝牙连接

var that = this;

wx.closeBLEConnection({

deviceId: that.data.connectedDeviceId,

success: function (res) {

console.log(res);

}

})



}



});

 

你可能感兴趣的:(微信)