299 lines
6.9 KiB
Vue
299 lines
6.9 KiB
Vue
<script>
|
||
var xBlufi = require("./utils/blufi/xBlufi.js");
|
||
var call;
|
||
var data_call;
|
||
var ble_id = "1231";
|
||
var ble_url;
|
||
|
||
var user_info;
|
||
|
||
// 在文件顶部添加一个变量来存储当前连接的MAC地址
|
||
var current_connected_mac = null;
|
||
|
||
export default {
|
||
globalData: {
|
||
userInfo: null,
|
||
topicTypeIndex: 0,
|
||
token: "",
|
||
isShow: true,
|
||
bleInfo: {
|
||
current_connected_mac: null,
|
||
ble_id: "1231",
|
||
ble_url: null,
|
||
devicesList: [],
|
||
xBlufi: xBlufi
|
||
}
|
||
},
|
||
created() {
|
||
// #ifdef APP-PLUS
|
||
plus.navigator.closeSplashscreen();
|
||
// #endif
|
||
console.log('App @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Launch');
|
||
// #ifndef APP-PLUS
|
||
console.log('App 1111111111111Launch');
|
||
xBlufi.initXBlufi(1);
|
||
console.log("xBlufi初始化", xBlufi); // 修改日志输出,确保输出有意义的信息
|
||
xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent); // 取消注释,确保事件监听被正确设置
|
||
xBlufi.notifyStartDiscoverBle({
|
||
'isStart': true
|
||
});
|
||
// #endif
|
||
|
||
// 添加以下代码,将方法绑定到 uni 全局对象
|
||
uni.$emit('init_app_methods', {
|
||
set_ble_mac: this.set_ble_mac.bind(this)
|
||
});
|
||
},
|
||
onLaunch(options) {
|
||
uni.setInnerAudioOption({
|
||
obeyMuteSwitch: false
|
||
});
|
||
|
||
},
|
||
onShow: function () {
|
||
|
||
},
|
||
onHide: function () {
|
||
|
||
},
|
||
methods: {
|
||
get_ble_name(callback) {
|
||
if (callback != undefined) {
|
||
xBlufi.notifyConnectBle({
|
||
isStart: false,
|
||
deviceId: ble_id,
|
||
name: ""
|
||
});
|
||
|
||
// xBlufi.notifyStartDiscoverBle({
|
||
// 'isStart': true
|
||
// });
|
||
|
||
console.log('关闭蓝牙接口', ble_id);
|
||
call = callback;
|
||
}
|
||
},
|
||
get_ble_data(callback) {
|
||
if (callback != undefined)
|
||
data_call = callback;
|
||
},
|
||
set_ble_mac(mac) {
|
||
const bleInfo = this.globalData.bleInfo;
|
||
|
||
// 如果MAC地址与当前连接的相同,则不重复连接
|
||
if (mac === bleInfo.current_connected_mac) {
|
||
console.log('设备已连接,无需重复连接');
|
||
return;
|
||
}
|
||
|
||
if (mac != undefined && bleInfo.devicesList) {
|
||
const device = bleInfo.devicesList.find(device =>
|
||
device.name && device.name.toLowerCase().includes(mac.toLowerCase())
|
||
);
|
||
|
||
if (device) {
|
||
bleInfo.ble_url = '';
|
||
uni.hideLoading();
|
||
bleInfo.ble_id = device.deviceId;
|
||
|
||
bleInfo.xBlufi.notifyConnectBle({
|
||
isStart: true,
|
||
deviceId: device.deviceId
|
||
});
|
||
|
||
uni.showToast({
|
||
title: "连接蓝牙设备中",
|
||
icon: 'none',
|
||
duration: 1500
|
||
});
|
||
|
||
bleInfo.xBlufi.notifyInitBleEsp32({
|
||
deviceId: device.deviceId
|
||
});
|
||
|
||
// 更新全局MAC地址
|
||
bleInfo.current_connected_mac = mac;
|
||
} else {
|
||
uni.showToast({
|
||
title: "未找到匹配的设备",
|
||
icon: 'none',
|
||
duration: 1500
|
||
});
|
||
}
|
||
}
|
||
},
|
||
set_ble_id(id, url) {
|
||
console.log("id", id)
|
||
if (id != undefined) {
|
||
ble_url = url
|
||
uni.hideLoading();
|
||
ble_id = id;
|
||
xBlufi.notifyConnectBle({
|
||
isStart: true,
|
||
deviceId: id
|
||
// name
|
||
});
|
||
|
||
uni.showToast({
|
||
title: "连接蓝牙设备中",
|
||
icon: 'none',
|
||
duration: 3500
|
||
});
|
||
|
||
|
||
xBlufi.notifyInitBleEsp32({
|
||
deviceId: id
|
||
});
|
||
// xBlufi.notifyStartDiscoverBle({
|
||
// 'isStart': false
|
||
// });
|
||
}
|
||
},
|
||
ble_send(data) {
|
||
if (data != undefined) {
|
||
xBlufi.notifySendCustomData({
|
||
customData: data,
|
||
});
|
||
}
|
||
},
|
||
get_user_iphone(data) {
|
||
return user_info;
|
||
},
|
||
set_user_iphone(data) {
|
||
console.log("电话存储")
|
||
uni.setStorage({
|
||
key: 'user_info',
|
||
data: data,
|
||
success: () => {
|
||
console.log('已经缓存,userInfo:', data.phone);
|
||
resolve('success')
|
||
}
|
||
});
|
||
user_info = data
|
||
},
|
||
call(e) {
|
||
call = e;
|
||
},
|
||
funListenDeviceMsgEvent(options) {
|
||
switch (options.type) {
|
||
case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
|
||
if (!options.result) {
|
||
// 清除全局MAC地址
|
||
this.globalData.bleInfo.current_connected_mac = null;
|
||
const pages = getCurrentPages();
|
||
const currentPage = pages[pages.length - 1];
|
||
console.log("当前页面路径", currentPage.route)
|
||
if (currentPage.route != 'pages/index/index') {
|
||
uni.showModal({
|
||
title: '设备提示!',
|
||
content: '与设备断开请重联',
|
||
showCancel: false,
|
||
success: function (res) {
|
||
uni.reLaunch({
|
||
url: '/pages/index/index'
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
break;
|
||
case xBlufi.XBLUFI_TYPE.TYPE_CONNECT_ROUTER_RESULT:
|
||
uni.hideLoading();
|
||
if (!options.result) {
|
||
uni.hideLoading();
|
||
uni.showModal({
|
||
title: '温馨提示',
|
||
content: '配网失败,请确认是2.4G模式并且账户密码正确',
|
||
showCancel: false //是否显示取消按钮
|
||
});
|
||
} else {
|
||
if (options.data.progress == 100) {
|
||
let ssid = options.data.ssid;
|
||
uni.hideLoading();
|
||
uni.showModal({
|
||
title: '温馨提示',
|
||
content: `连接成功路由器`,
|
||
showCancel: false,
|
||
//是否显示取消按钮
|
||
success: function (res) {
|
||
// uni.navigateBack()
|
||
uni.navigateTo({
|
||
url: '/pages/dd/xiaoai'
|
||
});
|
||
console.log("确定成功之后 返回 ");
|
||
}
|
||
});
|
||
}
|
||
}
|
||
break;
|
||
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
|
||
if (data_call != undefined) {
|
||
data_call(options.data)
|
||
}
|
||
break;
|
||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
||
if (options.result) {
|
||
this.globalData.bleInfo.devicesList = options.data; // 假设你想在组件内部使用这个变量,应该这样设置
|
||
console.log("获取设备列表", this.globalData.bleInfo.devicesList)
|
||
if (call != undefined) {
|
||
console.log("获取设备列表", this.globalData.bleInfo.devicesList)
|
||
call(this.globalData.bleInfo.devicesList)
|
||
}
|
||
}
|
||
break;
|
||
case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
|
||
console.log("连接回调:" + JSON.stringify(options));
|
||
if (options.result) {
|
||
uni.hideLoading();
|
||
uni.showToast({
|
||
title: '连接成功',
|
||
icon: 'none'
|
||
});
|
||
console.log("连接进入:", ble_url);
|
||
// uni.navigateTo({ url: ble_url });
|
||
}
|
||
else {
|
||
uni.showToast({
|
||
title: '连接超时,请重新链接',
|
||
icon: 'none'
|
||
});
|
||
}
|
||
break;
|
||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
||
if (!options.result) {
|
||
uni.showToast({
|
||
title: '蓝牙未开启解决方法',
|
||
icon: 'none',
|
||
duration: 3000
|
||
});
|
||
}
|
||
break;
|
||
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
|
||
if (options.result) {
|
||
console.log('蓝牙停止搜索ok');
|
||
} else {
|
||
console.log('蓝牙停止搜索失败');
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
/*每个页面公共css */
|
||
@import "uview-ui/index.scss";
|
||
@import "./common/css/iconfont.css";
|
||
|
||
// 自定义tabar样式修改
|
||
/deep/.u-tabbar__content__item__text {
|
||
font-size: 20rpx !important;
|
||
bottom: 10rpx !important;
|
||
}
|
||
|
||
page {
|
||
background-color: #f8f8f8;
|
||
}
|
||
</style>
|