|
@@ -65,7 +65,6 @@ Component({
|
|
|
},
|
|
|
toHandle() {
|
|
|
let aveArr = []
|
|
|
- let json = []
|
|
|
|
|
|
this.openBluetooth(()=>{
|
|
|
startBeaconDiscovery({uuids: ['FDA50693-A4E2-4FB1-AFCF-C6EB07647825']}).then((res)=>{
|
|
@@ -73,7 +72,7 @@ Component({
|
|
|
wx.onBeaconUpdate(data=>{
|
|
|
|
|
|
//打印最新收集到的信号
|
|
|
- // console.log('beacon',data.beacons)
|
|
|
+
|
|
|
// 需要收集十组数据,索引号最大的组是最旧的
|
|
|
if (aveArr.length > AveLength) {
|
|
|
// aveArr[0] = data.beacons
|
|
@@ -90,7 +89,7 @@ Component({
|
|
|
all = all.concat(item)
|
|
|
});
|
|
|
// classfiy = {10003:[{},{},···],10002:[{},{},···],10001:[{},{},···]}
|
|
|
- // console.log('all',all)
|
|
|
+
|
|
|
let classfiy = BeaconUtils.classification(all,'major')
|
|
|
let accuracyList = {} // 存放处理后的accuary
|
|
|
// let dataArr = [] //记录各信标的信号收集数目
|
|
@@ -99,22 +98,22 @@ Component({
|
|
|
let arr = classfiy[key].map(item=>{
|
|
|
return item.rssi
|
|
|
})
|
|
|
- // console.log(key,'rssi',arr)
|
|
|
+
|
|
|
//每个major的rssi平均值
|
|
|
|
|
|
let ave = BeaconUtils.arrayAverage(arr)
|
|
|
- // console.log('ave',ave)
|
|
|
+
|
|
|
//计算平均差
|
|
|
let meanDeviation = BeaconUtils.getVariance(arr,ave); //改成方差
|
|
|
- // console.log('meanDeviation',meanDeviation)
|
|
|
+
|
|
|
//计算各rssi的高斯模糊权重
|
|
|
let guassionArr = [];
|
|
|
for(let i = 0; i < arr.length; ++i){
|
|
|
- // console.log('guassionArr ele',i,BeaconUtils.getOneGuassionArray(arr.length,i,meanDeviation))
|
|
|
+
|
|
|
// 返回的可能是空数组
|
|
|
guassionArr.push(BeaconUtils.getOneGuassionArray(arr.length,i,meanDeviation));
|
|
|
}
|
|
|
- // console.log('guassionArr',guassionArr)
|
|
|
+
|
|
|
//计算高斯模糊后的rssi值
|
|
|
let rssiArr = []; //模糊后的rssi数组
|
|
|
for(let i = 0; i < arr.length; ++i){
|
|
@@ -127,12 +126,12 @@ Component({
|
|
|
sum += guassionArr[i][j] * arr[j]
|
|
|
}
|
|
|
rssiArr.push(sum);
|
|
|
- // console.log('sum',sum)
|
|
|
+
|
|
|
}
|
|
|
- // console.log('rssiArr',rssiArr);
|
|
|
+
|
|
|
//时间加权后求rssi平均值
|
|
|
let aveOnTime = BeaconUtils.arrayAverage(rssiArr.slice(0,Math.floor(rssiArr.length / 3)).concat(rssiArr));
|
|
|
- // console.log('aveOnTime',aveOnTime)
|
|
|
+
|
|
|
//测距
|
|
|
|
|
|
classfiy[key].forEach(item=>{
|
|
@@ -142,10 +141,10 @@ Component({
|
|
|
accuracyList[key] = [item.accuracy]
|
|
|
}
|
|
|
accuracyList[key].push(item.accuracy)
|
|
|
- // console.log('item',item)
|
|
|
+
|
|
|
})
|
|
|
|
|
|
- // dataArr.push(classfiy[key].length)
|
|
|
+
|
|
|
|
|
|
})
|
|
|
|
|
@@ -158,12 +157,7 @@ Component({
|
|
|
const R = 6 //设定范围半径
|
|
|
Object.keys(accuracyList).forEach(key=>{
|
|
|
let aveAccuracy = BeaconUtils.arrayAverage(accuracyList[key])
|
|
|
- // console.log(key,aveAccuracy)
|
|
|
- // let record = {'id':'10001','distance':aveAccuracy}
|
|
|
- // json.push(record)
|
|
|
- // if(json.length >= 350){
|
|
|
- // console.log(JSON.stringify(json))
|
|
|
- // }
|
|
|
+
|
|
|
if(aveAccuracy < R){
|
|
|
if(prologue.includes(key)){
|
|
|
signSelect[0] += 1;
|