cshenfu
2023-03-10 3e788004c97034f6d7d52ffdbffacf60e94c48f7
read_com/js/function.js
@@ -24,17 +24,140 @@
sum_region6_2 = 0,
sum_region7_2 = 0,
sum_region8_2 = 0,
sum_region9_2 = 0  //每个区域的总值
sum_region9_2 = 0,  //每个区域的总值
sum_9_region = [[],[],[],[],[],[],[],[],[]],
sum_9_region2 = [[],[],[],[],[],[],[],[],[]],
persens_arr = [],
persens_arr2 = []
var region_length = [] 
var region_length2 = [] //鞋垫分区的个数
var left_port = "/dev/tty.usbserial-14110"
var right_port = "/dev/tty.usbserial-14130"//左右脚对应的串口号
var read_file = true
var heatmapInstance = h337.create({
    container: document.querySelector('.left_map')
  });
var heatmapInstance2 = h337.create({
container: document.querySelector('.right_map')
});
// var dom = document.getElementById('chart-container');
// var myChart = echarts.init(dom, 'dark', {
//   renderer: 'canvas',
//   useDirtyRect: false
// });
// myChart.setOption(
//     // (option = {
//     //   visualMap: {
//     //     show: false,
//     //     min: 0,
//     //     max: 3000,
//     //     inRange: {
//     //       color: [
//     //         '#313695',
//     //         '#4575b4',
//     //         '#74add1',
//     //         '#abd9e9',
//     //         '#e0f3f8',
//     //         '#ffffbf',
//     //         '#fee090',
//     //         '#fdae61',
//     //         '#f46d43',
//     //         '#d73027',
//     //         '#a50026'
//     //       ]
//     //     }
//     //   },
//     //   xAxis3D: {
//     //     type: 'value'
//     //   },
//     //   yAxis3D: {
//     //     type: 'value'
//     //   },
//     //   zAxis3D: {
//     //     type: 'value',
//     //     max: 3000,
//     //     min: 0
//     //   },
//     //   grid3D: {
//     //     axisLine: {
//     //       lineStyle: { color: '#fff' }
//     //     },
//     //     axisPointer: {
//     //       lineStyle: { color: '#fff' }
//     //     },
//     //     viewControl: {
//     //       // autoRotate: true
//     //     },
//     //     light: {
//     //       main: {
//     //         shadow: true,
//     //         quality: 'ultra',
//     //         intensity: 1.5
//     //       }
//     //     }
//     //   },
//     //   series: [
//     //     {
//     //       type: 'bar3D',
//     //       data: new_3d_data,
//     //       shading: 'lambert',
//     //       label: {
//     //         formatter: function (param) {
//     //           return param.value[2].toFixed(1);
//     //         }
//     //       }
//     //     }
//     //   ]
//     // })
//     (option = {
//         tooltip: {},
//         backgroundColor: '#fff',
//         visualMap: {
//             show: false,
//             dimension: 2,
//             min: -1,
//             max: 1,
//             inRange: {
//                 color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
//             }
//         },
//         xAxis3D: {
//             type: 'value'
//         },
//         yAxis3D: {
//             type: 'value'
//         },
//         zAxis3D: {
//             type: 'value',
//         max: 3000,
//         min: 0
//         },
//         grid3D: {
//             viewControl: {
//                 // projection: 'orthographic'
//             }
//         },
//         series: [{
//             type: 'surface',
//             wireframe: {
//                 // show: false
//             },
//             equation: {
//                 z: function (x, y) {
//                     if (Math.abs(x) < 0.1 && Math.abs(y) < 0.1) {
//                         return '-';
//                     }
//                     return x*x*(1/y);
//                 }
//             }
//         }]
//     }
//     )
//   );
@@ -122,6 +245,23 @@
    }
}
// 一维数组转多维
function fun(fromArr,mountOfEachLine) {
    // let newArr = [];
    // let len = fromArr.length;
    // let lineNum =  len % mountOfEachLine == 0 ? len / mountOfEachLine : Math.ceil(len / mountOfEachLine);
    // for (let i = 0; i < lineNum; i++) {
    //     let tempElement = fromArr.slice(i*mountOfEachLine,(i+1)*mountOfEachLine);
    //     newArr.push(tempElement);
    // }
    // return newArr;
    var arr2 = [];
     let len = fromArr.length;
     for (let i = 0, j = 0; i < len; i += mountOfEachLine, j++) {
       arr2[j] = fromArr.splice(0, mountOfEachLine);
     }
     return arr2;
}
//小数转化百分比
function toPercent(point){
@@ -136,8 +276,13 @@
    let str = ``;
    //增加\t为了不让表格显示科学计数法或者其他格式
    for(let i = 0 ; i < data.length ; i++ ){
          str+=`${data[i].data.join(',') + '\t'},`;
          str+='\n';
        if(i == data.length-1){
            str+=`${data[i].data.join(',')}`;
        }else{
            str+=`${data[i].data.join(',') + '\t'},`;
            str+='\n';
        }
    }
    //encodeURIComponent解决中文乱码
    let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
@@ -390,6 +535,10 @@
            console.log("清空了")
            arr_arr = []
            arr_arr2 = [] //清除上一次数据
            sum_9_region = [[],[],[],[],[],[],[],[],[]]
            sum_9_region2 = [[],[],[],[],[],[],[],[],[]]
            persens_arr = []
            persens_arr2 = []
        }
        clear = true
        clearInterval(timer)
