| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346 |
- const app = getApp()
- //main
- Page({
- //Data
- data: {
- OnlyReadOne: null, // OnlyOneCheackStateMents
- receiveText: '', // explain ReciveMesage
- connectedDeviceId: '',// BLE_List_ID
- service_uuid: '', // BLE_UUID
- workstate: false, // 工作状态
- target: 1, // 强度
- current: 5, // 时间
- mode: 1, // 模式
- Rworkstate: 0, // 工作状态
- Rtarget: 0, // 强度
- Rcurrent1: 0, // 分
- Rcurrent2: 0, // 秒
- Rmode: 0, // 模式
- RBattery: 0, // 电量
- LastSendingTime: 0,
- timeInterval:1000,
- DisplayBLEconflag: 0, //show ble offline
- tisrc: "/subpagesTwo/images/zmdevice/target1.png",
- tisrc1: "/subpagesTwo/images/zmdevice/target1.png",
- tisrc2: "/subpagesTwo/images/zmdevice/target.png",
- cisrc: "/subpagesTwo/images/zmdevice/current.png",
- cisrc1: "/subpagesTwo/images/zmdevice/current1.png",
- cisrc2: "/subpagesTwo/images/zmdevice/current.png",
- tcisc: 1,
- ccisc: 0,
- },
- //响应强度按键
- handleClick(e) {
- var that = this;
- const value = e.currentTarget.dataset.value;
- this.setData({
- mode: value,
- });
- if (this.data.workstate) {
- this.setData({
- workstate: false
- });
- setTimeout(() => {
- this.setData({
- workstate: true
- });
- that.setDevdata(that,true);
- }, 500);
- }
- // 这里可以添加其他逻辑
- console.log('当前值:', value);
- }, setDevdata(that,flag=false) {
- var timestamp = new Date().getTime();
- if ( !flag&&(that.data.LastSendingTime !== 0 && timestamp - that.data.LastSendingTime < that.data.timeInterval)) {
- console.log('发送间隔小于500ms')
- return
- }
- that.data.LastSendingTime = timestamp
- // Makeup Inquire Message
- // 0B 4D(帧头)
- // 01(设备id)
- // 10(写)
- // 00 70(命令字)
- // 00 02(命令个数)
- // 04(数据个数)
- // WorkState(工作状态) Vvalue(强度) Tvalue(时间) 模式(mode)
- // CRCL CRCH (校验)
- // 1C 0D(帧尾)
- var temp_data_send = new Array(0x01, 0x10, 0x00, 0x70, 0x00, 0x02, 0x04,
- that.data.workstate, that.data.current, that.data.target, that.data.mode);
- let temp_crc = app.CRC16(temp_data_send)
- temp_data_send.push(temp_crc[0]);
- temp_data_send.push(temp_crc[1]);
- // Add HeadTail
- var senddata = new ArrayBuffer(17);
- let bufferview = new DataView(senddata);
- bufferview.setUint8(0, 0x0b);
- bufferview.setUint8(1, 0x4d);
- for (var i = 0; i < 13; i++) {
- bufferview.setUint8([i + 2], temp_data_send[i]);
- }
- bufferview.setUint8(15, 0x1c);
- bufferview.setUint8(16, 0x0d);
- let RecoedData = senddata
- // console.log("==========================", that.data.target)
- wx.writeBLECharacteristicValue({
- deviceId: that.data.connectedDeviceId,
- serviceId: that.data.service_uuid,
- characteristicId: "0003CDD2-0000-1000-8000-00805F9B0131",
- value: RecoedData,
- success: function (res) {
- console.log('查询发送')
- },
- fail: function (err) {
- console.log(err, '查询发送失败')
- }
- })
- },
- // init
- onLoad: function (options) {
- var that = this;
- that.setData({
- connectedDeviceId: options.connectedDeviceId,
- OnlyReadOne: null,
- service_uuid: options.serviceId,
- OnlyReadOne: setInterval(function () {
- that.setDevdata(that);
- }, that.data.timeInterval),
- })
- // 检测连接
- wx.onBLEConnectionStateChange(function (res) {
- console.log(res.connected)
- if (res.connected == 0 && that.data.DisplayBLEconflag == 0) {
- wx.showModal({
- title: '提示',
- content: '设备已断开',
- showCancel: false,
- success: function (res) {
- that.setData({
- connected: false,
- workstate: 0
- })
- }
- })
- }
- that.setData({
- connected: res.connected,
- })
- })
- wx.onBLECharacteristicValueChange(function (res) {
- console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`)
- that.setData({
- receiveText: app.ab2hex(res.value)
- })
- let seceiver_buff = new Uint8Array(res.value);
- for (let i = 0; i < seceiver_buff.length; i++) {
- console.log(seceiver_buff[i].toString(16).padStart(2, '0') + ' ');
- }
- //开始处理蓝牙返回指令
- for (var i = 0; i < (seceiver_buff.length - 10); i++) {
- if (seceiver_buff[i] == 0x0b) {
- if ((seceiver_buff[i + 1] == 0x4d) && (seceiver_buff[i + 2] == 0x01) && (seceiver_buff[i + 3] == 0x10) && (seceiver_buff[i + 4] == 0x00) && (seceiver_buff[i + 5] == 0x70) && (seceiver_buff[i + 6] == 0x00) && (seceiver_buff[i + 7] == 0x03) && (seceiver_buff[i + 8] == 0x06)) {
- if ((seceiver_buff[i + 17] == 0x1C) && (seceiver_buff[i + 18] == 0x0D)) {
- let dataToVerify = seceiver_buff.subarray(i + 2, i + 15); //索引2-14
- let calculatedCRC = app.CRC16(dataToVerify);
- if (calculatedCRC[0] == seceiver_buff[i + 15] && calculatedCRC[1] == seceiver_buff[i + 16]) {
- that.setData({
- connected: true,
- Rworkstate: seceiver_buff[i + 10], // 工作状态
- Rtarget: seceiver_buff[i + 11], // 强度
- target: seceiver_buff[i + 11],
- Rcurrent1: seceiver_buff[i + 12], // 分
- Rcurrent2: seceiver_buff[i + 13], // 秒
- Rmode: seceiver_buff[i + 9], // 模式
- RBattery: seceiver_buff[i + 14], // 电量
- })
- // console.log("收到数据:");
- // console.log("设备模式:",seceiver_buff[i+9]);
- // console.log("设备状态:",seceiver_buff[i+10]);
- // console.log("设备挡位:",seceiver_buff[i+11]);
- break;
- }
- } else {
- continue
- }
- } else {
- continue
- }
- } else {
- continue
- }
- }
- })
- },
- //开始停止
- Send: function () {
- var that = this
- if (that.data.workstate == false) {
- that.setData({
- workstate: true
- })
- } else {
- that.setData({
- workstate: false
- })
- }
- this.setDevdata(that,true);
- },
- // 强度
- VoltagecheckboxChange: function (e) {
- if (e.detail.value != "") {
- this.setData({
- tcisc: 1, ccisc: 0,
- tisrc: this.data.tisrc1,
- cisrc: this.data.cisrc2,
- });
- } else {
- this.setData({tcisc: 0, tisrc: this.data.tisrc2});
- }
- this.setDevdata(this,true);
- },
- // 时间
- currentcheckboxChange: function (e) {
- if (e.detail.value != "") {
- this.setData({
- ccisc: 1, tcisc: 0,
- cisrc: this.data.cisrc1,
- tisrc: this.data.tisrc2,
- });
- } else {
- this.setData({ccisc: 0, cisrc: this.data.cisrc2});
- }
- this.setDevdata(this,true);
- },
- //左键
- leftTouchEnd: function (event) {
- var that = this;
- if (this.data.workstate == true) {
- if (that.data.tcisc == 1) {
- if (that.data.target > 1) {
- that.setData({
- target: that.data.target - 1,
- });
- this.setDevdata(that,true);
- } else {
- console("强度越界");
- return;
- }
- } else if (that.data.ccisc == 1) {
- if (that.data.current > 5) {
- that.setData({
- current: that.data.current - 5,
- });
- this.setDevdata(that,true);
- } else {
- console.log("时间越界");
- return;
- }
- } else {
- console.log("选择出错");
- return;
- }
- } else {
- wx.showModal({
- title: '提示',
- content: '设备未开始工作',
- showCancel: false,
- success: function (res) {
- that.setData({})
- }
- })
- }
- },
- //右键
- rightTouchEnd: function (event) {
- var that = this;
- if (this.data.workstate == true) {
- if (that.data.tcisc == 1) {
- if (that.data.target < 30) {
- that.setData({
- target: that.data.target + 1,
- });
- this.setDevdata(that,true);
- } else {
- console.log("强度越线");
- return;
- }
- } else if (that.data.ccisc == 1) {
- if (that.data.current < 20) {
- that.setData({
- current: that.data.current + 5,
- });
- this.setDevdata(that,true);
- } else {
- console.log("时间越线");
- return;
- }
- } else {
- console.log("选择失败");
- return;
- }
- } else {
- wx.showModal({
- title: '提示',
- content: '设备未开始工作',
- showCancel: false,
- success: function (res) {
- that.setData({})
- }
- })
- }
- },
- onReady: function () {
- },
- onShow: function () {
- var that = this;
- if (that.data.connected == false) {
- clearInterval(this.data.OnlyReadOne);
- }
- },
- onHide: function () {
- },
- onUnload: function () {
- this.data.DisplayBLEconflag = 1,
- // 关查询定时
- clearInterval(this.data.OnlyReadOne)
- // 关蓝牙连接
- wx.closeBLEConnection({
- deviceId: this.data.connectedDeviceId,
- success(res) {
- console.log(res)
- }
- })
- },
- // Back to Search
- handlerGobackClick(delta) {
- wx.navigateBack({
- delta: 2
- });
- },
- })
|