充电桩蓝牙小程序设计,控制充电显示
立即下载
资源介绍:
充电桩蓝牙小程序设计控制充电显示
// pages/main/main.js
//充电
// ArrayBuffer转16进制字符串示例
var util = require('../../utils/util');
var app = getApp();
function ab2hex(buffer) {
let hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('');
}
Page({ //page 函数,传入一个OBJECT
/**
* 页面的初始数据
*/
data: {
eyeopen:0, //密码显示与隐藏
focus:0,//是否获取焦点
password:"", //输入密码
passflag:0, //密码输入标志
id:"", //用户ID
openid:0, //
Userid:0, //手动输入
verify:0, //登入验证结果,本地模式需要验证
mode:0xff, //充电模式默
rateCurr:0, //额定电流
idle:0, //空闲中
charge : 0 ,//充电中
link: 0, //连接中
read:0, //准备中
full:0, //充满
fault:0, //故障字
app:0, //预约中
Calib:0, //校准中
updata:0, //固件升级中
TestMode:0, //测试模式
res:[], //接收数据
recLen:0, //接收长度
resTemp:[],
recLenTemp:0,
voltage:0, //电压
Current:0, //电流
Power:0, //电能
Times:0, //充电时间
Temper:0,//枪温度
APPtime:0, //预约倒计时
ChargePercent:0, //充电百分比
timeOut:null, //超时
IntervaltimeOut:null, //循环超时
writetimeOut:null, //写数据超时
Interval: null, // 定时执行
BuleBasy:false, //蓝牙忙
Recvicecallback: null, //回调解析函数
commStep:0, //蓝牙通讯步骤
errcount:0, //通讯故障计数
},
/**
* 生命周期函数--监听页面加载
* /监听页面加载,options用来接收别的页面传递过来的参数
*/
switch() {
this.setData({
eyeopen: !this.data.eyeopen
})
},
focus(){
this.setData({
focus:true
})
},
blur(){
this.setData({
focus:false
})
},
getInputValue(e){
let value = e.detail.value;
value = value.replace(/[^0-9a-zA-Z]/g, ''); // 正则表达式替换非数字和字母字符为空
this.data.password= value
console.log(this.data.password)
console.log(this.data.password.length)
},
onLoad(options) { //返回页面不会执行,不会初始化数据
//this.getOpenid() //用于获取用户ID ,需要云服务 付费模式,暂时不用
if( this.data.mode ==0xff ){
wx.showToast({ title: 'Loading...', icon:"loading" ,duration: 2000}) //需要更新
}
},
getOpenid: function() {
var that = this;
wx.login({
success(res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'http://localhost:8000/getopenid', //本地获取
data: {
appid:'wx059f2664f249ea68', //开发者appid
secret:'48d7ec335054778b8a4b3693494c2f54', //开发者AppSecret(小程序密钥)
grant_type:"authorization_code", //默认authorization_code
js_code: res.code //wx.login登录获取的code值
},
success(data){
wx.showToast({
title: '获取openid成功',
icon: 'success',
duration: 2000
})
console.log("openid:" + data.data)
that.setData({
hasUserInfo : true
})
that.data.id = data.data
},fail(data){
wx.showToast({
title: '获取openid失败',
icon: 'fail',
duration: 2000
})
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
},
wxLogin () {
var that = this
wx.login({
success: (res) => {
let userCode = res.code
console.log('wx.login==>',res)
wx.request({
url:`https://api.weixin.qq.com/sns/jscode2session?appid=wx059f2664f249ea68&secret=3be664c4cc7238c48b54c7fd55efeb4e&js_code=${userCode}&grant_type=authorization_code`,
success: res => {
console.log("用户的openid:" + res.data.openid);
console.log("用户的unionid:" + res.data.unionid);
console.log("用户的session_key:" + res.session_key);
that.setData({
openid : true //存在ID
})
that.data.id = res.data.openid
}
});
}
})
},
formsubmit(e){ //验证账号
var nickName = e.detail.value.nickname
if( nickName.length ==0 ){
wx.showToast({title: '请输入账号', icon:"fail" ,duration: 1000})
return
}
this.data.Userid = true //输入账号
this.data.id = nickName
wx.showToast({ title: '登入中', icon:"loading" ,duration: 1000}) //需要更新
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
小程序显示到屏幕上的时候,执行此函数
*/
onShow() {
util.BlueOnload(this) //必须放在此处。,onLoad函数在返回时不执行
this.OpenInterval() //打开通讯循环
},
/**
* 生命周期函数--监听页面隐藏
小程序被最小化的时候,执行此函数
*/
onHide() {
let that = this
clearInterval(that.data.Interval);
clearTimeout(that.data.timeOut);
clearTimeout(that.data.IntervaltimeOut); //清除超时事件
clearTimeout(this.data.writetimeOut); //清除超时事件 即时写
},
/**
* 生命周期函数--监听页面卸载
* 小程序页面返回
*/
onUnload() {
//断开连接
let that = this
wx.closeBLEConnection({ deviceId: app.globalData.deviceId}) //断开蓝牙
clearInterval(that.data.Interval);
clearTimeout(that.data.timeOut);
clearTimeout(that.data.IntervaltimeOut); //清除超时事件
clearTimeout(this.data.writetimeOut); //清除超时事件 即时写
console.log("onUnload")
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
},
ReadMeasureData() //读取计量数据 一秒内发送,接收数据一秒内处理
{
if(this.data.BuleBasy == true){
return false;
}
var buf =[0x01,0x03,0x00,0x00,0x00,0x13,0x04,0x07]
var array = new Uint8Array(buf.length);
var i,l
for ( i = 0, l = buf.length; i < l; i++) {
array[i] = buf[i];
}
//console.log("发送信息:"+array)
this.data.BuleBasy = true
wx.writeBLECharacteristicValue({
characteristicId: app.globalData.uuid,
deviceId: app.globalData.deviceId,
serviceId:app.globalData.serviceId,
value: array.buffer,
})
function ReadMeasureDataRec(that){
if( that.data.recLen !=0 ){
var obj = util.FrameUnpack( that.data.res , that.data.recLen); //帧解析返回obj
//console.log(obj)
that.data.recLen =0;
if(obj.ret == true && obj.code==0x03 && obj.datalen==38){ //解析成功
let i=obj.index
let voltage = (that.data.res[i] << 24) + (that.data.res[i+1] << 16) + (that.data.res[i+2] << 8) + (that.data.res[i+3])
let Current = (that.data.res[i+4] << 24) + (that.data.res[i+5] << 16) + (that.data.res[i+6] << 8) + (that.data.res[i+7])
let Power = (that.data.res[i+16] << 24) + (that.data.res[i+17] << 16) + (that.data.res[i+18] << 8) + (that
资源文件列表:
小力充电.zip 大约有487个文件