@@ -400,13 +549,13 @@
            if(data1.serialport == right_port){
                let data = data1.data
                let data_end = data1.data.flat()
                let data_end = data1.data.flat(Infinity)
            for(let i=0;i<data_map.data.length;i++){
                data_map.data[i].value = data_end[i]
                data_map.data[i].radius = data_end[i]<10?0:30
                data_map2.data[i].value = data_end[i]
                data_map2.data[i].radius = data_end[i]<10?0:50
            }
          
              heatmapInstance2.setData(data_map);
              heatmapInstance2.setData(data_map2);
                arr_arr.push(data1)
                for(let i=0;i<data.length;i++){
                    for(let x=0;x<data[i].length;x++){
@@ -436,6 +585,15 @@
                        }
                        if(i==data.length-1&&x==data[i].length-1){
                            sum_99 = sum_region1+sum_region2+sum_region3+sum_region4+sum_region5+sum_region6+sum_region7+sum_region8+sum_region9
                            sum_9_region[0].push(sum_region1)
                            sum_9_region[1].push(sum_region2)
                            sum_9_region[2].push(sum_region3)
                            sum_9_region[3].push(sum_region4)
                            sum_9_region[4].push(sum_region5)
                            sum_9_region[5].push(sum_region6)
                            sum_9_region[6].push(sum_region7)
                            sum_9_region[7].push(sum_region8)
                            sum_9_region[8].push(sum_region9)
                            $('.dataRight .region1 .ave').text((sum_region1/region_length[0]).toFixed(5));
                            $('.dataRight .region1 .pr').text(toPercent((sum_region1/sum_99).toFixed(5)));
                            $('.dataRight .region2 .ave').text((sum_region2/region_length[1]).toFixed(5));
@@ -474,14 +632,13 @@
                            addData(lineChart, 7, 'time3',(sum_region8/region_length[7]).toFixed(5))
                            addData(lineChart, 8, 'time3',(sum_region9/region_length[8]).toFixed(5))
                            
                        }
                    }
                }
                sum_99 = 0;sum_region1 = 0;sum_region2 = 0;sum_region3 = 0;sum_region4 = 0;sum_region5 = 0;sum_region6 = 0;sum_region7 = 0;sum_region8 = 0;sum_region9 = 0
            }else if(data1.serialport == left_port){
                let data = data1.data
                let data_end = data1.data.flat()
                let data_end = data1.data.flat(Infinity)
                for(let i=0;i<data_map.data.length;i++){
                    data_map.data[i].value = data_end[i]
                    data_map.data[i].radius = data_end[i]<10?0:50
@@ -553,6 +710,15 @@
                            addData(lineChart2, 6, 'time3',(sum_region7_2/region_length2[6]).toFixed(5))
                            addData(lineChart2, 7, 'time3',(sum_region8_2/region_length2[7]).toFixed(5))
                            addData(lineChart2, 8, 'time3',(sum_region9_2/region_length2[8]).toFixed(5))
                            sum_9_region2[0].push(sum_region1_2)
                            sum_9_region2[1].push(sum_region2_2)
                            sum_9_region2[2].push(sum_region3_2)
                            sum_9_region2[3].push(sum_region4_2)
                            sum_9_region2[4].push(sum_region5_2)
                            sum_9_region2[5].push(sum_region6_2)
                            sum_9_region2[6].push(sum_region7_2)
                            sum_9_region2[7].push(sum_region8_2)
                            sum_9_region2[8].push(sum_region9_2)
                        }
                    }
                }
