|
@@ -1,16 +1,16 @@
|
|
|
+//注意,注意,""../"表示退回上一级目录
|
|
|
+import { userMobileLogin } from '../../api/wxlogin.js'
|
|
|
+import { getMobileBtsParamList } from '../../api/btsparam.js'
|
|
|
+import sysconfig from '../../sysconfig/sysconfig.js'
|
|
|
|
|
|
const app = getApp()
|
|
|
-// pages/home/home.js
|
|
|
Page({
|
|
|
- /**
|
|
|
- * 页面的初始数据
|
|
|
- */
|
|
|
data: {
|
|
|
bestFrame: 0,
|
|
|
bestMultiFrame: 0,
|
|
|
bleDataList: [],//蓝牙设备队列,包括mac和rssi项
|
|
|
-
|
|
|
- installBtsList: [],//安装基站列表
|
|
|
+ btsParamList: [],//基站参数列表
|
|
|
+ btsDataList: [],//基站数据列表
|
|
|
btsMinCoordX: 0,
|
|
|
btsMaxCoordX: 0,
|
|
|
btsMinCoordY: 0,
|
|
@@ -21,8 +21,7 @@ Page({
|
|
|
canvasHeight: 0, //画布高度
|
|
|
canvasPixelRatio: 1,//画布像素比例
|
|
|
|
|
|
- coordDataList: [],//定位坐标数据队列
|
|
|
-
|
|
|
+ coordDataList: [],//定位坐标数据队列(所有定位坐标)
|
|
|
},
|
|
|
/**
|
|
|
* 生命周期函数--监听页面加载
|
|
@@ -31,12 +30,14 @@ Page({
|
|
|
//创建线程
|
|
|
app.createWorker(this.workerMessageListenerHome)
|
|
|
|
|
|
- app.createRecorder()//创建录音设备
|
|
|
+ //创建录音设备
|
|
|
+ //app.createRecorder()
|
|
|
|
|
|
- //TODO,测试用接口,后期改成从服务器上读取安装基站数据
|
|
|
- this.generateMultiInstallBts() //生成定位基站
|
|
|
+ //用户登录
|
|
|
+ this.userLogin()
|
|
|
|
|
|
- this.initCanvas()//初始化画布
|
|
|
+ //初始化画布
|
|
|
+ this.initCanvas()
|
|
|
|
|
|
//启动三轴加速计
|
|
|
app.startImu()
|
|
@@ -63,6 +64,7 @@ Page({
|
|
|
* 生命周期函数--监听页面卸载
|
|
|
*/
|
|
|
onUnload() {
|
|
|
+ //页面关闭时释放wasm模块内存
|
|
|
if (app.data.worker != null) {
|
|
|
app.data.worker.postMessage({
|
|
|
message: 'MAIN_WORKER_FREE_MEMORY',
|
|
@@ -94,13 +96,13 @@ Page({
|
|
|
app.openBleAdapter()//打开蓝牙设备
|
|
|
break
|
|
|
case 'WORKER_MAIN_ORGANIZE_INSTALL_BTS_DATA':
|
|
|
- this.organizeInstallBtsData()//组织安装基站
|
|
|
+ this.organizeBtsDataForWasm()//组织基站数据
|
|
|
break
|
|
|
case 'WORKER_MAIN_START_REC'://开始录音
|
|
|
app.createRecorder()
|
|
|
break
|
|
|
case 'WORKER_MAIN_CURRENT_LOCATION_COORD'://当前定位坐标
|
|
|
- this.drawLocationTrace(res.data)
|
|
|
+ this.saveLocateCoord(res.data)
|
|
|
break
|
|
|
case 'WORKER_MAIN_NOTICE_DOWNLOAD_AUDIO_FILE':
|
|
|
this.downloadAudioFile()
|
|
@@ -115,6 +117,47 @@ Page({
|
|
|
break
|
|
|
}
|
|
|
},
|
|
|
+ //用户登录,登录成功后拉取基站参数
|
|
|
+ userLogin() {
|
|
|
+ // 用户登录登录(发送登录凭证[res.code]到后台换取openId、sessionKey和unionId)
|
|
|
+ wx.login({
|
|
|
+ success: (res) => {
|
|
|
+ var paramData = {};
|
|
|
+ paramData.code = res.code; //登录凭证
|
|
|
+ paramData.domain_name = sysconfig.domanName; //系统二级域名(用二级域名换取项目编号)
|
|
|
+
|
|
|
+ userMobileLogin(paramData).then((resp) => {
|
|
|
+ //保存token
|
|
|
+ const tokenKey = sysconfig.user.tokenKey
|
|
|
+ wx.setStorageSync(tokenKey, resp.data.data.token)
|
|
|
+
|
|
|
+ //保存用户数据
|
|
|
+ const userInfoKey = sysconfig.user.userInfoKey
|
|
|
+ wx.setStorageSync(userInfoKey, resp.data.data)
|
|
|
+
|
|
|
+ //拉取基站参数(注意:需要在用户登录成功后才拉取参数)
|
|
|
+ this.getBtsParamList()
|
|
|
+ }).catch((err) => {
|
|
|
+ console.log("用户登录失败", err)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //拉取基站参数(注意:需要在用户登录成功后才拉取参数)
|
|
|
+ getBtsParamList() {
|
|
|
+ //拉取基站参数
|
|
|
+ getMobileBtsParamList().then((resBtsPram) => {
|
|
|
+ this.data.btsParamList = resBtsPram.data.data
|
|
|
+
|
|
|
+ //组织基站数据队列
|
|
|
+ this.data.btsDataList = this.generateBtsDataList(this.data.btsParamList)
|
|
|
+
|
|
|
+ //计算最大最小坐标值
|
|
|
+ this.calMaxMinCoordXY(this.data.btsDataList)
|
|
|
+ }).catch((err) => {
|
|
|
+ console.log("查询基站参数失败", err)
|
|
|
+ })
|
|
|
+ },
|
|
|
//初始化画布
|
|
|
initCanvas() {
|
|
|
//获得屏幕数据
|
|
@@ -139,19 +182,20 @@ Page({
|
|
|
canvas.height = res[0].height * this.data.canvasPixelRatio
|
|
|
this.data.canvasCtx.scale(this.data.canvasPixelRatio, this.data.canvasPixelRatio)
|
|
|
|
|
|
- this.drawPosition(0, 0, 0, 0)
|
|
|
+ //画网格
|
|
|
+ this.drawLocateTrack(0, 0, 0, this.data.coordDataList)
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- //组织安装基站数据
|
|
|
- organizeInstallBtsData() {
|
|
|
+ //为wasm模块组织基站数据
|
|
|
+ organizeBtsDataForWasm() {
|
|
|
let dataList = []//数据队列
|
|
|
let oneItem = {}
|
|
|
|
|
|
//按照wasm模块要求的数据格式组织数据
|
|
|
- dataList.push(this.data.installBtsList.length)
|
|
|
- for (let i = 0; i < this.data.installBtsList.length; i++) {
|
|
|
- oneItem = this.data.installBtsList[i]
|
|
|
+ dataList.push(this.data.btsDataList.length)
|
|
|
+ for (let i = 0; i < this.data.btsDataList.length; i++) {
|
|
|
+ oneItem = this.data.btsDataList[i]
|
|
|
dataList.push(oneItem.dwBuildId)
|
|
|
dataList.push(oneItem.dwLayerId)
|
|
|
|
|
@@ -169,7 +213,7 @@ Page({
|
|
|
for (let i = 0; i < oneItem.dwTwoBtsNum; i++) {
|
|
|
dataList.push(oneItem.adwTwoBtsList[i])
|
|
|
}
|
|
|
- for (let i = oneItem.dwTwoBtsNum; i < 6; i++) {
|
|
|
+ for (let i = oneItem.dwTwoBtsNum; i < 6; i++) {//补零占位
|
|
|
dataList.push(0)
|
|
|
}
|
|
|
|
|
@@ -192,87 +236,22 @@ Page({
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
- //生成多个安装基站
|
|
|
- generateMultiInstallBts() {
|
|
|
- let oneItem = {}
|
|
|
- let maxTmpX = -10000000
|
|
|
- let minTmpX = 10000000
|
|
|
- let maxTmpY = -10000000
|
|
|
- let minTmpY = 10000000
|
|
|
- let xTmp = 0
|
|
|
- let yTmp = 0
|
|
|
-
|
|
|
- let btsNum = 5;//基站数量
|
|
|
-
|
|
|
- //清空基站队列
|
|
|
- this.data.installBtsList = []
|
|
|
-
|
|
|
- // a81710d94e04 1号基站
|
|
|
- // a81710d9a1c8 2号基站
|
|
|
- // a81710d8f9be 3号基站
|
|
|
- // a81710d91a5e 4号基站
|
|
|
-
|
|
|
- // 1号基站,基站ID,频率ID(0 - 8),时隙ID(0 - 3),X坐标(单位厘米),Y坐标(单位厘米),MAC地址,定位类型,1维定位基站数,1维定位基站ID队列
|
|
|
- oneItem = this.generateOneInstallBts(10001, 3, 0, 0, 720, "685377178192", 3, 1, "10005")
|
|
|
- this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
- //2号基站
|
|
|
- oneItem = this.generateOneInstallBts(10002, 4, 1, 2500, 720, "685377183652", 2, 0, "")
|
|
|
- this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
- //3号基站
|
|
|
- oneItem = this.generateOneInstallBts(10003, 5, 2, 2500, 0, "6853771679b0", 2, 0, "")
|
|
|
- this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
- //4号基站
|
|
|
- oneItem = this.generateOneInstallBts(10004, 6, 3, 0, 0, "68537716c686", 2, 0, "")
|
|
|
- this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
- //5号基站
|
|
|
- oneItem = this.generateOneInstallBts(10005, 7, 0, 0, 3300, "685377183238", 1, 1, "10001")
|
|
|
- this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
- // //6号基站
|
|
|
- // oneItem = this.generateOneInstallBts(10006, 5, 0, 5500, 0, "685377174ea4", 1, 1, "10005")
|
|
|
- // this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
-
|
|
|
- // //7号基站
|
|
|
- // oneItem = this.generateOneInstallBts(2097114, 6, 0, 500, 180, "a81710d94198", 2, 1, "0")
|
|
|
- // this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
- // // //8号基站
|
|
|
- // // oneItem = this.generateOneInstallBts(2097110, 7, 0, 800, 1800, "a81710d951dc")
|
|
|
- // // this.data.installBtsList.push(oneItem)
|
|
|
-
|
|
|
+ //生成基站数据队列
|
|
|
+ generateBtsDataList(btsParamList) {
|
|
|
+ let dataList = []
|
|
|
+ ////组织基站数据
|
|
|
+ let btsNum = btsParamList.length;//基站数量
|
|
|
for (let i = 0; i < btsNum; i++) {
|
|
|
- xTmp = this.data.installBtsList[i].dwCoordX
|
|
|
- if (xTmp > maxTmpX) {
|
|
|
- maxTmpX = xTmp
|
|
|
- }
|
|
|
- if (xTmp < minTmpX) {
|
|
|
- minTmpX = xTmp
|
|
|
- }
|
|
|
-
|
|
|
- yTmp = this.data.installBtsList[i].dwCoordY
|
|
|
- if (yTmp > maxTmpY) {
|
|
|
- maxTmpY = yTmp
|
|
|
- }
|
|
|
- if (yTmp < minTmpY) {
|
|
|
- minTmpY = yTmp
|
|
|
- }
|
|
|
+ let btsParam = btsParamList[i]
|
|
|
+ let oneItem = this.generateOneBtsData(btsParam.bts_id, btsParam.carrier_id, btsParam.timeslot, btsParam.coord_x, btsParam.coord_y, btsParam.coord_z, btsParam.ble_name, btsParam.location_type, btsParam.two_bts_num, btsParam.two_bts_list)
|
|
|
+ dataList.push(oneItem)
|
|
|
}
|
|
|
|
|
|
- //保存值
|
|
|
- this.setData({
|
|
|
- btsMinCoordX: minTmpX,
|
|
|
- btsMaxCoordX: maxTmpX,
|
|
|
- btsMinCoordY: minTmpY,
|
|
|
- btsMaxCoordY: maxTmpY
|
|
|
- })
|
|
|
+ return dataList
|
|
|
},
|
|
|
- //生成一个安装基站数据
|
|
|
- generateOneInstallBts(dwBtsId, dwFreqIndex, dwSlot, dwCoordX, dwCoordY, macAddressList, dwLctType, dwTwoBtsNum, adwTwoBtsList) {
|
|
|
+ //生成一个基站数据
|
|
|
+ //基站ID,频率ID(0 - 8),时隙ID(0 - 3),X坐标(单位厘米),Y坐标(单位厘米),Z坐标(单位厘米),蓝牙MAC地址,定位类型,1维定位基站数,1维定位基站ID队列
|
|
|
+ generateOneBtsData(dwBtsId, dwFreqIndex, dwSlot, dwCoordX, dwCoordY, dwCoordZ, macAddressList, dwLctType, dwTwoBtsNum, adwTwoBtsList) {
|
|
|
let installBts = {}
|
|
|
let oneCharHex = ''
|
|
|
let oneCharHexValue = 0
|
|
@@ -281,12 +260,12 @@ Page({
|
|
|
installBts.dwLayerId = 1
|
|
|
|
|
|
installBts.dwBtsId = dwBtsId
|
|
|
- installBts.dwFreqIndex = dwFreqIndex
|
|
|
- installBts.dwSlot = dwSlot
|
|
|
+ installBts.dwFreqIndex = dwFreqIndex - 1
|
|
|
+ installBts.dwSlot = dwSlot - 1
|
|
|
|
|
|
installBts.dwCoordX = dwCoordX
|
|
|
installBts.dwCoordY = dwCoordY
|
|
|
- installBts.dwCoordZ = 270
|
|
|
+ installBts.dwCoordZ = dwCoordZ
|
|
|
|
|
|
//定位类型,1:一维定位,2:二维定位,3:既支持一维定位也支持二维定位
|
|
|
installBts.dwLctType = dwLctType
|
|
@@ -298,14 +277,8 @@ Page({
|
|
|
installBts.adwTwoBtsList = []
|
|
|
let btsIdList = adwTwoBtsList.split(",")
|
|
|
let btsId = 0
|
|
|
-
|
|
|
- // if (btsIdList.length != dwTwoBtsNum) {
|
|
|
- // console.log("长度错误")
|
|
|
- // return;
|
|
|
- // }
|
|
|
for (let k = 0; k < dwTwoBtsNum; k++) {
|
|
|
btsId = parseInt(btsIdList[k])
|
|
|
- console.log("基站ID:", btsId)
|
|
|
installBts.adwTwoBtsList.push(btsId)
|
|
|
}
|
|
|
|
|
@@ -325,73 +298,59 @@ Page({
|
|
|
installBts.adwWifiMac.push(oneCharHexValue)
|
|
|
}
|
|
|
|
|
|
- console.log(installBts)
|
|
|
return installBts
|
|
|
},
|
|
|
- //TODO,生成蓝牙基站数据
|
|
|
- generateBleBtsData() {
|
|
|
- let mac = "123456789ABC"
|
|
|
- let rssi = -58
|
|
|
- let item = {}
|
|
|
- item['mac'] = mac;
|
|
|
- item['rssi'] = rssi
|
|
|
-
|
|
|
- let dataList = []
|
|
|
- dataList.push(item)
|
|
|
+ //计算基站围成的多边形最大最小坐标
|
|
|
+ calMaxMinCoordXY(btsDataList) {
|
|
|
+ let maxTmpX = -10000000
|
|
|
+ let minTmpX = 10000000
|
|
|
+ let maxTmpY = -10000000
|
|
|
+ let minTmpY = 10000000
|
|
|
+ let xTmp = 0
|
|
|
+ let yTmp = 0
|
|
|
|
|
|
- app.data.worker.postMessage({
|
|
|
- message: 'MAIN_WORKER_BLE_BTS_DATA',
|
|
|
- code: 100,
|
|
|
- data: dataList
|
|
|
- })
|
|
|
- },
|
|
|
- //从服务器上下载文件
|
|
|
- downloadAudioFile() {
|
|
|
- const url = "https://www.stp.intourism.cn/tdsadmin/line390-zt.wav"
|
|
|
+ let btsNum = btsDataList.length
|
|
|
|
|
|
- wx.downloadFile({
|
|
|
- url: url,
|
|
|
- success: (res) => {
|
|
|
- if (res.statusCode == 200) {
|
|
|
- app.data.wavFilePath = res.tempFilePath
|
|
|
- this.readAudioFile();
|
|
|
- }
|
|
|
+ //计算基站围成的多边形坐标最大最小值
|
|
|
+ for (let i = 0; i < btsNum; i++) {
|
|
|
+ xTmp = btsDataList[i].dwCoordX
|
|
|
+ if (xTmp > maxTmpX) {
|
|
|
+ maxTmpX = xTmp
|
|
|
+ }
|
|
|
+ if (xTmp < minTmpX) {
|
|
|
+ minTmpX = xTmp
|
|
|
}
|
|
|
- })
|
|
|
- },
|
|
|
- // 读取音频文件
|
|
|
- readAudioFile() {
|
|
|
- let filePath = app.data.wavFilePath
|
|
|
-
|
|
|
- if (app.data.readFileTimes == null) {
|
|
|
- return
|
|
|
- }
|
|
|
|
|
|
- //90秒数据
|
|
|
- if (app.data.readFileTimes >= 360) {
|
|
|
- app.data.readFileTimes = 0
|
|
|
- return
|
|
|
+ yTmp = btsDataList[i].dwCoordY
|
|
|
+ if (yTmp > maxTmpY) {
|
|
|
+ maxTmpY = yTmp
|
|
|
+ }
|
|
|
+ if (yTmp < minTmpY) {
|
|
|
+ minTmpY = yTmp
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- const times = app.data.readFileTimes
|
|
|
- const fs = wx.getFileSystemManager();
|
|
|
- fs.readFile({
|
|
|
- filePath: `${filePath}`,
|
|
|
- position: 44 + times * 12000 * 2,
|
|
|
- length: 12000 * 2,//12000点,每点2个字节
|
|
|
- success: (res) => {
|
|
|
- app.data.readFileTimes++
|
|
|
- app.data.worker.postMessage({
|
|
|
- message: 'MAIN_WORKER_AUDIO_DATA',
|
|
|
- data: res.data
|
|
|
- })
|
|
|
- },
|
|
|
- fail(res) {
|
|
|
- console.log(res);
|
|
|
- }
|
|
|
+ //保存值
|
|
|
+ this.setData({
|
|
|
+ btsMinCoordX: minTmpX,
|
|
|
+ btsMaxCoordX: maxTmpX,
|
|
|
+ btsMinCoordY: minTmpY,
|
|
|
+ btsMaxCoordY: maxTmpY
|
|
|
})
|
|
|
+
|
|
|
+ //画基站坐标
|
|
|
+ this.drawLocateTrack(1, 0, 0, this.data.coordDataList)
|
|
|
},
|
|
|
- drawPosition(type, coordinateX, coordinateY, coordDataList) {
|
|
|
+ //保存定位坐标
|
|
|
+ saveLocateCoord(coord) {
|
|
|
+ //保存定位坐标
|
|
|
+ this.data.coordDataList.push(coord)
|
|
|
+
|
|
|
+ //画定位轨迹
|
|
|
+ this.drawLocateTrack(2, coord.x, coord.y, this.data.coordDataList)
|
|
|
+ },
|
|
|
+ //画定位轨迹,包括网格线、基站坐标、定位轨迹和当前位置
|
|
|
+ drawLocateTrack(type, coordinateX, coordinateY, coordDataList) {
|
|
|
let i = 0
|
|
|
let pos = 0
|
|
|
let space = 10
|
|
@@ -418,7 +377,6 @@ Page({
|
|
|
//// 画网格
|
|
|
positionCtx.beginPath()
|
|
|
positionCtx.strokeStyle = '#CCCCCC'
|
|
|
-
|
|
|
//1、画网格横线
|
|
|
space = parseFloat(this.data.canvasWidth) / lineCount
|
|
|
for (i = 0; i < lineCount; i++) {
|
|
@@ -426,7 +384,6 @@ Page({
|
|
|
positionCtx.moveTo(0, pos)
|
|
|
positionCtx.lineTo(this.data.canvasWidth, pos)
|
|
|
}
|
|
|
-
|
|
|
//2、画网格竖线
|
|
|
space = parseFloat(this.data.canvasHeight) / lineCount
|
|
|
for (i = 0; i < lineCount; i++) {
|
|
@@ -435,27 +392,24 @@ Page({
|
|
|
positionCtx.lineTo(pos, this.data.canvasHeight)
|
|
|
}
|
|
|
positionCtx.stroke()
|
|
|
-
|
|
|
if (type === 0) { //仅画网格
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- // 画基站
|
|
|
+ //// 画基站
|
|
|
positionCtx.beginPath()
|
|
|
positionCtx.fillStyle = "#FF0000"
|
|
|
positionCtx.strokeStyle = '#FF0000'
|
|
|
- for (i = 0; i < this.data.installBtsList.length; i++) {
|
|
|
- let x = (this.data.installBtsList[i].dwCoordX - ctxMinX) * radio
|
|
|
- let y = this.data.canvasHeight - (this.data.installBtsList[i].dwCoordY - ctxMinY) * radio
|
|
|
+ for (i = 0; i < this.data.btsDataList.length; i++) {
|
|
|
+ let x = (this.data.btsDataList[i].dwCoordX - ctxMinX) * radio
|
|
|
+ let y = this.data.canvasHeight - (this.data.btsDataList[i].dwCoordY - ctxMinY) * radio
|
|
|
positionCtx.fillRect(x - 5, y - 5, 6, 6);
|
|
|
- // if (masterFreqFrequency === app.store.signal.ubsList[i].device_frequency) {
|
|
|
- // positionCtx.fillRect(x - 8, y - 8, 16, 16);
|
|
|
- // } else {
|
|
|
- // positionCtx.fillRect(x - 5, y - 5, 10, 10);
|
|
|
- // }
|
|
|
+ }
|
|
|
+ if (type === 1) {//仅画基站
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- // 画轨迹线
|
|
|
+ //// 画轨迹线
|
|
|
positionCtx.lineWidth = 1.2
|
|
|
positionCtx.beginPath()
|
|
|
positionCtx.strokeStyle = '#0A0A0A'
|
|
@@ -472,7 +426,7 @@ Page({
|
|
|
}
|
|
|
positionCtx.stroke()
|
|
|
|
|
|
- // 画当前位置
|
|
|
+ //// 画当前位置
|
|
|
positionCtx.beginPath()
|
|
|
positionCtx.fillStyle = "#0000FF"
|
|
|
positionCtx.strokeStyle = '#0000FF'
|
|
@@ -481,13 +435,70 @@ Page({
|
|
|
positionCtx.arc(x, y, 3, 0, 2 * Math.PI);
|
|
|
positionCtx.fill()
|
|
|
},
|
|
|
- drawLocationTrace(coord) {
|
|
|
- let x = coord.x
|
|
|
- let y = coord.y
|
|
|
+ //////////////////////////////////////////////////////////////////////////////////
|
|
|
+ //////////////////////////////////下面是测试接口,已舍弃////////////////////////////
|
|
|
+ //////////////////////////////////////////////////////////////////////////////////
|
|
|
+ //生成蓝牙基站数据
|
|
|
+ generateBleBtsData() {
|
|
|
+ let mac = "123456789ABC"
|
|
|
+ let rssi = -58
|
|
|
+ let item = {}
|
|
|
+ item['mac'] = mac;
|
|
|
+ item['rssi'] = rssi
|
|
|
|
|
|
- //保存定位坐标
|
|
|
- this.data.coordDataList.push(coord)
|
|
|
+ let dataList = []
|
|
|
+ dataList.push(item)
|
|
|
|
|
|
- this.drawPosition(1, x, y, this.data.coordDataList)
|
|
|
- }
|
|
|
+ app.data.worker.postMessage({
|
|
|
+ message: 'MAIN_WORKER_BLE_BTS_DATA',
|
|
|
+ code: 100,
|
|
|
+ data: dataList
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //从服务器上下载文件
|
|
|
+ downloadAudioFile() {
|
|
|
+ const url = "https://www.stp.intourism.cn/tdsadmin/line390-zt.wav"
|
|
|
+
|
|
|
+ wx.downloadFile({
|
|
|
+ url: url,
|
|
|
+ success: (res) => {
|
|
|
+ if (res.statusCode == 200) {
|
|
|
+ app.data.wavFilePath = res.tempFilePath
|
|
|
+ this.readAudioFile();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 读取音频文件
|
|
|
+ readAudioFile() {
|
|
|
+ let filePath = app.data.wavFilePath
|
|
|
+
|
|
|
+ if (app.data.readFileTimes == null) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //90秒数据
|
|
|
+ if (app.data.readFileTimes >= 360) {
|
|
|
+ app.data.readFileTimes = 0
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const times = app.data.readFileTimes
|
|
|
+ const fs = wx.getFileSystemManager();
|
|
|
+ fs.readFile({
|
|
|
+ filePath: `${filePath}`,
|
|
|
+ position: 44 + times * 12000 * 2,
|
|
|
+ length: 12000 * 2,//12000点,每点2个字节
|
|
|
+ success: (res) => {
|
|
|
+ app.data.readFileTimes++
|
|
|
+ app.data.worker.postMessage({
|
|
|
+ message: 'MAIN_WORKER_AUDIO_DATA',
|
|
|
+ data: res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ fail(res) {
|
|
|
+ console.log(res);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
})
|