|
@@ -26,6 +26,7 @@ Page({
|
|
|
_timer: null,
|
|
|
_imgUrl: null,
|
|
|
_imgMD5: null,
|
|
|
+ _imgIndex: null,
|
|
|
},
|
|
|
cropper: null,
|
|
|
callback() {
|
|
@@ -217,37 +218,6 @@ Page({
|
|
|
submit() {
|
|
|
let _this = this
|
|
|
|
|
|
- // this.cropper.getImgData((obj) => {
|
|
|
-
|
|
|
- // _this.cropper.getImg((obj2) => {
|
|
|
- // // app.globalData.imgSrc = obj.url;
|
|
|
- // console.log("裁剪壁纸:", obj2);
|
|
|
- // _this.data._imgUrl = obj2.url
|
|
|
- // });
|
|
|
-
|
|
|
- // wx.showLoading({
|
|
|
- // title: '壁纸裁剪中',
|
|
|
- // })
|
|
|
-
|
|
|
- // // let binData = _this.imageDataToRGB565(obj.data, obj.width, obj.height)
|
|
|
-
|
|
|
- // // const rgb565Data = _this.convertImageDataToRGB565(obj.data, obj.width, obj.height)
|
|
|
- // // // 生成 LVGL 二进制文件
|
|
|
- // // const binData = _this.generateLVGLBinFile(rgb565Data, obj.width, obj.height);
|
|
|
-
|
|
|
- // const binData = _this.imageDataToRGB565(obj.data, obj.width, obj.height);
|
|
|
-
|
|
|
- // _this.sliceDataIntoChunks(binData, 128);
|
|
|
-
|
|
|
- // console.log("下载文件成功2:", binData.byteLength, binData.length)
|
|
|
- // _this.data._imageBufferLength = binData.byteLength ?? binData.length
|
|
|
- // wx.hideLoading();
|
|
|
- // wx.showLoading({
|
|
|
- // title: '开始传输壁纸',
|
|
|
- // })
|
|
|
- // _this.startImage();
|
|
|
- // });
|
|
|
-
|
|
|
// 读取裁剪的jpg图片
|
|
|
const fs = wx.getFileSystemManager();
|
|
|
this.cropper.getImg((obj) => {
|
|
@@ -263,16 +233,24 @@ Page({
|
|
|
success: (obj) => {
|
|
|
console.log("加载文件成功:", obj.data.byteLength, obj.data.length)
|
|
|
|
|
|
- let binData = obj.data;
|
|
|
- _this.sliceDataIntoChunks(binData, 64);
|
|
|
+ fs.getFileInfo({
|
|
|
+ "filePath": url, "digestAlgorithm": "md5", success: (res) => {
|
|
|
+ console.log("md5:", res)
|
|
|
+ console.log("加载文件成功:", obj.data.byteLength, obj.data.length, obj.getFileInfo)
|
|
|
+
|
|
|
+ let binData = obj.data;
|
|
|
+ _this.sliceDataIntoChunks(binData, 64);
|
|
|
|
|
|
- console.log("加载文件成功2:", binData.byteLength, binData.length)
|
|
|
- _this.data._imageBufferLength = binData.byteLength ?? binData.length
|
|
|
- wx.hideLoading();
|
|
|
- wx.showLoading({
|
|
|
- title: '开始传输壁纸',
|
|
|
+ console.log("加载文件成功2:", binData.byteLength, binData.length)
|
|
|
+ _this.data._imageBufferLength = binData.byteLength ?? binData.length
|
|
|
+ wx.hideLoading();
|
|
|
+ wx.showLoading({
|
|
|
+ title: '开始传输壁纸',
|
|
|
+ })
|
|
|
+ _this.startImage()
|
|
|
+ }
|
|
|
})
|
|
|
- _this.startImage()
|
|
|
+
|
|
|
},
|
|
|
fail: (err) => {
|
|
|
console.error('读取 .bin 文件失败:', err);
|
|
@@ -401,7 +379,11 @@ Page({
|
|
|
this.data._chunks = chunks;
|
|
|
},
|
|
|
sendImageMD5() {
|
|
|
- BtHelper.sendCallBack(BtCmd.wallPaperMD5(this.data._imgMD5), function (res) {
|
|
|
+ let md5Code = BtCmd.stringToUint8Array(this.data._imgMD5)
|
|
|
+ let lengthCode = BtCmd.intToHex(this.data.length)
|
|
|
+ let value = BtCmd.sendWiFiInfo(md5Code, lengthCode)
|
|
|
+
|
|
|
+ BtHelper.sendCallBack(BtCmd.wallPaperMD5(value), function (res) {
|
|
|
if (!res) {
|
|
|
wx.hideLoading()
|
|
|
wx.showToast({
|
|
@@ -411,7 +393,7 @@ Page({
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
- async sendImage() {
|
|
|
+ async sendImage(i) {
|
|
|
let _this = this
|
|
|
|
|
|
wx.hideLoading()
|
|
@@ -419,56 +401,57 @@ Page({
|
|
|
let next = 0;
|
|
|
let total = _this.data._imageBufferLength;
|
|
|
let btHelper = BtHelper.getInstance();
|
|
|
- let i = 0;
|
|
|
- _this.data._timer = setInterval(async () => {
|
|
|
- if (i > chunks.length - 1) {
|
|
|
- wx.showModal({
|
|
|
- title: '壁纸上传成功:' + i + "总:" + chunks.length,
|
|
|
- showCancel: false,
|
|
|
- success(res) {
|
|
|
- if (res.confirm) {
|
|
|
- const pages = getCurrentPages();
|
|
|
- // 获取上一级页面实例
|
|
|
- const prevPage = pages[pages.length - 2];
|
|
|
- // 传递参数
|
|
|
- prevPage.setData({
|
|
|
- topImg: {
|
|
|
- "pic": _this.data._imgUrl,
|
|
|
- }
|
|
|
- });
|
|
|
- wx.navigateBack({
|
|
|
- delta: 1,
|
|
|
- })
|
|
|
- }
|
|
|
+ // let i = 0;
|
|
|
+ // _this.data._timer = setInterval(async () => {
|
|
|
+ if (i > chunks.length - 1) {
|
|
|
+ wx.showModal({
|
|
|
+ title: '壁纸上传成功:' + i + "总:" + chunks.length,
|
|
|
+ showCancel: false,
|
|
|
+ success(res) {
|
|
|
+ if (res.confirm) {
|
|
|
+ const pages = getCurrentPages();
|
|
|
+ // 获取上一级页面实例
|
|
|
+ const prevPage = pages[pages.length - 2];
|
|
|
+ // 传递参数
|
|
|
+ prevPage.setData({
|
|
|
+ topImg: {
|
|
|
+ "pic": _this.data._imgUrl,
|
|
|
+ }
|
|
|
+ });
|
|
|
+ wx.navigateBack({
|
|
|
+ delta: 1,
|
|
|
+ })
|
|
|
}
|
|
|
- })
|
|
|
- _this.endImage(0)
|
|
|
- return;
|
|
|
- }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ _this.endImage(0)
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- const chunk = chunks[i];
|
|
|
- next += (chunk.byteLength ?? chunk.length);
|
|
|
- // let uint8Array = new Uint8Array(chunk);
|
|
|
- // let unit16 = uint8Array.map(item => {
|
|
|
- // return item.toString(16)
|
|
|
- // });
|
|
|
- console.log("发送壁纸数据1:", i, ":", next, ":", chunk.length, ":", chunk.byteLength, ":", total, chunks.length)
|
|
|
+ const chunk = chunks[i];
|
|
|
+ next += (chunk.byteLength ?? chunk.length);
|
|
|
+ // let uint8Array = new Uint8Array(chunk);
|
|
|
+ // let unit16 = uint8Array.map(item => {
|
|
|
+ // return item.toString(16)
|
|
|
+ // });
|
|
|
+ console.log("发送壁纸数据1:", i, ":", next, ":", chunk.length, ":", chunk.byteLength, ":", total, chunks.length)
|
|
|
|
|
|
- let res = await btHelper.wallPaperSyncData(chunk);
|
|
|
- // let res = true;
|
|
|
- // btHelper.wallPaperData(chunk);
|
|
|
+ let res = await btHelper.wallPaperSyncData(chunk);
|
|
|
+ // let res = true;
|
|
|
+ // btHelper.wallPaperData(chunk);
|
|
|
|
|
|
- if (!res) {
|
|
|
- wx.showModal({
|
|
|
- title: '壁纸上传失败',
|
|
|
- showCancel: false
|
|
|
- })
|
|
|
- _this.endImage(2)
|
|
|
- }
|
|
|
- _this.updateProgress(next, total);
|
|
|
+ if (!res) {
|
|
|
+ wx.showModal({
|
|
|
+ title: '壁纸上传失败',
|
|
|
+ showCancel: false
|
|
|
+ })
|
|
|
+ _this.endImage(2)
|
|
|
+ }
|
|
|
+ _this.updateProgress(next, total);
|
|
|
|
|
|
- i++;
|
|
|
- }, 30);
|
|
|
+ i++;
|
|
|
+ _this.data._imgIndex = i;
|
|
|
+ // }, 30);
|
|
|
},
|
|
|
async delay(ms) {
|
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
@@ -507,6 +490,24 @@ Page({
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
+ failSend(showToast) {
|
|
|
+ let _this = this
|
|
|
+ _this.data._chunks = null
|
|
|
+ _this.data._imgUrl = null
|
|
|
+ _this.data._imgMD5 = null
|
|
|
+ _this.data._imgIndex = 0
|
|
|
+ wx.hideLoading()
|
|
|
+ if (showToast) {
|
|
|
+ wx.showModal({
|
|
|
+ title: '壁纸上传失败了',
|
|
|
+ showCancel: false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ _this.setData({
|
|
|
+ progress: 0,
|
|
|
+ showCropImg: false
|
|
|
+ });
|
|
|
+ },
|
|
|
/**
|
|
|
* 生命周期函数--监听页面加载
|
|
|
*/
|
|
@@ -523,42 +524,58 @@ Page({
|
|
|
EventManager.addNotification(CmdEvent.eventName, function (event) {
|
|
|
let name = event.cmdEvent;
|
|
|
console.log("裁剪页:", EnumCmdEvent)
|
|
|
+ let value = event.wallpaper;
|
|
|
|
|
|
switch (name) {
|
|
|
case EnumCmdEvent.wallpaper:
|
|
|
- let otaCmd = event.wallpaper;
|
|
|
let kind = event.heiJiaoKind;
|
|
|
- console.log("裁剪页:", otaCmd, kind)
|
|
|
+ console.log("裁剪页:", value, kind)
|
|
|
+ // 小程序:0x78, 1。 开启壁纸
|
|
|
+ // 黑胶回:0x78, 2, 1 ,1。 0x78, 2, 0, 2 。 1成功,2失败
|
|
|
+
|
|
|
+ // 小程序:0x80, [参考wifi指令], [0x22,总长度,0x33,包长,包数,0x44,md5长,md5]
|
|
|
+ // 黑胶回:0x80, 1, 1。 0x80, 0, 2。 1成功,2失败
|
|
|
+
|
|
|
+ // 小程序:0x79, 数据长度,数据
|
|
|
+ // 黑胶回:0x79, 1, 1 。0x79, 0, 2 。 1成功,2失败
|
|
|
+
|
|
|
+ // 小程序:0x78, 0。结束了
|
|
|
+ // 黑胶回:0x78, 2, 0, 1 。 0x78, 2, 0, 3 。 0流程成功,3流程失败
|
|
|
|
|
|
- if (otaCmd === 1 && kind == 1) {
|
|
|
- // 开始发送
|
|
|
+ // 小程序: 0x78, 2。异常结束
|
|
|
+ if (value === 1 && kind == 1) {
|
|
|
+ // 开始校验md5
|
|
|
_this.sendImageMD5()
|
|
|
// _this.sendImage()
|
|
|
_this.startProgress()
|
|
|
- } else if (otaCmd === 0 && kind == 1) {
|
|
|
- _this.setData({
|
|
|
- progress: 0,
|
|
|
- showCropImg: false
|
|
|
- });
|
|
|
- // 发送结束
|
|
|
- } else if (kind == 0) {
|
|
|
- wx.hideLoading()
|
|
|
- wx.showModal({
|
|
|
- title: '壁纸上传失败了',
|
|
|
- showCancel: false
|
|
|
+ } else if (value === 0 && (kind == 2 || kind == 3)) {
|
|
|
+ // 发送失败
|
|
|
+ _this.failSend(true)
|
|
|
+ } else if (value === 0 && kind == 1) {
|
|
|
+ // 发送完成
|
|
|
+ _this.failSend(false)
|
|
|
+ wx.showToast({
|
|
|
+ title: '壁纸发送成功',
|
|
|
+ icon: 'success'
|
|
|
})
|
|
|
- _this.setData({
|
|
|
- progress: 0,
|
|
|
- showCropImg: false
|
|
|
- });
|
|
|
- if (_this.data._timer) {
|
|
|
- clearInterval(_this.data._timer)
|
|
|
- _this.data._timer = null
|
|
|
- }
|
|
|
}
|
|
|
break;
|
|
|
- case EnumCmdEvent.wallpaperMD5:
|
|
|
-
|
|
|
+ case EnumCmdEvent.wallPaperMD5:
|
|
|
+ console.log("开始发送MD5")
|
|
|
+ // 收到回复md5,开始发送图片
|
|
|
+ if (kind == 1 && value === 1) {
|
|
|
+ _this.sendImage(0)
|
|
|
+ } else {
|
|
|
+ _this.failSend(true)
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case EnumCmdEvent.wallPaperData:
|
|
|
+ // 收到回复md5,开始发送图片
|
|
|
+ if (kind == 1 && value === 1) {
|
|
|
+ _this.sendImage(_this.data._imgIndex)
|
|
|
+ } else {
|
|
|
+ _this.failSend(true)
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
break;
|