@@ -565,17 +731,27 @@
    //结束按钮
    $('.end').click(function(){
        // var socket = io('http://127.0.0.1:3001');
        console.log(arr_arr,arr_arr2)
        clear = false
        socket.destroy();
        // socket.disconnect(true)
        // socket.close(false) //关闭socket不再接收传回的数据
        clearInterval(timer)
        $('.start').attr('disabled',false)
        $('.last').attr('disabled',false)
        $('.next').attr('disabled',false)
        $('.back').attr('disabled',false) //开启回放功能
        $('.download').attr('disabled',false)
        // console.log(sum_9_region,sum_9_region2)
        if(arr_arr.length == 0&&arr_arr2.length == 0){
            alert("暂无数据")
            $('.start').attr('disabled',false)
        }else{
            for(let i=0;i<sum_9_region.length;i++){
                let data_end_region = eval(sum_9_region[i].join('+'))
                persens_arr.push(data_end_region)
            }
            clear = false
            socket.destroy();
            // socket.disconnect(true)
            // socket.close(false) //关闭socket不再接收传回的数据
            clearInterval(timer)
            $('.start').attr('disabled',false)
            $('.last').attr('disabled',false)
            $('.next').attr('disabled',false)
            $('.back').attr('disabled',false) //开启回放功能
            $('.download').attr('disabled',false)
        }
    })
    //回放功能
@@ -585,18 +761,41 @@
        }else{
            clear = false
        timer = setInterval(function(){
              let data_end_left = arr_arr2[step2]?.data.flat(Infinity)
              let data_end_right = arr_arr[step]?.data.flat(Infinity)
            if(arr_arr.length!=0&&arr_arr2.length!=0){
                step == arr_arr.length-1?arr_arr.length-1:step++
                step2 == arr_arr2.length-1?arr_arr2.length-1:step2++
                for(let i=0;i<data_map.data?.length;i++){
                    data_map.data[i].value = data_end_left[i]
                    data_map.data[i].radius = data_end_left[i]<10?0:50
                }
                for(let i=0;i<data_map2.data?.length;i++){
                    data_map2.data[i].value = parseInt(data_end_right[i])
                    data_map2.data[i].radius = parseInt(data_end_right[i])<10?0:50
                }
                heatmapInstance.setData(data_map);
                heatmapInstance2.setData(data_map2);
            }else if(arr_arr.length == 0&&arr_arr2.length!=0){
                step = 0
                step2 == arr_arr2.length-1?arr_arr2.length-1:step2++
                for(let i=0;i<data_map.data?.length;i++){
                    data_map.data[i].value = data_end_left[i]
                    data_map.data[i].radius = data_end_left[i]<10?0:50
                }
                heatmapInstance.setData(data_map);
            }else if(arr_arr2.length == 0&&arr_arr.length!=0){
                step2 = 0
                step == arr_arr.length-1?arr_arr.length-1:step++
                for(let i=0;i<data_map2.data?.length;i++){
                    data_map2.data[i].value = data_end_right[i]
                    data_map2.data[i].radius = data_end_right[i]<10?0:50
                    heatmapInstance2.setData(data_map2);
                }
            }
            for(let i=0;i<arr_arr[step]?.data.length;i++){
                    for(let x=0;x<arr_arr[step].data[i].length;x++){
                        let id_end = trueID(i)
@@ -730,7 +929,8 @@
                    }
                }
        }
        console.log(step,step2,arr_arr.length-1,arr_arr2.length-1)
        heatmapInstance.setData(data_map);
        heatmapInstance2.setData(data_map2);
        if(arr_arr.length!=0&&arr_arr2.length!=0){
            if(step == arr_arr.length-1&&step2 == arr_arr2.length-1){
                clearInterval(timer)
@@ -751,9 +951,8 @@
            }
        }
        
            sum_99 = 0;sum_region1 = 0;sum_region2 = 0;sum_region3 = 0;sum_region4 = 0;sum_region5 = 0;sum_region6 = 0;sum_region7 = 0;sum_region8 = 0;sum_region9 = 0
            sum_99_2 = 0;sum_region1_2 = 0;sum_region2_2 = 0;sum_region3_2 = 0;sum_region4_2 = 0;sum_region5_2 = 0;sum_region6_2 = 0;sum_region7_2 = 0;sum_region8_2 = 0;sum_region9_2 = 0
        sum_99 = 0;sum_region1 = 0;sum_region2 = 0;sum_region3 = 0;sum_region4 = 0;sum_region5 = 0;sum_region6 = 0;sum_region7 = 0;sum_region8 = 0;sum_region9 = 0
        sum_99_2 = 0;sum_region1_2 = 0;sum_region2_2 = 0;sum_region3_2 = 0;sum_region4_2 = 0;sum_region5_2 = 0;sum_region6_2 = 0;sum_region7_2 = 0;sum_region8_2 = 0;sum_region9_2 = 0
            
        },40)
        }
