初始化
This commit is contained in:
420
pages/HostUpgrade/HostUpgrade.js
Normal file
420
pages/HostUpgrade/HostUpgrade.js
Normal file
@@ -0,0 +1,420 @@
|
||||
|
||||
|
||||
const app = getApp()
|
||||
function inArray(arr, key, val) {
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
if (arr[i][key] === val) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// ArrayBuffer转16进度字符串示例
|
||||
function ab2hex(buffer) {
|
||||
var hexArr = Array.prototype.map.call(
|
||||
new Uint8Array(buffer),
|
||||
function (bit) {
|
||||
return ('00' + bit.toString(16)).slice(-2)
|
||||
}
|
||||
)
|
||||
return hexArr.join('');
|
||||
}
|
||||
|
||||
|
||||
|
||||
Component({
|
||||
properties: {
|
||||
paramA: Number,
|
||||
paramB: String,
|
||||
// 定义属性,属性值可以是任意类型
|
||||
myProperty: {
|
||||
type: Array,
|
||||
value: {}
|
||||
}
|
||||
},
|
||||
data: {
|
||||
devices: [],
|
||||
connected: false,
|
||||
chs: [],
|
||||
TimerNumber:0,
|
||||
myArray: [],
|
||||
index: null,
|
||||
firmwareName:"这里显示文件名称",
|
||||
devicedisplay:0,
|
||||
dat_filename:"",
|
||||
dat_filePath:"",
|
||||
hex_filename:"",
|
||||
hex_filePath:"",
|
||||
},
|
||||
|
||||
methods: {
|
||||
onLoad: function() {
|
||||
this.data.paramA // 页面参数 paramA 的值
|
||||
this.data.paramB // 页面参数 paramB 的值
|
||||
|
||||
},
|
||||
bindPickerChange: function(e) {
|
||||
console.log('picker发送选择改变,携带值为', e.detail.value)
|
||||
this.setData({
|
||||
index: e.detail.value
|
||||
})
|
||||
},
|
||||
// 初始化蓝牙
|
||||
openBluetoothAdapter() {
|
||||
wx.openBluetoothAdapter({
|
||||
success: (res) => {
|
||||
console.log('openBluetoothAdapter success', res)
|
||||
this.startBluetoothDevicesDiscovery()
|
||||
},
|
||||
fail: (res) => {
|
||||
if (res.errCode === 10001) {
|
||||
wx.onBluetoothAdapterStateChange(function (res) {
|
||||
console.log('onBluetoothAdapterStateChange', res)
|
||||
if (res.available) {
|
||||
this.startBluetoothDevicesDiscovery()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
var _this =this;
|
||||
let num =setTimeout(function(){
|
||||
_this.stopBluetoothDevicesDiscovery()
|
||||
},20000)
|
||||
// console.log('setTimeout'+num)
|
||||
this.setData({
|
||||
TimerNumber: num,
|
||||
})
|
||||
// console.log('setTimeout'+this.data.TimerNumber)
|
||||
},
|
||||
|
||||
|
||||
startBluetoothDevicesDiscovery() {
|
||||
console.log('startBluetoothDevicesDiscovery ')
|
||||
if (this._discoveryStarted) {
|
||||
return
|
||||
}
|
||||
this._discoveryStarted = true
|
||||
wx.startBluetoothDevicesDiscovery({
|
||||
allowDuplicatesKey: true,
|
||||
success: (res) => {
|
||||
console.log('startBluetoothDevicesDiscovery success', res)
|
||||
this.onBluetoothDeviceFound()
|
||||
},
|
||||
fail(res) {
|
||||
console.error('startBluetoothDevicesDiscovery', res)
|
||||
}
|
||||
})
|
||||
},
|
||||
closeBLEConnection() {
|
||||
wx.closeBLEConnection({
|
||||
deviceId: this.data.deviceId
|
||||
})
|
||||
this.setData({
|
||||
connected: false,
|
||||
chs: [],
|
||||
canWrite: false,
|
||||
devicedisplay:-1
|
||||
})
|
||||
},
|
||||
onBluetoothDeviceFound() {
|
||||
// console.log('onBluetoothDeviceFound ')
|
||||
wx.onBluetoothDeviceFound((res) => {
|
||||
// console.log('onBluetoothDeviceFound ',res)
|
||||
res.devices.forEach(device => {
|
||||
if (!device.name && !device.localName) {
|
||||
return
|
||||
}
|
||||
const foundDevices = this.data.devices
|
||||
const idx = inArray(foundDevices, 'deviceId', device.deviceId)
|
||||
const data = {}
|
||||
if (idx === -1) {
|
||||
data[`devices[${foundDevices.length}]`] = device
|
||||
} else {
|
||||
data[`devices[${idx}]`] = device
|
||||
}
|
||||
this.setData(data)
|
||||
})
|
||||
})
|
||||
},
|
||||
getBluetoothAdapterState() {
|
||||
wx.getBluetoothAdapterState({
|
||||
success: (res) => {
|
||||
console.log('getBluetoothAdapterState', res)
|
||||
if (res.discovering) {
|
||||
this.onBluetoothDeviceFound()
|
||||
} else if (res.available) {
|
||||
this.startBluetoothDevicesDiscovery()
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
startBluetoothDevicesDiscovery() {
|
||||
console.log('startBluetoothDevicesDiscovery ')
|
||||
if (this._discoveryStarted) {
|
||||
return
|
||||
}
|
||||
this._discoveryStarted = true
|
||||
wx.startBluetoothDevicesDiscovery({
|
||||
allowDuplicatesKey: true,
|
||||
success: (res) => {
|
||||
console.log('startBluetoothDevicesDiscovery success', res)
|
||||
this.onBluetoothDeviceFound()
|
||||
},
|
||||
fail(res) {
|
||||
console.error('startBluetoothDevicesDiscovery', res)
|
||||
}
|
||||
})
|
||||
},
|
||||
stopBluetoothDevicesDiscovery() {
|
||||
// console.log('setTimeout'+this.data.TimerNumber)
|
||||
|
||||
wx.stopBluetoothDevicesDiscovery()
|
||||
if (this.data.TimerNumber!=0){
|
||||
// console.log('timeoutID'+ this.data.TimerNumber)
|
||||
clearTimeout(this.data.TimerNumber)
|
||||
}
|
||||
|
||||
},
|
||||
createBLEConnection(e) {
|
||||
|
||||
const ds = e.currentTarget.dataset
|
||||
const deviceId = ds.deviceId
|
||||
const name = ds.name
|
||||
|
||||
console.log('createBLEConnection:'+deviceId)
|
||||
wx.createBLEConnection({
|
||||
deviceId,
|
||||
success: (res) => {
|
||||
this.setData({
|
||||
connected: true,
|
||||
name,
|
||||
deviceId,
|
||||
devicedisplay:deviceId,
|
||||
})
|
||||
console.log('kkkkk:'+this.devicedisplay)
|
||||
this.getBLEDeviceServices(deviceId)
|
||||
},
|
||||
fail: (res) => {
|
||||
console.error('createBLEConnection', res.errMsg)
|
||||
}
|
||||
}
|
||||
)
|
||||
this.stopBluetoothDevicesDiscovery()
|
||||
},
|
||||
|
||||
getBLEDeviceServices(deviceId) {
|
||||
wx.getBLEDeviceServices({
|
||||
deviceId,
|
||||
success: (res) => {
|
||||
console.log('getBLEDeviceServices', res.characteristics)
|
||||
for (let i = 0; i < res.services.length; i++) {
|
||||
if (res.services[i].isPrimary) {
|
||||
this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
getBLEDeviceCharacteristics(deviceId, serviceId) {
|
||||
wx.getBLEDeviceCharacteristics({
|
||||
deviceId,
|
||||
serviceId,
|
||||
success: (res) => {
|
||||
console.log('getBLEDeviceCharacteristics success', res.characteristics)
|
||||
for (let i = 0; i < res.characteristics.length; i++) {
|
||||
let item = res.characteristics[i]
|
||||
|
||||
if (item.properties.read) {
|
||||
console.log('read characteristicId:'+item.uuid, res.errMsg)
|
||||
wx.readBLECharacteristicValue({
|
||||
deviceId,
|
||||
serviceId,
|
||||
characteristicId: item.uuid,
|
||||
})
|
||||
}
|
||||
if (item.properties.write && item.properties.notify) {
|
||||
this.setData({
|
||||
canWrite: true
|
||||
})
|
||||
this._deviceId = deviceId
|
||||
this._serviceId = serviceId
|
||||
this._characteristicId = item.uuid
|
||||
console.log('Write _characteristicId:'+item.uuid, res.errMsg)
|
||||
|
||||
// this.writeBLECharacteristicValue('11223344AABBCC')
|
||||
}
|
||||
if (item.properties.notify || item.properties.indicate) {
|
||||
console.log('notify OR indicate characteristicId:'+item.uuid, res.errMsg)
|
||||
wx.notifyBLECharacteristicValueChange({
|
||||
deviceId,
|
||||
serviceId,
|
||||
characteristicId: item.uuid,
|
||||
state: true,
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
fail(res) {
|
||||
console.error('getBLEDeviceCharacteristics', res)
|
||||
}
|
||||
})
|
||||
// 操作之前先监听,保证第一时间获取数据
|
||||
wx.onBLECharacteristicValueChange((characteristic) => {
|
||||
const idx = inArray(this.data.chs, 'uuid', characteristic.characteristicId)
|
||||
const data = {}
|
||||
if (idx === -1) {
|
||||
data[`chs[${this.data.chs.length}]`] = {
|
||||
uuid: characteristic.characteristicId,
|
||||
value: ab2hex(characteristic.value)
|
||||
}
|
||||
} else {
|
||||
data[`chs[${idx}]`] = {
|
||||
uuid: characteristic.characteristicId,
|
||||
value: ab2hex(characteristic.value)
|
||||
}
|
||||
}
|
||||
// data[`chs[${this.data.chs.length}]`] = {
|
||||
// uuid: characteristic.characteristicId,
|
||||
// value: ab2hex(characteristic.value)
|
||||
// }
|
||||
this.setData(data)
|
||||
})
|
||||
},
|
||||
|
||||
stringToBytes : function(strtxt) {
|
||||
return new TextEncoder().encode(strtxt)
|
||||
},
|
||||
stringToByteArray:function (str) {
|
||||
console.log('str'+str)
|
||||
var array = new Uint8Array(str.length);
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
array[i] = str.charCodeAt(i);
|
||||
console.log('array[i]'+array[i])
|
||||
}
|
||||
return array;
|
||||
} ,
|
||||
chooseMessageFile(e){
|
||||
const ds = e.currentTarget.dataset;
|
||||
const name = ds.name;
|
||||
const _this =this
|
||||
let array = [name]
|
||||
|
||||
|
||||
console.log(_this.properties.paramA)
|
||||
console.log(app.globalData.roomIDName.length)
|
||||
console.log(_this.data.myArray.length)
|
||||
console.log(_this.properties.myProperty.length)
|
||||
|
||||
|
||||
wx.chooseMessageFile({
|
||||
count: 1,
|
||||
type:'file',
|
||||
extension:array,
|
||||
success(res){
|
||||
console.log(res)
|
||||
if (name === '.hex')
|
||||
{
|
||||
console.log('chooseMessageFile True HEX:'+res.tempFiles[0].path)
|
||||
_this.setData({
|
||||
hex_filename:res.tempFiles[0].name,
|
||||
hex_filePath:res.tempFiles[0].path,
|
||||
|
||||
})
|
||||
}
|
||||
else if (name === '.dat') {
|
||||
console.log('chooseMessageFile True DAT:'+res.tempFiles[0].path)
|
||||
_this.setData({
|
||||
dat_filename:res.tempFiles[0].name,
|
||||
dat_filePath:res.tempFiles[0].path,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
},
|
||||
fail (res) {
|
||||
console.log('Failed to get file', res.errMsg)
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
writeBLECharacteristicValue(sendstr) {
|
||||
// 向蓝牙设备发送一个0x00的16进制数据
|
||||
|
||||
console.log(sendstr)
|
||||
let datebuffer =this.stringToByteArray(sendstr);
|
||||
// console.log('buffer Size:'+buffer.length)
|
||||
|
||||
let buffer = datebuffer.buffer
|
||||
console.log('datebuffer'+datebuffer)
|
||||
// let dataView = new Uint8Array(buffer)
|
||||
// dataView.a
|
||||
console.log('buffer.leng'+buffer.byteLength)
|
||||
console.log('buffer.leng'+buffer)
|
||||
// dataView.setUint8(1,11)
|
||||
// dataView.setUint8(2,16)
|
||||
// dataView.setUint8(3,13)
|
||||
// dataView.setUint8(4,18)
|
||||
// dataView.setUint8(5,12)
|
||||
// dataView.setUint8(6,24)
|
||||
// dataView.setUint8(7,54)
|
||||
// dataView.setUint8(8,34)
|
||||
|
||||
console.log('UUID :'+this._characteristicId)
|
||||
|
||||
wx.writeBLECharacteristicValue({
|
||||
deviceId: this._deviceId,
|
||||
serviceId: this._serviceId,
|
||||
characteristicId: this._characteristicId,
|
||||
value: buffer,
|
||||
success (res) {
|
||||
console.log('writeBLECharacteristicValue success', res.errMsg)
|
||||
},
|
||||
fail (res) {
|
||||
console.log('writeBLECharacteristicValue fail', res.errMsg)
|
||||
}
|
||||
})
|
||||
},
|
||||
writeBLECharacteristicValue1(){
|
||||
this.writeBLECharacteristicValue('1233456789a')
|
||||
},
|
||||
|
||||
closeBluetoothAdapter() {
|
||||
wx.closeBluetoothAdapter()
|
||||
this._discoveryStarted = false
|
||||
},
|
||||
|
||||
|
||||
|
||||
},
|
||||
|
||||
|
||||
|
||||
ready: function () {
|
||||
|
||||
console.log(app.globalData.roomIDName)
|
||||
this.setData({
|
||||
myArray:app.globalData.roomIDName
|
||||
})
|
||||
console.log( this.data.myArray)
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 蓝牙操作
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
Reference in New Issue
Block a user