Prechádzať zdrojové kódy

最新蓝牙版修改

htc 2 dní pred
rodič
commit
7c5231a307
3 zmenil súbory, kde vykonal 274 pridanie a 2 odobranie
  1. 6 0
      pages.json
  2. 265 0
      pages/lanya2.vue
  3. 3 2
      pagesMy/wifiSet.vue

+ 6 - 0
pages.json

@@ -23,6 +23,12 @@
 			"style": {
 			"style": {
 				"navigationStyle": "custom"
 				"navigationStyle": "custom"
 			}
 			}
+		},
+		{
+			"path": "pages/lanya2",
+			"style": {
+				"navigationStyle": "custom"
+			}
 		}
 		}
 	],
 	],
 	"subPackages": [
 	"subPackages": [

+ 265 - 0
pages/lanya2.vue

@@ -0,0 +1,265 @@
+<template>
+	<view class="page">
+		<view class="page">
+			<view class="weui-form">
+				<view class="weui-form__text-area">
+					<view class="weui-form__title">xBlufi蓝牙配网{{version}}</view>
+					<view class="weui-form__desc">设计理念:简单/快速上手</view>
+				</view>
+				<view class="weui-form__control-area">
+					<view class="weui-cells__group weui-cells__group_form">
+						<view class="weui-cells__title">需配置入网当前路由器SSID:{{ssid}}</view>
+						<view class="weui-cells weui-cells_form">
+							<view class="weui-cell">
+								<picker @change="bindPickerChange" :value="index" :range="array">
+									<view class="picker">
+										Wi-Fi列表:{{array[index]}}
+									</view>
+								</picker>
+							</view>
+							<view class="weui-cell">
+								<view class="weui-cell__hd"><label class="weui-label">密码:</label></view>
+								<view class="weui-cell__bd">
+									<input class="weui-input" :value="password" @input="bindPasswordInput" type="text"
+										placeholder="在此输入路由器密码" />
+								</view>
+							</view>
+							<view class="weui-cell">
+								<view class="weui-cell__hd"><label class="weui-label">数据:</label></view>
+								<view class="weui-cell__bd">
+									<input class="weui-input" @input="bindCustomDataInput" type="text"
+										placeholder="在此输入自定义数据" />
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="weui-form__tips-area">
+					<label for="weuiAgree" class="weui-agree">
+						<input id="weuiAgree" type="checkbox" class="weui-agree__checkbox" /><span
+							class="weui-agree__text">{{connected?"蓝牙已连接":"蓝牙已断开"}}
+						</span>
+					</label>
+				</view>
+				<view class="weui-form__opr-area">
+					<button @tap="OnClickStart" :disabled="!isInitOK" type="primary">{{isInitOK?"开始配网并发送自定义数据":"设备初始化失败或非2.4G网络"}}</button>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var xBlufi = require("@/utils/blufi/xBlufi.js");
+	export default {
+		data() {
+			return {
+				version: '2.2',
+				name: '',
+				index: 0,
+				array: [],
+				connectedDeviceId: '',
+				connected: true,
+				deviceInfo: null,
+				isInitOK: false,
+				ssid:'',
+				password: '',
+				customData: ''
+			}
+		},
+		onShow: function(options) {
+			this.initWifi()
+		},
+		onLoad: function(options) {
+			var that = this
+			this.initWifi()
+			this.name = options.name;
+			this.connectedDeviceId = options.deviceId;
+			xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent);
+			xBlufi.notifyInitBleEsp32({
+				deviceId: options.deviceId,
+			})
+			wx.showLoading({
+				title: '设备初始化中',
+			})
+		},
+		onUnload: function() {
+			let that = this
+			xBlufi.notifyConnectBle({
+				isStart: false,
+				deviceId: that.connectedDeviceId,
+				name: that.name,
+			});
+			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
+		},
+		methods: {
+			funListenDeviceMsgEvent: function(options) {
+				let that = this
+				let ssid_arry = this.array;
+				switch (options.type) {
+					case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
+						that.connected = options.result
+						if (!options.result) {
+							wx.showModal({
+								title: '很抱歉提醒你!',
+								content: '小程序与设备异常断开',
+								showCancel: false, //是否显示取消按钮
+								// success: function(res) {
+								// 	wx.navigateBack({
+								// 		url: '../search/search'
+								// 	})
+								// },
+							})
+						}
+						break;
+					case xBlufi.XBLUFI_TYPE.TYPE_CONNECT_ROUTER_RESULT:
+						wx.hideLoading();
+						if (!options.result)
+							wx.showModal({
+								title: '温馨提示',
+								content: '配网失败,请重试',
+								showCancel: false, //是否显示取消按钮
+							})
+						else {
+
+							if (options.data.progress == 100) {
+								let ssid = options.data.ssid;
+								wx.showModal({
+									title: '温馨提示',
+									// content: `成功连接路由器【${options.data.ssid}】`,
+									content: `成功连接路由器【${that.ssid}】`,
+									showCancel: false, //是否显示取消按钮
+									success: function(res) {
+										wx.setStorage({
+											key: ssid,
+											data: that.password
+										})
+										//判断是否为空
+										if (that.customData)
+											//开始发送自定义数据,此方法可以在蓝牙连接esp设备之后,随时随地调用!
+											xBlufi.notifySendCustomData({
+												customData: that.customData,
+											})
+									},
+								})
+							}
+						}
+						break;
+					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
+						wx.showModal({
+							title: '收到自定义设备数据',
+							content: `【${options.data}】`,
+							showCancel: false, //是否显示取消按钮
+						})
+						break;
+					case xBlufi.XBLUFI_TYPE.TYPE_CONNECT_NEAR_ROUTER_LISTS:
+						wx.hideLoading();
+						if ('' === options.data.SSID) break;
+						if(!ssid_arry.includes(options.data.SSID)) ssid_arry.push(options.data.SSID)
+						that.array = ssid_arry;
+						that.ssid = that.array[0];
+						that.isInitOK = true
+						break;
+					case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
+						wx.hideLoading();
+						if (options.result) {
+							xBlufi.notifySendGetNearRouterSsid()
+							wx.showLoading({
+								title: '模组获取周围WiFi列表...',
+							})
+						} else {
+							that.connected = false
+							wx.showModal({
+								title: '温馨提示',
+								content: `设备初始化失败`,
+								showCancel: false, //是否显示取消按钮
+							})
+						}
+						break;
+				}
+			},
+			OnClickStart: function() {
+				if (!this.ssid) {
+					wx.showToast({
+						title: 'SSID不能为空',
+						icon: 'none'
+					})
+					return
+				}
+				if (!this.password) {
+					wx.showToast({
+						title: '密码不能为空',
+						icon: 'none'
+					})
+					return;
+				}
+
+				wx.showLoading({
+					title: '正在配网',
+					mask: true
+				})
+				
+				xBlufi.notifySendRouterSsidAndPassword({
+					ssid: this.ssid,
+					password: this.password,
+					success: res => {
+						console.log(res, 'res');
+					},
+					fail:err=>{
+						console.log(err, 'err');
+					}
+				})
+			},
+			stringToUtf8Bytes: function(str) {
+				// 编码为百分比转义字符串(如 "%E6%88%91" => "我")
+				const encoded = encodeURIComponent(str);
+				const bytes = [];
+				let i = 0;
+				while (i < encoded.length) {
+					if (encoded[i] === '%') {
+						// 提取 % 后的两个字符作为十六进制字节(如 "%E6" => 0xE6)
+						bytes.push(parseInt(encoded.substr(i + 1, 2), 16));
+						i += 3; // 跳过 %XX 三个字符
+					} else {
+						// 普通 ASCII 字符直接转为字节(如 "A" => 0x41)
+						bytes.push(encoded.charCodeAt(i));
+						i++;
+					}
+				}
+				return bytes;
+			},
+			bytesToBase64: function(bytes) {
+				return wx.arrayBufferToBase64(new Uint8Array(bytes).buffer);
+			},
+			bindPasswordInput: function(e) {
+				this.password = e.detail.value
+			},
+			bindCustomDataInput: function(e) {
+				this.customData = e.detail.value
+			},
+			initWifi() {
+
+			},
+			bindPickerChange: function(e) {
+				this.index = e.detail.value
+				let password = wx.getStorageSync(this.array[e.detail.value])
+				this.ssid = this.array[e.detail.value]
+				this.isInitOK = true
+				this.password = password == undefined ? "" : password
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@import url(@/utils/blufi/weui.scss);
+
+	page,
+	.page {
+		height: 100%;
+	}
+
+	button {
+		width: 75%;
+	}
+</style>

+ 3 - 2
pagesMy/wifiSet.vue

@@ -121,6 +121,7 @@
 							})
 							})
 						else {
 						else {
 							if (options.data.progress == 100) {
 							if (options.data.progress == 100) {
+								uni.setStorageSync(that.wifiSSID,that.wifiPWD)
 								uni.navigateTo({
 								uni.navigateTo({
 									url:'/pagesMy/wifiSuccess'
 									url:'/pagesMy/wifiSuccess'
 								})
 								})
@@ -140,6 +141,7 @@
 						if(!ssid_arry.includes(options.data.SSID)) ssid_arry.push(options.data.SSID)
 						if(!ssid_arry.includes(options.data.SSID)) ssid_arry.push(options.data.SSID)
 						that.wifiList = ssid_arry;
 						that.wifiList = ssid_arry;
 						that.wifiSSID = that.wifiList[0];
 						that.wifiSSID = that.wifiList[0];
+						that.wifiPWD = uni.getStorageSync(that.wifiSSID)||'';
 						that.isInitOK = true
 						that.isInitOK = true
 						break;
 						break;
 					case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
 					case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
@@ -187,8 +189,7 @@
 			},
 			},
 			selectWifi(item){
 			selectWifi(item){
 				this.wifiSSID = item;
 				this.wifiSSID = item;
-				let password = wx.getStorageSync(item)
-				this.wifiPWD = password || '';
+				this.wifiPWD = uni.getStorageSync(item) || '';
 				this.show = false;
 				this.show = false;
 				this.isInitOK = true
 				this.isInitOK = true
 			}
 			}