@@ -768,6 +967,32 @@
        clear = false
        step ==0?0:step--
        step2 ==0?0:step2--
        let data_end_left = arr_arr2[step2]?.data.flat(Infinity)
        let data_end_right = arr_arr[step]?.data.flat(Infinity)
        if(arr_arr.length!=0&&arr_arr2.length!=0){
            for(let i=0;i<data_map.data?.length;i++){
                data_map.data[i].value = data_end_left[i]
                data_map.data[i].radius = data_end_left[i]<10?0:50
            }
            for(let i=0;i<data_map2.data?.length;i++){
                data_map2.data[i].value = data_end_right[i]
                data_map2.data[i].radius = data_end_right[i]<10?0:50
            }
            heatmapInstance.setData(data_map);
            heatmapInstance2.setData(data_map2);
        }else if(arr_arr.length == 0&&arr_arr2.length!=0){
            for(let i=0;i<data_map.data?.length;i++){
                data_map.data[i].value = data_end_left[i]
                data_map.data[i].radius = data_end_left[i]<10?0:50
            }
            heatmapInstance.setData(data_map);
        }else if(arr_arr2.length == 0&&arr_arr.length!=0){
            for(let i=0;i<data_map2.data?.length;i++){
                data_map2.data[i].value = data_end_right[i]
                data_map2.data[i].radius = data_end_right[i]<10?0:50
                heatmapInstance2.setData(data_map2);
            }
        }
        for(let i=0;i<arr_arr[step]?.data.length;i++){
            for(let x=0;x<arr_arr[step].data[i].length;x++){
                let id_end = trueID(i)
@@ -903,7 +1128,6 @@
                }
            }
        }
        console.log(step,step2,arr_arr.length-1,arr_arr2.length-1)
        sum_99 = 0;sum_region1 = 0;sum_region2 = 0;sum_region3 = 0;sum_region4 = 0;sum_region5 = 0;sum_region6 = 0;sum_region7 = 0;sum_region8 = 0;sum_region9 = 0
        sum_99_2 = 0;sum_region1_2 = 0;sum_region2_2 = 0;sum_region3_2 = 0;sum_region4_2 = 0;sum_region5_2 = 0;sum_region6_2 = 0;sum_region7_2 = 0;sum_region8_2 = 0;sum_region9_2 = 0
        
