04眼动识别软件详情1

对应视频链接点击直达

01项目点击下载,可直接运行(含数据库)


什么数据库,受试者系统,数据接受现实等等,就不说了···这里简单说说范式页面的设计和代码

主体功能(范式)

10S:提示----执行----休息

波形实时显示

进行试验时,需要监察系统的运行情况。
如:现强电流干扰、信号丢失、波形明显错误或软件BUG等情况


```python
# 前端
<div class="col-md-12 col-sm-12 col-xs-12" style="position: relative;z-index: 1;width: 102%;margin-left: -18px;">
  <div class="x_panel">
    <div class="x_content">
      <div style="width: 118%; height: 150px;">
        <canvas id="chart4"></canvas>
      </div>
    </div>
  </div>
</div>
# 对应JS
var ctx4 = document.getElementById('chart4').getContext('2d');
    var chart4 = new Chart(ctx4, {
      type: 'line',
      data: {
        labels: [
          "","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",
          "","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",
          "","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",
          "","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",
          "","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",
          "","","","","","","","","","","",

          ],
        datasets: [
            {
                data: [
                    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,


                    ],
                borderColor: '#4CAF50',
                fill: false,
                label: '眼电',
                pointRadius: 0,    //设置圆点半径
                showPoint: false, // 设置不显示数据点
                borderWidth: 0.5, // 设置线条宽度以呈现为曲线

            },

        ]
      },
      options: {
        responsive: true,
        maintainAspectRatio: false,
        scales: {
            y: {
              min: -65, // Y 轴的最小值为 0
              max: 65, // Y 轴的最大值为 150
            },
        },
      }
    });

# 波形数据更新
var isRunning = false;
    var intervalId;
    // 更新数据函数
    function updateData() {

        isRunning = true;
        intervalId = setInterval(function() {
            if (isRunning) {
                $.ajax({
                    url: '/xunlian/quchu_shujuk',
                    type: 'get',
                    data: {},
                    dataType: 'json',
                    success: function(data) {

                        {#眼电#}
                        chart4.data.datasets[0].data.splice(0, 128);
                        var data_yandian = data.data.data_yandian;
                        for(var i=0;i<128;i++){
                            var delta = data_yandian[i];
                            chart4.data.datasets[0].data.push(delta);
                        }
                        chart4.update();

                        {#脑电#}
                        chart5.data.datasets[3].label = '通道四 当前数据时间:' + data.data.shiyan_time;
                        chart5.data.datasets[0].data.splice(0, 128);
                        chart5.data.datasets[1].data.splice(0, 128);
                        chart5.data.datasets[2].data.splice(0, 128);
                        chart5.data.datasets[3].data.splice(0, 128);
                        var data_naodiana = data.data.data_naodiana;
                        var data_naodianb = data.data.data_naodianb;
                        var data_naodianc = data.data.data_naodianc;
                        var data_naodiand = data.data.data_naodiand;
                        {#alert(data_naodianc);#}
                        for(var i=0;i<128;i++){
                            var delta0 = data_naodiana[i]+300;
                            chart5.data.datasets[0].data.push(delta0);
                            var delta1 = data_naodianb[i]+100;
                            chart5.data.datasets[1].data.push(delta1);
                            var delta2 = data_naodianc[i]-100;
                            chart5.data.datasets[2].data.push(delta2);
                            var delta3 = data_naodiand[i]-300;
                            chart5.data.datasets[3].data.push(delta3);
                        }

                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        console.error('Error: ' + textStatus, errorThrown);
                    }

                });
            }
            chart5.update();
        }, 500);

    }


    // 监听按钮点击事件,调用更新数据函数
    document.getElementById('updateButton').addEventListener('click', updateData);
    document.getElementById('stopButton').addEventListener('click', function() {
        isRunning = false;
        clearInterval(intervalId);
    });
试验行为提示器

软件控制下的行为提示,对时间的把控更为精准,也排除了人为因素的干扰

# 前端
<div class="count" style="font-size: 144px" id="displayWindow">准备</div>
# 对应JS
<script>
    {#let intervalId;#}
    var intervalId;
    let duration;
    let countdown;

  // 等待文档加载完成
  window.onload = function() {
    // 通过id获取按钮元素
    var button = document.getElementById('button999');

    // 为按钮添加点击事件监听器
    button.addEventListener('click', function() {
        // 弹出提示框
        {#alert('你点击了3分钟的按钮!');#}
        // 清除之前的定时器
        clearInterval(intervalId);

        // 获取持续时间
        duration = parseInt(this.getAttribute('data-duration'), 10);
        countdown = duration;

        // 显示任务开始
        document.getElementById('displayWindow').textContent = '准备';

        // 设置倒计时定时器
        intervalId = setInterval(function() {
          if (countdown > 0) {
            //5秒随机显示一个字母并发送
            const randomLetter = getRandomLetter();
            displayLetterAndSend(randomLetter);
            setTimeout(displayRestAndSend, 4500);

            countdown -= 10;
          } else {
            // 时间结束,显示“结束”并触发GET请求
            clearInterval(intervalId);
            document.getElementById('displayWindow').textContent = '结束';

            triggerGetRequest();
          }
        }, 10000);
      });
  };
  // 获取随机字母
    function getRandomLetter() {
      const letters = ['眨眼', '向左', '向右', '平静'];
      {#const letters = ['a', 'c', 'b', 'n', 'm'];#}
      return letters[Math.floor(Math.random() * letters.length)];
    }

    // 显示字母并发送
    function displayLetterAndSend(letter) {
      document.getElementById('displayWindow').textContent = letter;

      // 这里只是模拟发送数据,实际项目中你需要使用AJAX或Fetch API发送请求
      {#console.log('Sending letter:', letter);#}
      // 发送逻辑可以放在这里
      $.ajax({
        url: '/xunlian/huancunbiaoqian',
        type: 'get',
        data: {direction: letter},
        dataType: 'json',
          success: function(data) {
            document.getElementById('jisuanjieguo').textContent = data.data;
          },
      });
    }
    // 显示 休息 并 发送
    function displayRestAndSend() {
      document.getElementById('displayWindow').textContent = '休息';
      document.getElementById('jisuanjieguo').textContent = '休息';
      setTimeout(daojishi4, 1000);
      const letters = '休息';
      // 发送逻辑可以放在这里
      $.ajax({
        url: '/xunlian/huancunbiaoqian',
        type: 'get',
        data: {direction: letters},
        dataType: 'json',
      });
    }
    function daojishi4() {
      document.getElementById('displayWindow').textContent = '4';
      setTimeout(daojishi3, 1000);
    }
    function daojishi3() {
      document.getElementById('displayWindow').textContent = '3';
      setTimeout(daojishi2, 1000);
    }
    function daojishi2() {
      document.getElementById('displayWindow').textContent = '2';
      setTimeout(daojishi1, 1000);
    }
    function daojishi1() {
      document.getElementById('displayWindow').textContent = '1';
    }
    // 触发GET请求
    function triggerGetRequest() {
      // 这里只是模拟触发GET请求,实际项目中你需要使用AJAX或Fetch API发送GET请求
        $.ajax({
        url: '/xunlian/xljieshu',
        type: 'get',
        data: {},
        dataType: 'json',
      });
        {#console.log('Triggering GET request...');#}
    }
</script>
实验时间控制器

范式试验的时间控制更精准
这边的代码在上面~

范式页面其他

其他就是前后台的数据传输显示以及各种逻辑处理,这里不展开

结语

其他

本来想说说硬件的,但是真没啥说的,某宝就行···直接买

V:justwaityou1314
懂的都懂
以下是废话

别的也没啥说的 , 如果觉得可以 , 希望一键三连支持一下 !

ok,那就这样吧~

欢迎各位大佬留言吐槽,也可以深入科学探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

justwaityou1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值