diff --git a/app.json b/app.json
index 9994e3b..2c54782 100644
--- a/app.json
+++ b/app.json
@@ -2,7 +2,15 @@
"pages": [
"pages/index/index",
"pages/PCD01PRO/index",
- "pages/PCH0809/index"
+ "pages/PCH0809/index",
+ "pages/PCF01B/index",
+ "pages/PCF01proFRK/index",
+ "pages/PCF08/index",
+ "pages/PCJ02/index",
+ "pages/G01/index",
+ "pages/FB03/index",
+ "pages/L08/index"
+
],
"window": {
"navigationBarBackgroundColor": "#0082FE",
@@ -11,6 +19,12 @@
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
},
+ "plugins": {
+ "sdkPlugin": {
+ "version": "2.1.0",
+ "provider": "wx17e93aad47cdae1a"
+ }
+ },
"style": "v2",
"sitemapLocation": "sitemap.json"
}
diff --git a/app.wxss b/app.wxss
index e18f0d0..2354342 100644
--- a/app.wxss
+++ b/app.wxss
@@ -57,7 +57,7 @@ page {
width: 100%;
height: auto;
display: flex;
- justify-content: space-around;
+ justify-content: space-between;
flex-wrap: wrap;
}
.item{
diff --git a/pages/FB03/index.js b/pages/FB03/index.js
new file mode 100644
index 0000000..08f0469
--- /dev/null
+++ b/pages/FB03/index.js
@@ -0,0 +1,319 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+const plugin = requirePlugin("sdkPlugin").AiLink;
+Page({
+ data: {
+ devices: [],
+ connected: false,
+ name: '',
+ weight: "",
+ text: "",
+ uuid1: "",
+ uuid2: "",
+ uuid3: "",
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFE0",
+ ],
+ success: (res) => {
+ console.log('startBluetoothDevicesDiscovery success', res)
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (device.name.indexOf('AiLink_') != -1) {
+ wx.stopBluetoothDevicesDiscovery() //搜索到名称为“AiLink_”的蓝牙后,停止搜寻附近的蓝牙
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const data = {}
+ let buff = device.advertisData.slice(-6)
+ device.mac = new Uint8Array(buff) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ data[`devices[${foundDevices.length}]`] = device
+ } else {
+ data[`devices[${idx}]`] = device
+ }
+ this.setData(data)
+ }
+ })
+ })
+ },
+ // 连接低功耗蓝牙设备
+ createBLEConnection(e) {
+ this._connLoading = true
+ wx.showLoading({
+ title: '连接中',
+ })
+ setTimeout(() => {
+ if (this._connLoading) {
+ this._connLoading = false
+ wx.hideLoading()
+ }
+ }, 6000)
+ const ds = e.currentTarget.dataset
+ const index = ds.index
+ this._device = this.data.devices[index]
+ const deviceId = ds.deviceId
+ const name = ds.name
+ this.mac = ds.mac
+ wx.createBLEConnection({
+ deviceId,
+ success: (res) => {
+ this.setData({
+ connected: true,
+ name,
+ deviceId,
+ })
+ console.log("createBLEConnection:success")
+ this.onBLEConnectionStateChange()
+ this.getBLEDeviceServices(deviceId)
+ },
+ fail: res => {
+ this._connLoading = false
+ wx.hideLoading()
+ wx.showToast({
+ title: '连接失败',
+ icon: 'none'
+ })
+ }
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ text: "",
+ })
+ }
+ })
+ },
+
+ // 获取蓝牙设备的 serviceId
+ getBLEDeviceServices(deviceId) {
+ wx.getBLEDeviceServices({
+ deviceId,
+ success: (res) => {
+ for (let i = 0; i < res.services.length; i++) {
+ if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
+ wx.showLoading({
+ title: '获取设备的UUID成功',
+ })
+ this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ return
+ }
+ }
+ }
+ })
+ },
+
+ // 获取蓝牙设备某个服务中所有特征值(characteristic)
+ /**
+ * read: true读,write: true写,notify: true广播
+ */
+ getBLEDeviceCharacteristics(deviceId, serviceId) {
+ let that = this
+ this._deviceId = deviceId
+ this._serviceId = serviceId
+ this._device.serviceId = serviceId
+ wx.getBLEDeviceCharacteristics({
+ deviceId,
+ serviceId,
+ success: (res) => {
+ console.log("特征值:", res)
+ for (let i = 0; i < res.characteristics.length; i++) {
+ let item = res.characteristics[i];
+ if (item.uuid.indexOf('0000FFE1') != -1) {
+ that.data.uuid1 = item.uuid //主服务 UUID
+ } else if (item.uuid.indexOf('0000FE2') != -1) {
+ that.data.uuid2 = item.uuid //写入设置
+ } else if (item.uuid.indexOf('0000FFE3') != -1) {
+ that.data.uuid3 = item.uuid //监听数据
+ }
+ }
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid2,
+ state: true,
+ })
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid3,
+ state: true,
+ })
+ plugin.initPlugin(res.characteristics, this._device)
+ wx.onBLECharacteristicValueChange((characteristic) => {
+ let bleData = plugin.parseBleData(characteristic.value)
+ let dw1 = "kg"
+ if (bleData.status == 0) {
+ console.log("握手成功")
+ } else if (bleData.status == 1) {
+ let payload = ab2hex(bleData.data, '')
+ let typeInfo = payload.substring(0, 2)
+ let unit = payload.substring(6, 8) // 单位
+ let num = payload.substring(8, 9) //正负数
+ let dot = payload.substring(9, 10) //小数点
+ let data = parseInt(payload.substring(2, 6), 16)
+ if (unit == "01") {
+ dw1 = "斤"
+ }
+ if (unit == "04") {
+ dw1 = "lb"
+ }
+ if (unit == "05") {
+ dw1 = "g"
+ }
+ if (unit == "06") {
+ dw1 = 'lb'
+ }
+ //
+ if (num == "0") {
+ that.setData({
+ text: "重量为正数"
+ })
+ }
+ if (num == "1") {
+ that.setData({
+ text: "重量为负数"
+ })
+ }
+ //
+ if (dot == "1") {
+ data = data / 10
+ }
+ if (dot == "2") {
+ data = data / 100
+ }
+ if (dot == "3") {
+ data = data / 1000
+ }
+ if (typeInfo == "01") {
+ that.setData({
+ weight: "稳定体重是" + data + dw1
+ })
+ }
+ if (typeInfo == "02") {
+ that.setData({
+ weight: "实时体重是:" + data + dw1
+ })
+ }
+ }
+ })
+
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+ handleIsNum() {
+ let that = this
+ let str = [0x83, 0x01]
+ plugin.sendDataOfA7(str)
+ },
+ // 归零
+ handleIsLing() {
+ let str = [0x83, 0x00]
+ console.log("归零指令", str)
+ plugin.sendDataOfA7(str)
+ },
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '断开蓝牙模块',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ text: "",
+ })
+ },
+ // 断开与低功耗蓝牙设备的连接
+ closeBLEConnection() {
+ wx.closeBLEConnection({
+ deviceId: this._deviceId
+ })
+ wx.showToast({
+ title: '断开蓝牙连接',
+ icon: 'none'
+ })
+ this.setData({
+ connected: false,
+ devices: [],
+ text: "",
+ weight: "",
+ })
+ },
+
+});
diff --git a/pages/FB03/index.json b/pages/FB03/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/FB03/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/FB03/index.wxml b/pages/FB03/index.wxml
new file mode 100644
index 0000000..994ce38
--- /dev/null
+++ b/pages/FB03/index.wxml
@@ -0,0 +1,42 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{weight}}
+ {{text}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/FB03/index.wxss b/pages/FB03/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/FB03/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/G01/index.js b/pages/G01/index.js
new file mode 100644
index 0000000..4e06d3a
--- /dev/null
+++ b/pages/G01/index.js
@@ -0,0 +1,154 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+Page({
+ data: {
+ connected: false,
+ height: "",
+ devices: [],
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFF0",
+ ],
+ success: (res) => {
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ let that = this
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (!device.name && !device.localName) {
+ return
+ }
+ if (device.name.indexOf("WSD") !== -1) {
+ let value = ab2hex(device.advertisData, "")
+ let type = value.substring(22, 24)
+ let num = value.substring(28, 29)
+ let dw = value.substring(29, 30)
+ let data = parseInt(value.substring(24, 28), 16)
+ let unit = "cm"
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const dataT = {}
+ let buffer = device.advertisData.slice(3, 9)
+ device.mac = new Uint8Array(buffer) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ dataT[`devices[${foundDevices.length}]`] = device
+ } else {
+ dataT[`devices[${idx}]`] = device
+ }
+ this.setData(dataT)
+ if (dw == "1") {
+ unit = "FT"
+ data = data * 2.54
+ }
+ if (num == "1") {
+ data = data / 10
+ }
+ if (num == "2") {
+ data = data / 100
+ }
+ if (num == "3") {
+ data = data / 1000
+ }
+ if (type == "01") {
+ that.setData({
+ height: data + unit
+ })
+ return
+ }
+ }
+
+ })
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ wx.stopBluetoothDevicesDiscovery();
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ height: "",
+ })
+ }
+ })
+ },
+
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.stopBluetoothDevicesDiscovery();
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '结束流程',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ height: "",
+ })
+ },
+});
diff --git a/pages/G01/index.json b/pages/G01/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/G01/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/G01/index.wxml b/pages/G01/index.wxml
new file mode 100644
index 0000000..312df1d
--- /dev/null
+++ b/pages/G01/index.wxml
@@ -0,0 +1,38 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{height}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/G01/index.wxss b/pages/G01/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/G01/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/L08/index.js b/pages/L08/index.js
new file mode 100644
index 0000000..23022f2
--- /dev/null
+++ b/pages/L08/index.js
@@ -0,0 +1,353 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+const plugin = requirePlugin("sdkPlugin").AiLink;
+Page({
+ data: {
+ devices: [],
+ connected: false,
+ name: '',
+ weight: "",
+ text: "",
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ uuid1: null,
+ uuid2: null,
+ uuid3: null,
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFE0",
+ ],
+ success: (res) => {
+ console.log('startBluetoothDevicesDiscovery success', res)
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (!device.name && !device.localName) {
+ return
+ }
+ if (device.name.indexOf('AiLink_') != -1) {
+ wx.stopBluetoothDevicesDiscovery() //搜索到名称为“AiLink_”的蓝牙后,停止搜寻附近的蓝牙
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const data = {}
+ let buff = device.advertisData.slice(-6)
+ device.mac = new Uint8Array(buff) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ data[`devices[${foundDevices.length}]`] = device
+ } else {
+ data[`devices[${idx}]`] = device
+ }
+ this.setData(data)
+ }
+ })
+ })
+ },
+ // 连接低功耗蓝牙设备
+ createBLEConnection(e) {
+ wx.showLoading({
+ title: '连接中',
+ })
+ const ds = e.currentTarget.dataset
+ const index = ds.index
+ this._device = this.data.devices[index]
+ const deviceId = ds.deviceId
+ const name = ds.name
+ this.mac = ds.mac
+ wx.createBLEConnection({
+ deviceId,
+ success: (res) => {
+ this.setData({
+ connected: true,
+ name,
+ deviceId,
+ })
+ console.log("createBLEConnection:success")
+ this.onBLEConnectionStateChange()
+ this.getBLEDeviceServices(deviceId)
+ },
+ fail: res => {
+ wx.hideLoading()
+ wx.showToast({
+ title: '连接失败',
+ icon: 'none'
+ })
+ }
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ text: "",
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ })
+ }
+ })
+ },
+
+ // 获取蓝牙设备的 serviceId
+ getBLEDeviceServices(deviceId) {
+ wx.getBLEDeviceServices({
+ deviceId,
+ success: (res) => {
+ for (let i = 0; i < res.services.length; i++) {
+ if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
+ wx.showLoading({
+ title: '获取设备的UUID成功',
+ })
+ this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ return
+ }
+ }
+ }
+ })
+ },
+
+ // 获取蓝牙设备某个服务中所有特征值(characteristic)
+ /**
+ * read: true读,write: true写,notify: true广播
+ */
+ getBLEDeviceCharacteristics(deviceId, serviceId) {
+ let that = this
+ that._deviceId = deviceId
+ that._serviceId = serviceId
+ that._device.serviceId = serviceId
+ wx.hideLoading()
+ 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.uuid.indexOf('0000FFE1') != -1) {
+ that.data.uuid1 = item.uuid //主服务 UUID
+ } else if (item.uuid.indexOf('0000FFE2') != -1) {
+ that.data.uuid2 = item.uuid //写入设置
+ } else if (item.uuid.indexOf('0000FFE3') != -1) {
+ that.data.uuid3 = item.uuid //监听数据
+ }
+ }
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid2,
+ state: true,
+ })
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid3,
+ state: true,
+ })
+ plugin.initPlugin(res.characteristics, this._device)
+ wx.onBLECharacteristicValueChange((characteristic) => {
+ let bleData = plugin.parseBleData(characteristic.value)
+ if (bleData.status == 0) {
+ console.log("握手成功")
+ } else if (bleData.status == 1) {
+ let payload = ab2hex(bleData.data, '')
+ let dw1 = "kg"
+ let type = payload.substring(0, 2)
+ let typeInfo = payload.substring(2, 4)
+ if (type == "01") { //体脂模式
+ let data = parseInt(payload.substring(4, 10), 16)
+ let num = payload.substring(10, 11)
+ let dw = payload.substring(11, 12)
+ if (dw == "1") {
+ dw1 = "斤"
+ }
+ if (num == "1") {
+ data = data / 10
+ }
+ if (num == "2") {
+ data = data / 100
+ }
+ if (num == "3") {
+ data = data / 1000
+ }
+ if (typeInfo == "01") {
+ that.setData({
+ weight: "实时体重是:" + data + dw1
+ })
+ }
+ if (typeInfo == "02") {
+ that.setData({
+ weight: "稳定体重是:" + data + dw1
+ })
+ }
+ }
+ if (type == "02") {
+ console.log("阻抗类型:", payload, type, typeInfo, parseInt(payload
+ .substring(6, 14), 16)) //阻抗模式
+ if (typeInfo == "02") {
+ that.setData({
+ imp7: "阻抗测量失败"
+ })
+ }
+ if (typeInfo == "03") {
+ let mcu = payload.substring(4, 6)
+ if (mcu == "02") {
+ that.setData({
+ imp2: "左手阻抗:" + parseInt(payload.substring(
+ 6, 14), 16)
+ })
+ }
+ if (mcu == "03") {
+ that.setData({
+ imp3: "右手阻抗:" + parseInt(payload.substring(
+ 6, 14), 16)
+ })
+ }
+ if (mcu == "04") {
+ that.setData({
+ imp4: "左脚阻抗:" + parseInt(payload.substring(
+ 6, 14), 16)
+ })
+ }
+ if (mcu == "05") {
+ that.setData({
+ imp5: "右脚阻抗:" + parseInt(payload.substring(
+ 6, 14), 16)
+ })
+ }
+
+ if (mcu == "07") {
+ that.setData({
+ imp7: "躯干阻抗:" + parseInt(payload.substring(
+ 6, 14), 16)
+ })
+ }
+ }
+ }
+ if (type == "0f") {
+ that.setData({
+ text: "测量完成"
+ })
+ }
+ }
+ })
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '断开蓝牙模块',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ text: "",
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ })
+ },
+ // 断开与低功耗蓝牙设备的连接
+ closeBLEConnection() {
+ wx.closeBLEConnection({
+ deviceId: this._deviceId
+ })
+ wx.showToast({
+ title: '断开蓝牙连接',
+ icon: 'none'
+ })
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ text: "",
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ })
+ },
+
+});
diff --git a/pages/L08/index.json b/pages/L08/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/L08/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/L08/index.wxml b/pages/L08/index.wxml
new file mode 100644
index 0000000..b847b4f
--- /dev/null
+++ b/pages/L08/index.wxml
@@ -0,0 +1,46 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{weight}}
+ {{text}}
+ {{imp2}}
+ {{imp3}}
+ {{imp4}}
+ {{imp5}}
+ {{imp7}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/L08/index.wxss b/pages/L08/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/L08/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/PCD01PRO/index.js b/pages/PCD01PRO/index.js
index 5020739..f076b62 100644
--- a/pages/PCD01PRO/index.js
+++ b/pages/PCD01PRO/index.js
@@ -52,8 +52,9 @@ Page({
}
this._discoveryStarted = true
wx.startBluetoothDevicesDiscovery({
- allowDuplicatesKey: true, //是否允许重复上报同一设备
- services: [ //要搜索蓝牙设备主 service 的 uuid 列表
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
"FFE0",
],
success: (res) => {
@@ -221,7 +222,7 @@ Page({
characteristicId: notifyId,
success(res) {
wx.onBLECharacteristicValueChange(function(res) {
- let value = ab2hex(res.value);
+ let value = ab2hex(res.value,"");
let num = value.substring(18, 19)
let dw = value.substring(19, 20)
let typeInfo = value.substring(10, 12)
diff --git a/pages/PCF01B/index.js b/pages/PCF01B/index.js
new file mode 100644
index 0000000..1319dd6
--- /dev/null
+++ b/pages/PCF01B/index.js
@@ -0,0 +1,339 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+
+Page({
+ data: {
+ devices: [],
+ connected: false,
+ cmd: '',
+ name: '',
+ weight: "",
+ height:"",
+ text: "",
+ imp: "",
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFE0",
+ ],
+ success: (res) => {
+ console.log('startBluetoothDevicesDiscovery success', res)
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (device.name.indexOf('AiLink_') != -1) {
+ wx.stopBluetoothDevicesDiscovery() //搜索到名称为“AiLink_”的蓝牙后,停止搜寻附近的蓝牙
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const data = {}
+ let buff = device.advertisData.slice(-6)
+ device.mac = new Uint8Array(buff) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ data[`devices[${foundDevices.length}]`] = device
+ } else {
+ data[`devices[${idx}]`] = device
+ }
+ console.log("131", data)
+ this.setData(data)
+ }
+ })
+ })
+ },
+ // 连接低功耗蓝牙设备
+ createBLEConnection(e) {
+ this._connLoading = true
+ wx.showLoading({
+ title: '连接中',
+ })
+ setTimeout(() => {
+ if (this._connLoading) {
+ this._connLoading = false
+ wx.hideLoading()
+ }
+ }, 6000)
+ const ds = e.currentTarget.dataset
+ const index = ds.index
+ this._device = this.data.devices[index]
+ const deviceId = ds.deviceId
+ const name = ds.name
+ this.mac = ds.mac
+ wx.createBLEConnection({
+ deviceId,
+ success: (res) => {
+ this.setData({
+ connected: true,
+ name,
+ deviceId,
+ })
+ console.log("createBLEConnection:success")
+ this.onBLEConnectionStateChange()
+ this.getBLEDeviceServices(deviceId)
+ },
+ fail: res => {
+ this._connLoading = false
+ wx.hideLoading()
+ wx.showToast({
+ title: '连接失败',
+ icon: 'none'
+ })
+ }
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ height:"",
+ text: "",
+ imp: ""
+ })
+ }
+ })
+ },
+
+ // 获取蓝牙设备的 serviceId
+ getBLEDeviceServices(deviceId) {
+ wx.getBLEDeviceServices({
+ deviceId,
+ success: (res) => {
+ for (let i = 0; i < res.services.length; i++) {
+ if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
+ wx.showLoading({
+ title: '获取设备的UUID成功',
+ })
+ this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ return
+ }
+ }
+ }
+ })
+ },
+
+ // 获取蓝牙设备某个服务中所有特征值(characteristic)
+ /**
+ * read: true读,write: true写,notify: true广播
+ */
+ getBLEDeviceCharacteristics(deviceId, serviceId) {
+ this._deviceId = deviceId
+ this._serviceId = serviceId
+ this._device.serviceId = serviceId
+ wx.getBLEDeviceCharacteristics({
+ deviceId,
+ serviceId,
+ success: (res) => {
+ console.log('getBLEDeviceCharacteristics success', res.characteristics)
+ wx.showLoading({
+ title: '获取特征值成功',
+ })
+ //FFE1:write: true, FFE2:notify: true,FFE3:read: true, write: true, notify: true,
+ for (let i = 0; i < res.characteristics.length; i++) {
+ let characteristic = res.characteristics[i];
+ if (characteristic.uuid.indexOf("FFE2") != -1) {
+ if (characteristic.properties.notify == true) {
+ this.notifyBLECharacteristicValue(deviceId, serviceId, characteristic
+ .uuid)
+ console.log("ffe2服务的notifyId获取成功")
+ }
+ if (characteristic.properties.read == true) {
+ that.readId = characteristic.uuid
+ }
+ if (characteristic.properties.write == true) {
+ that.writeId = characteristic.uuid
+ }
+ break;
+ }
+ }
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+ //解析蓝牙返回数据
+ notifyBLECharacteristicValue(deviceId, serviceId, notifyId) {
+ let that = this
+ wx.notifyBLECharacteristicValueChange({
+ state: true, // 启用 notify 功能
+ deviceId: deviceId,
+ serviceId: serviceId,
+ characteristicId: notifyId,
+ success(res) {
+ wx.onBLECharacteristicValueChange(function(res) {
+ let value = ab2hex(res.value, "");
+ let num = value.substring(18, 19)
+ let dw = value.substring(19, 20)
+ let type = value.substring(8, 10)
+ let typeInfo = value.substring(10, 12)
+ if (type == '10') {
+ let data = parseInt(value.substring(13, 18), 16)
+ let dw1 = "kg"
+ if (dw == "1") {
+ dw1 = "斤"
+ console.log("体重单位:斤")
+ }
+ if (dw == "4") {
+ dw1 = "st:lb"
+ console.log("体重单位:st:lb,计算方法:1 * data + 5")
+ }
+ if (dw == "6") {
+ dw1 = "lb"
+ console.log("体重单位:lb")
+ }
+ if (num == "1") {
+ data = parseInt(value.substring(13, 18), 16) / 10
+ console.log("体重小数点后1位")
+ }
+ if (num == "2") {
+ data = parseInt(value.substring(13, 18), 16) / 100
+ console.log("体重小数点后2位")
+ }
+ if (num == "3") {
+ data = parseInt(value.substring(13, 18), 16) / 1000
+ console.log("体重小数点后3位")
+ }
+ if (typeInfo == "01") {
+ console.log("实时体重:", data)
+ that.setData({
+ weight: "实时体重是:" + data + dw1
+ })
+ }
+ if (typeInfo == "02") {
+ console.log("稳定体重:", data)
+ that.setData({
+ weight: "稳定体重是:" + data + dw1
+ })
+ }
+ }
+ if (type == "14") { //身高模式
+ let height = parseInt(value.substring(10, 14), 16) / 10
+ that.setData({
+ height: "身高是:" + height
+ })
+ }
+ if (type == '11') {
+ console.log("阻抗值:", value)
+ if (typeInfo == "03" || typeInfo == "04") {
+ let imp = parseInt(value.substring(17, 22), 16)
+ that.setData({
+ imp: "阻抗值:" + imp
+ })
+ }
+
+ }
+ if (value.toUpperCase() == "A90026023000589A") {
+ console.log("测量完成")
+ that.setData({
+ text: "测量完成"
+ })
+ }
+ });
+ },
+ fail(res) {
+ console.log("测量失败", res.value);
+ }
+ });
+ },
+
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '断开蓝牙模块',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ height:"",
+ text: "",
+ imp: ""
+ })
+ },
+ // 断开与低功耗蓝牙设备的连接
+ closeBLEConnection() {
+ wx.closeBLEConnection({
+ deviceId: this._deviceId
+ })
+ wx.showToast({
+ title: '断开蓝牙连接',
+ icon: 'none'
+ })
+ this.setData({
+ connected: false,
+ devices: [],
+ text: "",
+ height:"",
+ weight: "",
+ imp: ""
+ })
+ },
+
+});
diff --git a/pages/PCF01B/index.json b/pages/PCF01B/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/PCF01B/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/PCF01B/index.wxml b/pages/PCF01B/index.wxml
new file mode 100644
index 0000000..230e658
--- /dev/null
+++ b/pages/PCF01B/index.wxml
@@ -0,0 +1,43 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{weight}}
+ {{height}}
+ {{imp}}
+ {{text}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/PCF01B/index.wxss b/pages/PCF01B/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/PCF01B/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/PCF01proFRK/index.js b/pages/PCF01proFRK/index.js
new file mode 100644
index 0000000..933670f
--- /dev/null
+++ b/pages/PCF01proFRK/index.js
@@ -0,0 +1,287 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+const plugin = requirePlugin("sdkPlugin").AiLink;
+Page({
+ data: {
+ devices: [],
+ connected: false,
+ cmd: '',
+ name: '',
+ weight: "",
+ height: "",
+ text: "",
+ imp: "",
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFE0",
+ ],
+ success: (res) => {
+ console.log('startBluetoothDevicesDiscovery success', res)
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (!device.name && !device.localName) {
+ return
+ }
+ if (device.name.indexOf('AiLink_') != -1) {
+ wx.stopBluetoothDevicesDiscovery() //搜索到名称为“AiLink_”的蓝牙后,停止搜寻附近的蓝牙
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const data = {}
+ let buff = device.advertisData.slice(-6)
+ device.mac = new Uint8Array(buff) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ data[`devices[${foundDevices.length}]`] = device
+ } else {
+ data[`devices[${idx}]`] = device
+ }
+ this.setData(data)
+ }
+ })
+ })
+ },
+ // 连接低功耗蓝牙设备
+ createBLEConnection(e) {
+ wx.showLoading({
+ title: '连接中',
+ })
+ const ds = e.currentTarget.dataset
+ const index = ds.index
+ this._device = this.data.devices[index]
+ const deviceId = ds.deviceId
+ const name = ds.name
+ this.mac = ds.mac
+ wx.createBLEConnection({
+ deviceId,
+ success: (res) => {
+ this.setData({
+ connected: true,
+ name,
+ deviceId,
+ })
+ console.log("createBLEConnection:success")
+ this.onBLEConnectionStateChange()
+ this.getBLEDeviceServices(deviceId)
+ },
+ fail: res => {
+ wx.hideLoading()
+ wx.showToast({
+ title: '连接失败',
+ icon: 'none'
+ })
+ }
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ height: "",
+ text: "",
+ imp: ""
+ })
+ }
+ })
+ },
+
+ // 获取蓝牙设备的 serviceId
+ getBLEDeviceServices(deviceId) {
+ wx.getBLEDeviceServices({
+ deviceId,
+ success: (res) => {
+ for (let i = 0; i < res.services.length; i++) {
+ if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
+ wx.showLoading({
+ title: '获取设备的UUID成功',
+ })
+ this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ return
+ }
+ }
+ }
+ })
+ },
+
+ // 获取蓝牙设备某个服务中所有特征值(characteristic)
+ /**
+ * read: true读,write: true写,notify: true广播
+ */
+ getBLEDeviceCharacteristics(deviceId, serviceId) {
+ let that = this
+ that._deviceId = deviceId
+ that._serviceId = serviceId
+ that._device.serviceId = serviceId
+ wx.hideLoading()
+ wx.getBLEDeviceCharacteristics({
+ deviceId,
+ serviceId,
+ success: (res) => {
+ console.log('getBLEDeviceCharacteristics success', res.characteristics)
+ // 初始化插件
+ plugin.initPlugin(res.characteristics, that._device)
+
+ wx.onBLECharacteristicValueChange((characteristic) => {
+ let bleData = plugin.parseBleData(characteristic.value)
+ let dw1 = "kg"
+ if (bleData.status == 0) {
+ console.log("握手成功")
+ } else if (bleData.status == 1) {
+ let payload = ab2hex(bleData.data, '')
+ let type = payload.substring(0, 2)
+ let typeInfo = payload.substring(4, 6)
+ console.log("payload", payload)
+ if (type == "10" || type == "40") { //体脂模式
+ let data = parseInt(payload.substring(6, 12), 16)
+ let num = payload.substring(12, 13)
+ let dw = payload.substring(13, 14)
+ if (dw == "1") {
+ dw1 = "斤"
+ }
+ if (num == "1") {
+ data = data / 10
+ }
+ if (num == "2") {
+ data = data / 100
+ }
+ if (num == "3") {
+ data = data / 1000
+ }
+ if (typeInfo == "01") {
+ that.setData({
+ weight: "实时体重是:" + data + dw1
+ })
+ }
+ if (typeInfo == "02") {
+ that.setData({
+ weight: "稳定体重是:" + data + dw1
+ })
+ }
+ }
+ if (type == "14" || type == "41") { //身高模式
+ let height = parseInt(payload.substring(4, 8), 16)
+ that.setData({
+ height: "身高是:" + height
+ })
+ }
+ if (type == "11") { //阻抗模式
+ if (typeInfo == "03" || typeInfo == "04") {
+ let imp = parseInt(payload.substring(8, 12), 16)
+ console.log("imp", payload, imp)
+ that.setData({
+ imp: "阻抗值:" + imp
+ })
+ }
+ }
+ }
+ })
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '断开蓝牙模块',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ height: "",
+ text: "",
+ imp: ""
+ })
+ },
+ // 断开与低功耗蓝牙设备的连接
+ closeBLEConnection() {
+ wx.closeBLEConnection({
+ deviceId: this._deviceId
+ })
+ wx.showToast({
+ title: '断开蓝牙连接',
+ icon: 'none'
+ })
+ this.setData({
+ connected: false,
+ devices: [],
+ text: "",
+ height: "",
+ weight: "",
+ imp: ""
+ })
+ },
+
+});
diff --git a/pages/PCF01proFRK/index.json b/pages/PCF01proFRK/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/PCF01proFRK/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/PCF01proFRK/index.wxml b/pages/PCF01proFRK/index.wxml
new file mode 100644
index 0000000..230e658
--- /dev/null
+++ b/pages/PCF01proFRK/index.wxml
@@ -0,0 +1,43 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{weight}}
+ {{height}}
+ {{imp}}
+ {{text}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/PCF01proFRK/index.wxss b/pages/PCF01proFRK/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/PCF01proFRK/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/PCF08/index.js b/pages/PCF08/index.js
new file mode 100644
index 0000000..5af8062
--- /dev/null
+++ b/pages/PCF08/index.js
@@ -0,0 +1,406 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+Page({
+ data: {
+ devices: [],
+ connected: false,
+ cmd: '',
+ name: '',
+ weight: "",
+ height: "",
+ text: "",
+ imp0: '',
+ imp1: '',
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ uuid1: null,
+ uuid2: null,
+ uuid3: null,
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFE0",
+ ],
+ success: (res) => {
+ console.log('startBluetoothDevicesDiscovery success', res)
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (!device.name && !device.localName) {
+ return
+ }
+ if (device.name.indexOf('AiLink_') != -1) {
+ wx.stopBluetoothDevicesDiscovery() //搜索到名称为“AiLink_”的蓝牙后,停止搜寻附近的蓝牙
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const data = {}
+ let buff = device.advertisData.slice(-6)
+ device.mac = new Uint8Array(buff) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ data[`devices[${foundDevices.length}]`] = device
+ } else {
+ data[`devices[${idx}]`] = device
+ }
+ this.setData(data)
+ }
+ })
+ })
+ },
+ // 连接低功耗蓝牙设备
+ createBLEConnection(e) {
+ wx.showLoading({
+ title: '连接中',
+ })
+ const ds = e.currentTarget.dataset
+ const index = ds.index
+ this._device = this.data.devices[index]
+ const deviceId = ds.deviceId
+ const name = ds.name
+ this.mac = ds.mac
+ wx.createBLEConnection({
+ deviceId,
+ success: (res) => {
+ this.setData({
+ connected: true,
+ name,
+ deviceId,
+ })
+ console.log("createBLEConnection:success")
+ this.onBLEConnectionStateChange()
+ this.getBLEDeviceServices(deviceId)
+ },
+ fail: res => {
+ wx.hideLoading()
+ wx.showToast({
+ title: '连接失败',
+ icon: 'none'
+ })
+ }
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ height: "",
+ text: "",
+ imp: "",
+ imp0: '',
+ imp1: '',
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ })
+ }
+ })
+ },
+
+ // 获取蓝牙设备的 serviceId
+ getBLEDeviceServices(deviceId) {
+ wx.getBLEDeviceServices({
+ deviceId,
+ success: (res) => {
+ for (let i = 0; i < res.services.length; i++) {
+ if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
+ wx.showLoading({
+ title: '获取设备的UUID成功',
+ })
+ this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ return
+ }
+ }
+ }
+ })
+ },
+
+ // 获取蓝牙设备某个服务中所有特征值(characteristic)
+ /**
+ * read: true读,write: true写,notify: true广播
+ */
+ getBLEDeviceCharacteristics(deviceId, serviceId) {
+ let that = this
+ that._deviceId = deviceId
+ that._serviceId = serviceId
+ that._device.serviceId = serviceId
+ wx.hideLoading()
+ wx.getBLEDeviceCharacteristics({
+ deviceId,
+ serviceId,
+ success: (res) => {
+ console.log('getBLEDeviceCharacteristics success', res.characteristics)
+ wx.showLoading({
+ title: '获取特征值成功',
+ })
+ for (let i = 0; i < res.characteristics.length; i++) {
+ let item = res.characteristics[i];
+ if (item.uuid.indexOf('FFE1') != -1) {
+ that.data.uuid1 = item.uuid //主服务 UUID
+ } else if (item.uuid.indexOf('FFE2') != -1) {
+ that.data.uuid2 = item.uuid //写入设置
+ that.notifyBLECharacteristicValue(deviceId, serviceId, item.uuid)
+ } else if (item.uuid.indexOf('FFE3') != -1) {
+ that.data.uuid3 = item.uuid //监听数据
+ }
+ }
+ wx.hideLoading()
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+ //解析蓝牙返回数据
+ notifyBLECharacteristicValue(deviceId, serviceId, notifyId) {
+ let that = this
+ wx.notifyBLECharacteristicValueChange({
+ state: true, // 启用 notify 功能
+ deviceId: deviceId,
+ serviceId: serviceId,
+ characteristicId: notifyId,
+ success(res) {
+ wx.onBLECharacteristicValueChange((characteristic) => {
+ let value = ab2hex(characteristic.value, "");
+ let num = value.substring(18, 19)
+ let dw = value.substring(19, 20)
+ let type = value.substring(8, 10)
+ let typeInfo = value.substring(10, 12)
+ console.log("type", type)
+ if (type == "01") { // 称重模式
+ let data = parseInt(value.substring(13, 18), 16)
+ let dw1 = "kg"
+ if (dw == "1") {
+ dw1 = "斤"
+ }
+ if (dw == "4") {
+ dw1 = "st:lb"
+ }
+ if (dw == "6") {
+ dw1 = "lb"
+ }
+ if (num == "1") {
+ data = parseInt(value.substring(13, 18), 16) / 10
+ }
+ if (num == "2") {
+ data = parseInt(value.substring(13, 18), 16) / 100
+ }
+ if (num == "3") {
+ data = parseInt(value.substring(13, 18), 16) / 1000
+ }
+ if (typeInfo == "01") {
+ that.setData({
+ weight: "实时体重是:" + data + dw1
+ })
+ }
+ if (typeInfo == "02") {
+ that.setData({
+ weight: "稳定体重是:" + data + dw1
+ })
+ }
+ }
+ if (type == "02") { //阻抗
+ let mcu = value.substring(12, 14)
+ console.log("typeInfo", typeInfo)
+ if (typeInfo == "02") {
+ that.setData({
+ imp0: "阻抗值测量失败"
+ })
+ } else if (typeInfo == "03") {
+ if (mcu == "00") {
+ let imp0 = parseInt(value.substring(14, 22), 16)
+ that.setData({
+ imp0: "双脚阻抗:" + imp0
+ })
+ }
+ if (mcu == "01") {
+ let imp1 = parseInt(value.substring(14, 22), 16)
+ that.setData({
+ imp1: "双手阻抗:" + imp1
+ })
+ console.log("双手", imp1)
+ }
+ if (mcu == "02") {
+ let imp2 = parseInt(value.substring(14, 22), 16)
+ that.setData({
+ imp2: "左手阻抗:" + imp2
+ })
+ console.log("左手阻抗", imp2)
+ }
+ if (mcu == "03") {
+ let imp3 = parseInt(value.substring(14, 22), 16)
+ that.setData({
+ imp3: "右手阻抗:" + imp3
+ })
+ console.log("右手阻抗", imp3)
+ }
+ if (mcu == "04") {
+ let imp4 = parseInt(value.substring(14, 22), 16)
+ that.setData({
+ imp4: "左脚阻抗:" + imp4
+ })
+ console.log("左脚阻抗", imp4)
+ }
+ if (mcu == "05") {
+ let imp5 = parseInt(value.substring(14, 22), 16)
+ that.setData({
+ imp5: "右脚阻抗:" + imp5
+ })
+ console.log("右脚阻抗", imp5)
+ }
+ if (mcu == "07") {
+ let imp7 = parseInt(value.substring(14, 22), 16)
+ that.setData({
+ imp7: "右全身阻抗:" + imp7
+ })
+ }
+ }
+ }
+ if (type == "05") { //身高
+ let height = parseInt(value.substring(14, 18), 16) / 10
+ let dw1 = "cm"
+ if (dw == "01") {
+ dw1 = "inch"
+ }
+ if (dw == "02") {
+ dw1 = "ft-in"
+ }
+ if (typeInfo == "02") {
+ that.setData({
+ height: "身高:" + height + "单位:" + dw1
+ })
+ } else if (typeInfo == "03" || typeInfo == "04") {
+ that.setData({
+ height: "身高测量失败"
+ })
+ }
+
+ }
+ })
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '断开蓝牙模块',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ height: "",
+ text: "",
+ imp: "",
+ imp0: '',
+ imp1: '',
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ })
+ },
+ // 断开与低功耗蓝牙设备的连接
+ closeBLEConnection() {
+ wx.closeBLEConnection({
+ deviceId: this._deviceId
+ })
+ wx.showToast({
+ title: '断开蓝牙连接',
+ icon: 'none'
+ })
+ this.setData({
+ connected: false,
+ devices: [],
+ text: "",
+ height: "",
+ weight: "",
+ imp: "",
+ imp0: '',
+ imp1: '',
+ imp2: '',
+ imp3: '',
+ imp4: '',
+ imp5: '',
+ imp7: '',
+ })
+ },
+
+});
diff --git a/pages/PCF08/index.json b/pages/PCF08/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/PCF08/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/PCF08/index.wxml b/pages/PCF08/index.wxml
new file mode 100644
index 0000000..47ca9b9
--- /dev/null
+++ b/pages/PCF08/index.wxml
@@ -0,0 +1,48 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{weight}}
+ {{height}}
+ {{imp0}}
+ {{imp1}}
+ {{imp2}}
+ {{imp3}}
+ {{imp4}}
+ {{imp5}}
+ {{imp7}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/PCF08/index.wxss b/pages/PCF08/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/PCF08/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/PCH0809/index - 副本.js b/pages/PCH0809/index - 副本.js
new file mode 100644
index 0000000..0e89c2d
--- /dev/null
+++ b/pages/PCH0809/index - 副本.js
@@ -0,0 +1,430 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+
+Page({
+ data: {
+ devices: [],
+ connected: false,
+ cmd: '',
+ name: '',
+ weight: "",
+ text: "",
+ imp: "",
+ height: '',
+ isType: false,
+ sendVal: true,
+ pwdModal: false,
+ uuid1: null,
+ uuid2: null,
+ uuid3: null,
+ deviceId: null,
+ serviceId: null
+ },
+ onLoad: function() {
+ // let value = "A90026051401020001439A";
+ // let num = value.substring(18, 19)
+ // let type = value.substring(8, 10)
+ // let imp = parseInt(value.substring(10, 14), 16)
+ // console.log("16进制转化:", value, num, type, imp);
+ },
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFE0",
+ ],
+ success: (res) => {
+ console.log('startBluetoothDevicesDiscovery success', res)
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (device.name.indexOf('AiLink_') != -1) {
+ wx.stopBluetoothDevicesDiscovery() //搜索到名称为“AiLink_”的蓝牙后,停止搜寻附近的蓝牙
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const data = {}
+ let buff = device.advertisData.slice(-6)
+ device.mac = new Uint8Array(buff) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ data[`devices[${foundDevices.length}]`] = device
+ } else {
+ data[`devices[${idx}]`] = device
+ }
+ console.log("131", data)
+ this.setData(data)
+ }
+ })
+ })
+ },
+ // 连接低功耗蓝牙设备
+ createBLEConnection(e) {
+ this._connLoading = true
+ wx.showLoading({
+ title: '连接中',
+ })
+ setTimeout(() => {
+ if (this._connLoading) {
+ this._connLoading = false
+ wx.hideLoading()
+ }
+ }, 6000)
+ const ds = e.currentTarget.dataset
+ const index = ds.index
+ this._device = this.data.devices[index]
+ const deviceId = ds.deviceId
+ const name = ds.name
+ this.mac = ds.mac
+ wx.createBLEConnection({
+ deviceId,
+ success: (res) => {
+ this.setData({
+ connected: true,
+ name,
+ deviceId,
+ })
+ console.log("createBLEConnection:success")
+ this.onBLEConnectionStateChange()
+ this.getBLEDeviceServices(deviceId)
+ },
+ fail: res => {
+ this._connLoading = false
+ wx.showToast({
+ title: '连接失败',
+ duration: 2000,
+ icon: 'none'
+ })
+ }
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ duration: 2000,
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ isType: false,
+ devices: [],
+ weight: "",
+ text: "",
+ imp: ""
+ })
+ }
+ })
+ },
+
+ // 获取蓝牙设备的 serviceId
+ getBLEDeviceServices(deviceId) {
+ wx.getBLEDeviceServices({
+ deviceId,
+ success: (res) => {
+ for (let i = 0; i < res.services.length; i++) {
+ if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
+ this.data.serviceId = res.services[i].uuid
+ this.data.deviceId = deviceId
+ this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ wx.showToast({
+ title: '获取设备的UUID成功',
+ duration: 2000,
+ icon: 'none'
+ })
+ return
+ }
+ }
+ }
+ })
+ },
+
+ // 获取蓝牙设备某个服务中所有特征值(characteristic)
+ /**
+ * read: true读,write: true写,notify: true广播
+ */
+ getBLEDeviceCharacteristics(deviceId, serviceId) {
+ this._deviceId = deviceId
+ this._serviceId = serviceId
+ this._device.serviceId = serviceId
+ let that = this
+ 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.uuid.indexOf('FFE1') != -1) {
+ that.data.uuid1 = item.uuid //主服务 UUID
+ } else if (item.uuid.indexOf('FFE2') != -1) {
+ that.data.uuid2 = item.uuid //写入设置
+ } else if (item.uuid.indexOf('FFE3') != -1) {
+ that.data.uuid3 = item.uuid //监听数据
+ }
+ }
+ that.setData({
+ isType: true,
+ })
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid2,
+ state: true,
+ })
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid3,
+ state: true,
+ })
+ wx.onBLECharacteristicValueChange((res) => {
+ let value = ab2hex(res.value, "");
+ console.log("16进制转化:", value);
+ let num = value.substring(18, 19)
+ let dw = value.substring(19, 20)
+ let type = value.substring(8, 10)
+ let typeInfo = value.substring(10, 12)
+ console.log("16进制转化:", value);
+ if (type == '10') {
+ let data = parseInt(value.substring(13, 18), 16)
+ let dw1 = "kg"
+ if (dw == "1") {
+ dw1 = "斤"
+ console.log("体重单位:斤")
+ }
+ if (dw == "4") {
+ dw1 = "st:lb"
+ console.log("体重单位:st:lb,计算方法:1 * data + 5")
+ }
+ if (dw == "6") {
+ dw1 = "lb"
+ console.log("体重单位:lb")
+ }
+ if (num == "1") {
+ data = parseInt(value.substring(13, 18), 16) / 10
+ console.log("体重小数点后1位")
+ }
+ if (num == "2") {
+ data = parseInt(value.substring(13, 18), 16) / 100
+ console.log("体重小数点后2位")
+ }
+ if (num == "3") {
+ data = parseInt(value.substring(13, 18), 16) / 1000
+ console.log("体重小数点后3位")
+ }
+ if (typeInfo == "01") {
+ console.log("实时体重:", data)
+ that.setData({
+ weight: "实时体重是:" + data + dw1
+ })
+ }
+ if (typeInfo == "02") {
+ console.log("稳定体重:", data)
+ that.setData({
+ weight: "稳定体重是:" + data + dw1
+ })
+ }
+ }
+ if (type == "14") { //身高模式
+ let height = parseInt(value.substring(10, 14), 16)
+ that.setData({
+ height: "您的身高是:" + height
+ })
+ console.log("身高模式:", height)
+ }
+ if (type == "11") {
+ console.log("阻抗值:", value)
+ if (typeInfo == "03" || typeInfo == "04") {
+ let imp = parseInt(value.substring(17, 22), 16)
+ that.setData({
+ imp: "阻抗值:" + imp
+ })
+ }
+ }
+ if (value.toUpperCase() == "A90026023000589A") {
+ that.setData({
+ text: "测量完成"
+ })
+ }
+ });
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+ handleHeight(e) {
+ let that = this
+ let type = e.currentTarget.dataset.name
+ if (type == '1') {
+ let j = Number(26 + 3 + 6 + 1).toString(16)
+ let str = "A9002603060100" + j.substr(j.length - 2, 2) + "9A"
+ let buf = new Uint8Array(str.match(/[\da-f]{2}/gi).map(function(h) {
+ return parseInt(h, 16)
+ }))
+ that.sendData(buf.buffer)
+ }
+ if (type == '3') {
+ that.setData({
+ pwdModal: true,
+ })
+ }
+ },
+ confirmPwd() {
+ let that = this
+ if (!that.data.pwdInput) {
+ wx.showToast({
+ title: '请输入重量',
+ duration: 2000,
+ icon: 'none'
+ })
+ return
+ } else {
+ let w = Number(that.data.pwdInput.replace(/[&\|\\\*^%$#@\.-]/g, ""))
+ let j = Number(26 + 7 + 40 + w + 3 + 2).toString(16) //校验和
+ let atr = w.toString(16) //16进制后的标定数据
+ let num = 0 //小数位数
+ let str = null
+ if (that.data.pwdInput.indexOf('.') != -1) {
+ num = Number(that.data.pwdInput.toString().split(".")[1].length)
+ }
+ // 根据atr的位数判断下发的体重填充几个0
+ let n = []
+ for (var i = 1; i <= (6 - atr.length); i++) {
+ n.push(0);
+ }
+ str = "A90026074003" + n.join("") + atr + "0" + num + "00" + j.substr(j.length - 2, 2) + "9A"
+ let buf = new Uint8Array(str.match(/[\da-f]{2}/gi).map(function(h) {
+ return parseInt(h, 16)
+ }))
+ that.sendData(buf.buffer)
+ }
+ },
+ sendData(buffer) {
+ let that = this
+ wx.writeBLECharacteristicValue({
+ deviceId: that.data.deviceId,
+ serviceId: that.data.serviceId,
+ characteristicId: that.data.uuid1,
+ value: buffer,
+ success: res => {
+ console.log('下发指令', res.errMsg)
+ wx.showToast({
+ title: '下发指令成功',
+ duration: 2000,
+ icon: 'none'
+ })
+ this.setData({
+ pwdModal: false,
+ })
+ },
+ fail: res => {
+ wx.showToast({
+ title: '下发指令失败',
+ duration: 2000,
+ icon: 'none'
+ })
+ this.setData({
+ pwdModal: false,
+ })
+ console.log("失败", res);
+ },
+ })
+ },
+ closeModal() {
+ this.setData({
+ pwdModal: false,
+ })
+ },
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '断开蓝牙模块',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ text: "",
+ imp: "",
+ isType: false
+ })
+ },
+ // 断开与低功耗蓝牙设备的连接
+ closeBLEConnection() {
+ wx.closeBLEConnection({
+ deviceId: this._deviceId
+ })
+ wx.showToast({
+ title: '断开蓝牙连接',
+ icon: 'none'
+ })
+ this.setData({
+ connected: false,
+ isType: false,
+ devices: [],
+ text: "",
+ weight: "",
+ imp: ""
+ })
+ },
+
+});
diff --git a/pages/PCH0809/index.js b/pages/PCH0809/index.js
index 0639308..832da5f 100644
--- a/pages/PCH0809/index.js
+++ b/pages/PCH0809/index.js
@@ -66,8 +66,9 @@ Page({
}
this._discoveryStarted = true
wx.startBluetoothDevicesDiscovery({
- allowDuplicatesKey: true, //是否允许重复上报同一设备
- services: [ //要搜索蓝牙设备主 service 的 uuid 列表
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
"FFE0",
],
success: (res) => {
@@ -138,9 +139,9 @@ Page({
},
fail: res => {
this._connLoading = false
- wx.hideLoading()
wx.showToast({
title: '连接失败',
+ duration: 2000,
icon: 'none'
})
}
@@ -153,6 +154,7 @@ Page({
setTimeout(() => {
wx.showToast({
title: '连接已断开',
+ duration: 2000,
icon: 'none'
})
}, 500)
@@ -175,12 +177,14 @@ Page({
success: (res) => {
for (let i = 0; i < res.services.length; i++) {
if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
- wx.showLoading({
- title: '获取设备的UUID成功',
- })
this.data.serviceId = res.services[i].uuid
this.data.deviceId = deviceId
this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ wx.showToast({
+ title: '获取设备的UUID成功',
+ duration: 2000,
+ icon: 'none'
+ })
return
}
}
@@ -201,7 +205,6 @@ Page({
deviceId,
serviceId,
success: (res) => {
- wx.hideLoading()
console.log('getBLEDeviceCharacteristics success', res.characteristics)
for (let i = 0; i < res.characteristics.length; i++) {
let item = res.characteristics[i];
@@ -229,7 +232,7 @@ Page({
state: true,
})
wx.onBLECharacteristicValueChange((res) => {
- let value = ab2hex(res.value);
+ let value = ab2hex(res.value, "");
console.log("16进制转化:", value);
let num = value.substring(18, 19)
let dw = value.substring(19, 20)
@@ -276,7 +279,7 @@ Page({
})
}
}
- if (type == "14" ) { //身高模式
+ if (type == "14") { //身高模式
let height = parseInt(value.substring(10, 14), 16)
that.setData({
height: "您的身高是:" + height
@@ -293,7 +296,6 @@ Page({
}
}
if (value.toUpperCase() == "A90026023000589A") {
- console.log("测量完成")
that.setData({
text: "测量完成"
})
@@ -324,23 +326,28 @@ Page({
},
confirmPwd() {
let that = this
- console.log(that.data.pwdInput)
if (!that.data.pwdInput) {
wx.showToast({
title: '请输入重量',
+ duration: 2000,
icon: 'none'
})
return
} else {
let w = Number(that.data.pwdInput.replace(/[&\|\\\*^%$#@\.-]/g, ""))
- let j = Number(26 + 7 + 40 + w + 3 + 2).toString(16)
- let atr = w.toString(16)
- let num = 2
- if (that.data.pwdInput.toString().split(".")[1].length) {
+ let j = Number(26 + 7 + 40 + w + 3 + 2).toString(16) //校验和
+ let atr = w.toString(16) //16进制后的标定数据
+ let num = 0 //小数位数
+ let str = null
+ if (that.data.pwdInput.indexOf('.') != -1) {
num = Number(that.data.pwdInput.toString().split(".")[1].length)
}
- let str = "A90026074003" + atr + num + "000" + j.substr(j.length - 2, 2) + "9a"
- console.log("协议:", j, j.substr(j.length - 2, 2), w, atr, num, str)
+ // 根据atr的位数判断下发的体重填充几个0
+ let n = []
+ for (var i = 1; i <= (6 - atr.length); i++) {
+ n.push(0);
+ }
+ str = "A90026074003" + n.join("") + atr + "0" + num + "00" + j.substr(j.length - 2, 2) + "9A"
let buf = new Uint8Array(str.match(/[\da-f]{2}/gi).map(function(h) {
return parseInt(h, 16)
}))
@@ -349,16 +356,16 @@ Page({
},
sendData(buffer) {
let that = this
- console.log("指令信息", that.data.deviceId, that.data.serviceId, ab2hex(buffer))
wx.writeBLECharacteristicValue({
deviceId: that.data.deviceId,
serviceId: that.data.serviceId,
- characteristicId: that.data.uuid2,
+ characteristicId: that.data.uuid1,
value: buffer,
success: res => {
console.log('下发指令', res.errMsg)
wx.showToast({
title: '下发指令成功',
+ duration: 2000,
icon: 'none'
})
this.setData({
@@ -368,6 +375,7 @@ Page({
fail: res => {
wx.showToast({
title: '下发指令失败',
+ duration: 2000,
icon: 'none'
})
this.setData({
@@ -390,6 +398,7 @@ Page({
this._discoveryStarted = false
wx.showToast({
title: '断开蓝牙模块',
+ duration: 2000,
icon: 'none'
})
this.setData({
@@ -407,6 +416,7 @@ Page({
})
wx.showToast({
title: '断开蓝牙连接',
+ duration: 2000,
icon: 'none'
})
this.setData({
diff --git a/pages/PCJ02/index.js b/pages/PCJ02/index.js
new file mode 100644
index 0000000..d449d69
--- /dev/null
+++ b/pages/PCJ02/index.js
@@ -0,0 +1,184 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+const plugin = requirePlugin("sdkPlugin").AiLink;
+Page({
+ data: {
+ connected: false,
+ name: '',
+ weight: "",
+ height: "",
+ imp: "",
+ devices: [],
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "F0A0",
+ ],
+ success: (res) => {
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ let that = this
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (!device.name && !device.localName) {
+ return
+ }
+ if (device.advertisServiceUUIDs[0].indexOf("F0A0") !== -1) {
+ let parseDataRes = plugin.parseBroadcastData(device.advertisData)
+ let analyzeData = plugin.analyzeBroadcastScaleData(parseDataRes)
+ let analyzeDataText = analyzeData.text
+ let data = analyzeData.data
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const dataT = {}
+ let buffer = device.advertisData.slice(0, 8)
+ device.mac = new Uint8Array(buffer) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ that.imp = dataT.adc
+ if (idx === -1) {
+ dataT[`devices[${foundDevices.length}]`] = device
+ } else {
+ dataT[`devices[${idx}]`] = device
+ }
+ this.setData(dataT)
+ console.log("analyzeData", analyzeData)
+ if (parseDataRes.status == 1) {
+ let dw1 = "kg"
+ let dwH = "CM"
+ // 体重单位
+ if (data.weightUnit == "1") {
+ dw1 = "斤"
+ }
+ if (data.weightUnit == "4") {
+ dw1 = "st:lb"
+ data.weight = 1 * data.weight + 5
+ }
+ if (data.weightUnit == "6") {
+ dw1 = "lb"
+ }
+ if (data.weightDecimal == "1") {
+ data.weight = data.weight / 10
+ }
+ if (data.weightDecimal == "2") {
+ data.weight = data.weight / 100
+ }
+ if (data.weightDecimal == "3") {
+ data.weight = data.weight / 1000
+ }
+ that.setData({
+ weight: analyzeData.text
+ })
+ // that.setData({
+ // weight: "您的体重是:" + data.weight + dw1
+ // })
+ //身高单位
+ // if (data.tempUnit == "1") {
+ // dwH = "FT"
+ // data.tempNegative = data.tempNegative * 2.54
+ // }
+ // that.setData({
+ // height: "您的身高是:" + data.tempNegative / 10 + dwH
+ // })
+ return
+ }
+ }
+
+ })
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ wx.stopBluetoothDevicesDiscovery();
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ height: "",
+ text: "",
+ imp: ""
+ })
+ }
+ })
+ },
+
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.stopBluetoothDevicesDiscovery();
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '结束流程',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ height: "",
+ text: "",
+ imp: ""
+ })
+ },
+});
diff --git a/pages/PCJ02/index.json b/pages/PCJ02/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/PCJ02/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/PCJ02/index.wxml b/pages/PCJ02/index.wxml
new file mode 100644
index 0000000..5efeb59
--- /dev/null
+++ b/pages/PCJ02/index.wxml
@@ -0,0 +1,41 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{weight}}
+ {{height}}
+ {{imp}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/PCJ02/index.wxss b/pages/PCJ02/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/PCJ02/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/h018/index.js b/pages/h018/index.js
new file mode 100644
index 0000000..2772a83
--- /dev/null
+++ b/pages/h018/index.js
@@ -0,0 +1,280 @@
+const util = require("../../utils/util");
+const {
+ inArray,
+ ab2hex
+} = util
+const plugin = requirePlugin("sdkPlugin").AiLink;
+Page({
+ data: {
+ devices: [],
+ connected: false,
+ cmd: '',
+ name: '',
+ weight: "",
+ text: "",
+ imp: "",
+ uuid1: "",
+ uuid2: "",
+ uuid3: "",
+ deviceId: null,
+ },
+ onLoad: function() {},
+ // 初始化蓝牙模块
+ openBluetoothAdapter() {
+ wx.openBluetoothAdapter({
+ success: (res) => {
+ console.log('openBluetoothAdapter success', res)
+ wx.showToast({
+ title: '蓝牙连接中',
+ icon: "none"
+ })
+ this.startBluetoothDevicesDiscovery()
+ },
+ fail: (res) => {
+ if (res.errCode === 10001) {
+ wx.showToast({
+ title: '请打开蓝牙',
+ icon: "none"
+ })
+ // 监听本机蓝牙状态变化的事件
+ wx.onBluetoothAdapterStateChange((res) => {
+ console.log('onBluetoothAdapterStateChange', res)
+ if (res.available) {
+ this.startBluetoothDevicesDiscovery()
+ }
+ })
+ }
+ }
+ })
+ },
+
+ // 开始搜寻附近的蓝牙外围设备
+ startBluetoothDevicesDiscovery() {
+ if (this._discoveryStarted) {
+ return
+ }
+ this._discoveryStarted = true
+ wx.startBluetoothDevicesDiscovery({
+ allowDuplicatesKey: true,
+ interval: 1000, //上报设备的间隔
+ services: [
+ "FFE0",
+ ],
+ success: (res) => {
+ console.log('startBluetoothDevicesDiscovery success', res)
+ this.onBluetoothDeviceFound()
+ },
+ })
+ },
+ // 停止搜寻附近的蓝牙外围设备
+ stopBluetoothDevicesDiscovery() {
+ wx.stopBluetoothDevicesDiscovery()
+ },
+
+ // 找到新设备的事件
+ onBluetoothDeviceFound() {
+ wx.onBluetoothDeviceFound((res) => {
+ res.devices.forEach(device => {
+ if (device.name.indexOf('AiLink_') != -1) {
+ wx.stopBluetoothDevicesDiscovery() //搜索到名称为“AiLink_”的蓝牙后,停止搜寻附近的蓝牙
+ const foundDevices = this.data.devices
+ const idx = inArray(foundDevices, 'deviceId', device.deviceId)
+ const data = {}
+ let buff = device.advertisData.slice(-6)
+ device.mac = new Uint8Array(buff) // 保存广播数据中的mac地址,这是由于iOS不直接返回mac地址
+ let tempMac = Array.from(device.mac)
+ tempMac.reverse()
+ device.macAddr = ab2hex(tempMac, ':').toUpperCase()
+ if (idx === -1) {
+ data[`devices[${foundDevices.length}]`] = device
+ } else {
+ data[`devices[${idx}]`] = device
+ }
+ console.log("131", data)
+ this.setData(data)
+ }
+ })
+ })
+ },
+ // 连接低功耗蓝牙设备
+ createBLEConnection(e) {
+ this._connLoading = true
+ wx.showLoading({
+ title: '连接中',
+ })
+ setTimeout(() => {
+ if (this._connLoading) {
+ this._connLoading = false
+ wx.hideLoading()
+ }
+ }, 6000)
+ const ds = e.currentTarget.dataset
+ const index = ds.index
+ this._device = this.data.devices[index]
+ const deviceId = ds.deviceId
+ const name = ds.name
+ this.mac = ds.mac
+ wx.createBLEConnection({
+ deviceId,
+ success: (res) => {
+ this.setData({
+ connected: true,
+ name,
+ deviceId,
+ })
+ console.log("createBLEConnection:success")
+ this.onBLEConnectionStateChange()
+ this.getBLEDeviceServices(deviceId)
+ },
+ fail: res => {
+ this._connLoading = false
+ wx.hideLoading()
+ wx.showToast({
+ title: '连接失败',
+ icon: 'none'
+ })
+ }
+ })
+ },
+ //监听蓝牙连接状态
+ onBLEConnectionStateChange() {
+ wx.onBLEConnectionStateChange((res) => {
+ if (!res.connected) {
+ setTimeout(() => {
+ wx.showToast({
+ title: '连接已断开',
+ icon: 'none'
+ })
+ }, 500)
+ this.setData({
+ connected: false,
+ devices: [],
+ weight: "",
+ text: "",
+ imp: ""
+ })
+ }
+ })
+ },
+
+ // 获取蓝牙设备的 serviceId
+ getBLEDeviceServices(deviceId) {
+ wx.getBLEDeviceServices({
+ deviceId,
+ success: (res) => {
+ for (let i = 0; i < res.services.length; i++) {
+ if (res.services[i].isPrimary && res.services[i].uuid.indexOf('FFE0') > -1) {
+ wx.showLoading({
+ title: '获取设备的UUID成功',
+ })
+ this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)
+ return
+ }
+ }
+ }
+ })
+ },
+
+ // 获取蓝牙设备某个服务中所有特征值(characteristic)
+ /**
+ * read: true读,write: true写,notify: true广播
+ */
+ getBLEDeviceCharacteristics(deviceId, serviceId) {
+ let that = this
+ this._deviceId = deviceId
+ this._serviceId = serviceId
+ this._device.serviceId = serviceId
+ wx.getBLEDeviceCharacteristics({
+ deviceId,
+ serviceId,
+ success: (res) => {
+ console.log("特征值:", res)
+ for (let i = 0; i < res.characteristics.length; i++) {
+ let item = res.characteristics[i];
+ if (item.uuid.indexOf('FFE1') != -1) {
+ that.data.uuid1 = item.uuid //主服务 UUID
+ } else if (item.uuid.indexOf('FE2') != -1) {
+ that.data.uuid2 = item.uuid //写入设置
+ } else if (item.uuid.indexOf('FFE3') != -1) {
+ that.data.uuid3 = item.uuid //监听数据
+ }
+ }
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid2,
+ state: true,
+ })
+ wx.notifyBLECharacteristicValueChange({
+ deviceId,
+ serviceId,
+ characteristicId: that.data.uuid3,
+ state: true,
+ })
+ plugin.initPlugin(res.characteristics, this._device)
+ wx.onBLECharacteristicValueChange((characteristic) => {
+ let bleData = plugin.parseBleData(characteristic.value)
+ console.log("bleData", bleData)
+ if (bleData.status == 0) {
+ console.log("握手成功")
+ } else if (bleData.status == 1) {
+ let payload = ab2hex(bleData.data, '')
+ let type = payload.substring(0, 2)
+ let typeInfo = payload.substring(4, 6)
+ console.log("A7-----^", payload)
+ } else if (bleData.status == 2) {
+ let payload = ab2hex(bleData.completeData, '')
+ let type = payload.substring(0, 2)
+ let typeInfo = payload.substring(4, 6)
+ console.log('A6-----^', payload)
+ }
+ })
+
+ },
+ fail(res) {
+ console.error('getBLEDeviceCharacteristics', res)
+ }
+ })
+ },
+ submitCmd() {
+ let str = [0xA6, 0x02, 0x1A, 0x01, 0x1D, 0x6A]
+ // let str = [0xA6, 0x01, 0x26, 0x27, 0x6A]
+ console.log("唤醒指令", str)
+ plugin.sendDataOfA6(str)
+ },
+ /**
+ * 断开蓝牙模块
+ */
+ closeBluetoothAdapter() {
+ wx.closeBluetoothAdapter()
+ this._discoveryStarted = false
+ wx.showToast({
+ title: '断开蓝牙模块',
+ icon: 'none'
+ })
+ this.setData({
+ devices: [],
+ weight: "",
+ text: "",
+ imp: ""
+ })
+ },
+ // 断开与低功耗蓝牙设备的连接
+ closeBLEConnection() {
+ wx.closeBLEConnection({
+ deviceId: this._deviceId
+ })
+ wx.showToast({
+ title: '断开蓝牙连接',
+ icon: 'none'
+ })
+ this.setData({
+ connected: false,
+ devices: [],
+ text: "",
+ weight: "",
+ imp: ""
+ })
+ },
+
+});
diff --git a/pages/h018/index.json b/pages/h018/index.json
new file mode 100644
index 0000000..b55b5a2
--- /dev/null
+++ b/pages/h018/index.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {
+ }
+}
\ No newline at end of file
diff --git a/pages/h018/index.wxml b/pages/h018/index.wxml
new file mode 100644
index 0000000..cbe4525
--- /dev/null
+++ b/pages/h018/index.wxml
@@ -0,0 +1,42 @@
+
+module.exports.max = function(n1, n2) {
+ return Math.max(n1, n2)
+}
+module.exports.len = function(arr) {
+ arr = arr || []
+ return arr.length
+}
+
+
+
+
+
+ {{weight}}
+ {{imp}}
+ {{text}}
+
+ 已发现 {{devices.length}} 个外围设备:
+
+
+
+ {{item.name}}
+ (信号强度: {{item.RSSI}}dBm)
+
+ mac地址: {{item.macAddr || item.deviceId}}
+
+
+
+
+
+
diff --git a/pages/h018/index.wxss b/pages/h018/index.wxss
new file mode 100644
index 0000000..23ef694
--- /dev/null
+++ b/pages/h018/index.wxss
@@ -0,0 +1 @@
+/* pages/PCD01PRO/index.wxss */
\ No newline at end of file
diff --git a/pages/index/index.js b/pages/index/index.js
index 3a44a08..b47304b 100644
--- a/pages/index/index.js
+++ b/pages/index/index.js
@@ -15,8 +15,7 @@ Page({
imp: "",
deviceId: null,
},
- onLoad: function() {
- },
+ onLoad: function() {},
// 初始化蓝牙模块
editclick: function(e) {
let type = e.currentTarget.dataset.name
@@ -32,6 +31,55 @@ Page({
})
return
}
+ if (type == 'PCF01B') {
+ wx.navigateTo({
+ url: `/pages/PCF01B/index`
+ })
+ return
+ }
+ if (type == 'PCF01proFRK') {
+ wx.navigateTo({
+ url: `/pages/PCF01proFRK/index`
+ })
+ return
+ }
+ if (type == 'PCF08') {
+ wx.navigateTo({
+ url: `/pages/PCF08/index`
+ })
+ return
+ }
+ if (type == 'PCJ02') {
+ wx.navigateTo({
+ url: `/pages/PCJ02/index`
+ })
+ return
+ }
+ if (type == 'FB03') {
+ wx.navigateTo({
+ url: `/pages/FB03/index`
+ })
+ return
+ }
+ if (type == 'G01') {
+ wx.navigateTo({
+ url: `/pages/G01/index`
+ })
+ return
+ }
+ if (type == 'h018') {
+ wx.navigateTo({
+ url: `/pages/h018/index`
+ })
+ return
+ }
+ if (type == 'L08') {
+ wx.navigateTo({
+ url: `/pages/L08/index`
+ })
+ return
+ }
+
},
openBluetoothAdapter() {
wx.openBluetoothAdapter({
diff --git a/pages/index/index.wxml b/pages/index/index.wxml
index fd90807..f69d2e8 100644
--- a/pages/index/index.wxml
+++ b/pages/index/index.wxml
@@ -12,5 +12,14 @@
PCD01PRO
PCH08/09
+ PCF01B
+ PCF01pro(旧)
+ PCF01pro(新)
+ PCF08
+ PCJ02
+ G01
+ B03
+
+ L08
diff --git a/project.config.json b/project.config.json
index 327660f..ae58e57 100644
--- a/project.config.json
+++ b/project.config.json
@@ -1,7 +1,8 @@
{
- "description": "项目配置文件",
+ "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"packOptions": {
- "ignore": []
+ "ignore": [],
+ "include": []
},
"setting": {
"urlCheck": true,
@@ -35,37 +36,22 @@
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true,
- "showES6CompileOption": false
+ "showES6CompileOption": false,
+ "disableUseStrict": false,
+ "ignoreUploadUnusedFiles": true,
+ "useStaticServer": true,
+ "useCompilerPlugins": false,
+ "minifyWXML": true
},
"compileType": "miniprogram",
"libVersion": "2.16.0",
"projectname": "bluetooth_demo",
- "debugOptions": {
- "hidedInDevtools": []
- },
- "scripts": {},
- "isGameTourist": false,
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"appid": "wxcea3504a31518eb6",
- "condition": {
- "search": {
- "list": []
- },
- "conversation": {
- "list": []
- },
- "game": {
- "list": []
- },
- "plugin": {
- "list": []
- },
- "gamePlugin": {
- "list": []
- },
- "miniprogram": {
- "list": []
- }
+ "condition": {},
+ "editorSetting": {
+ "tabIndent": "insertSpaces",
+ "tabSize": 2
}
}
\ No newline at end of file
diff --git a/utils/util.js b/utils/util.js
index b00f2de..7aafdf3 100644
--- a/utils/util.js
+++ b/utils/util.js
@@ -15,14 +15,14 @@ function inArray(arr, key, val) {
}
// ArrayBuffer转16进度字符串示例
-function ab2hex(buffer) {
+function ab2hex(buffer, split) {
var hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
- return hexArr.join("");
+ return hexArr.join(split);
}
module.exports = {
inArray,