@@ -915,15 +1139,37 @@
    $('.next').click(function(){
        clearInterval(timer)
        clear = false
        let data_end_left = arr_arr2[step2]?.data.flat(Infinity)
        let data_end_right = arr_arr[step]?.data.flat(Infinity)
        if(arr_arr.length!=0&&arr_arr2.length!=0){
            step == arr_arr.length-1?arr_arr.length-1:step++
            step2 == arr_arr2.length-1?arr_arr2.length-1:step2++
            for(let i=0;i<data_map.data?.length;i++){
                data_map.data[i].value = data_end_left[i]
                data_map.data[i].radius = data_end_left[i]<10?0:50
            }
            for(let i=0;i<data_map2.data?.length;i++){
                data_map2.data[i].value = data_end_right[i]
                data_map2.data[i].radius = data_end_right[i]<10?0:50
            }
            heatmapInstance.setData(data_map);
            heatmapInstance2.setData(data_map2);
        }else if(arr_arr.length == 0&&arr_arr2.length!=0){
            step = 0
            step2 == arr_arr2.length-1?arr_arr2.length-1:step2++
            for(let i=0;i<data_map.data?.length;i++){
                data_map.data[i].value = data_end_left[i]
                data_map.data[i].radius = data_end_left[i]<10?0:50
            }
            heatmapInstance.setData(data_map);
        }else if(arr_arr2.length == 0&&arr_arr.length!=0){
            step2 = 0
            step == arr_arr.length-1?arr_arr.length-1:step++
            for(let i=0;i<data_map2.data?.length;i++){
                data_map2.data[i].value = data_end_right[i]
                data_map2.data[i].radius = data_end_right[i]<10?0:50
                heatmapInstance2.setData(data_map2);
            }
        }
        for(let i=0;i<arr_arr[step]?.data.length;i++){
            for(let x=0;x<arr_arr[step].data[i].length;x++){
@@ -1059,7 +1305,6 @@
                }
            }
        }
        console.log(step,step2,arr_arr.length-1,arr_arr2.length-1)
        sum_99 = 0;sum_region1 = 0;sum_region2 = 0;sum_region3 = 0;sum_region4 = 0;sum_region5 = 0;sum_region6 = 0;sum_region7 = 0;sum_region8 = 0;sum_region9 = 0
        sum_99_2 = 0;sum_region1_2 = 0;sum_region2_2 = 0;sum_region3_2 = 0;sum_region4_2 = 0;sum_region5_2 = 0;sum_region6_2 = 0;sum_region7_2 = 0;sum_region8_2 = 0;sum_region9_2 = 0
        
@@ -1068,7 +1313,6 @@
    //下载文件
    $('.download').click(function(){
        console.log(arr_arr,arr_arr2)
        let time = getNowTime()
        if(arr_arr.length == 0&&arr_arr2.length>0){
            tableToExcel(arr_arr2,`左脚${time}.csv`)
@@ -1085,6 +1329,8 @@
    //给input标签绑定change事件,一上传选中的.xls文件就会触发该函数
    $('#excel-file').change(function(e) {
        read_file = false
        arr_arr = []
        var files = e.target.files;
        var fileReader = new FileReader();
            fileReader.onload = function(ev) {
@@ -1095,7 +1341,7 @@
                        }) // 以二进制流方式读取得到整份excel表格对象
                    var persons = []; // 存储获取到的数据
                } catch (e) {
                    console.log('文件类型不正确');
                    console.log('文件类型不正确',e);
                    return;
                }
        
@@ -1105,15 +1351,21 @@
                for (var sheet in workbook.Sheets) {
                    if (workbook.Sheets.hasOwnProperty(sheet)) {
                        fromTo = workbook.Sheets[sheet]['!ref'];//读取的全部数据 A1:AN203
                        console.log(fromTo);
                        persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet], {header:1,defval:''}));//合并数据
                        break; // 如果只取第一张表,就取消注释这行
                        // break; // 如果只取第一张表,就取消注释这行
                    }
                }
                //在控制台打印出来表格中的数据
                console.log(persons);
                for(let i=0;i<persons.length;i++){
                    persons[i].length = 112
                    let data_ee = fun(persons[i],28)
                    arr_arr.push({"data":data_ee})
                }
                $('.last').attr('disabled',false)
                $('.next').attr('disabled',false)
                $('.back').attr('disabled',false) //开启回放功能
                $('.download').attr('disabled',true)
                text=persons;//训练数据集text
                // console.log(persons)
        };
        // 以二进制方式打开文件
        fileReader.readAsBinaryString(files[0]);