005-第一代光电小工具(一)

news2025/1/12 4:05:25
头图

第一代光电小工具(一)

文章目录

  • 第一代光电小工具(一)
    • 项目介绍
    • 大致原理描述
      • 核心控件QCustomPlot
      • 关于QCustomPlot
    • 播放音频
    • 软件截图

关键字: QtQmlQCustomPlot曲线SQLite

项目介绍

欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。

在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。

在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。

无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!

重要说明☝

☀该专栏更新到第三代软件开发时将转为收费专栏

大致原理描述

大致原理描述一下,如下图所示:

image-20230703224916900

上位机通过串口控制电路发出特定光光照射人体组织时,组织内的某些分子会吸收光能量并处于激发状态。在激发状态下,这些分子会发生光致发光、光致荧光或光致变色等反应。这些反应会导致人体组织发出特定波长的光谱响应。

为了接收人体组织反射的光谱响应,使用光谱接收电路。这个电路可以包含光传感器(如光电二极管或光敏电阻)和相应的信号处理部分。光传感器将收集到的光转换为电信号,并经过信号处理后输出给上位机。

上位机接收到电信号后,会进行解析和处理。它可能使用数字信号处理算法来提取有用的信息,如光强度、频谱特征或其他参数。然后,上位机可以将这些数据以曲线的形式显示,并记录到数据库中。

这种光谱分析的方法在医学、生物科学和其他领域有广泛应用。通过分析人体组织反射的光谱响应,可以获取关于组织结构、代谢状态、病理变化等方面的信息。这对于诊断疾病、监测健康状况以及进行科学研究具有重要意义。

核心控件QCustomPlot

本来呢,第一版的第一版使用的QChart,结果呢,实在是玩不溜,数据量上来后,那卡的,如果是跟PPT似得,那都是对PPT的侮辱,但是呢,这里又不能说是Qt的锅,据说花钱版本的QChart和不花钱的是两个版本,这个话不是我说,我也是从哪里看到的,如果表达有误,请联系我删除,但是,在公司做项目,不是在学校做学术,我们也是有KPI的,需要在一定的时间内实现,所以直接就转战QCustomPlot,至于对于QChart的改造,那就是后话了。2月30号,或者星期八再解决,先实现需求。

关于QCustomPlot

QCustomPlot是一个用于创建交互式绘图和数据可视化的C++图形库。它是一个强大而灵活的开源库,专门设计用于在Qt应用程序中绘制和呈现各种类型的图表、统计图和科学图形。

QCustomPlot提供了一组易于使用的类和函数,使开发人员能够轻松地创建自定义的绘图和数据可视化。它支持绘制线条、散点图、柱状图、饼图、曲线图、等高线图等多种类型的图表。此外,它还提供了丰富的功能,如缩放、平移、选择区域、图例、坐标轴定制等,以满足不同应用场景的需求。

QCustomPlot具有良好的性能和高度的可定制性。它基于Qt框架,可以与Qt应用程序无缝集成。开发人员可以利用其丰富的API和文档进行定制,以实现各种复杂的绘图需求。

QCustomPlot被广泛应用于科学、工程、金融、数据分析等领域,用于实时绘图、数据监控、数据分析和报告生成等任务。它是一个流行的选择,因为它易于使用、功能强大,并且具有活跃的开发社区支持。

当然了,如果我在这里在搬运一遍QCustomPlot内容,那也是不合适,直接上连接

链接地址:https://blog.csdn.net/z609932088/category_12129310.html?spm=1001.2014.3001.5482

image-20230711225808827

播放音频

首先,这是一个错误的用法,我的需求是通过解析数据范围,来判断病人组织状态,发出不同声音,其实我应该使用 QSoundEffect,而不是QMediaPlayer,不过还是分享一下错误的代码,这段代码在小工具里面试用是没有问题,可以达到提示音的目的,而且延迟也是没有感觉的,只是还是要说明,提示用不适合用QMediaPlayer来实现,而是推荐用QSoundEffect和面的代码就能见到了。

头文件

#ifndef AUDIOTHREAD_H
#define AUDIOTHREAD_H

#include <QThread>
#include <QObject>
#include <QMediaPlayer>

class AudioThread : public QThread
{
public:
    explicit AudioThread(QObject *parent = nullptr);
    void play(QString temp = "");
    void setVolume(int value = 80);
    void stop();
private:
    void run();
private:
    QMediaPlayer* mediaPlayer;
    QString mUrl = "";
};

#endif // AUDIOTHREAD_H

源文件

#include "audiothread.h"

AudioThread::AudioThread(QObject *parent)
    : QThread{parent}
{
    mediaPlayer = new QMediaPlayer(this,QMediaPlayer::LowLatency);                  // 低延迟播放器
    this->start();
}

void AudioThread::play(QString temp)
{
    mUrl = temp;
    this->start();
}

void AudioThread::setVolume(int value)
{
    mediaPlayer->setVolume(value);
}

void AudioThread::stop()
{
    mediaPlayer->stop();
}

void AudioThread::run()
{
    mediaPlayer->stop();
    mediaPlayer->setMedia(QUrl(mUrl));
    mediaPlayer->play();
}

需要注意的是,由于QSoundEffect是在内存中加载音频文件并播放,所以适合播放短暂的提示音效果。如果需要播放较长的音频文件或支持更复杂的音频播放控制,建议使用QMediaPlayer

总结起来,对于简单的提示音效需求,推荐使用QSoundEffect类来实现,它能够提供轻量级、低延迟的音效播放功能。而对于更复杂的音频播放场景,包括长时音频、音频流等,可以选择使用QMediaPlayer类。

软件截图

image-20230703231753464


博客签名2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1017104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Boot】Spring—加载监听器

这里写目录标题 前言加载监听器执行run方法加载配置文件封装Node调用构造器思考 前言 前几天的时候&#xff0c;项目里有一个需求&#xff0c;需要一个开关控制代码中是否执行一段逻辑&#xff0c;于是理所当然的在yml文件中配置了一个属性作为开关&#xff0c;再配合nacos就可…

Prometheus黑盒测试模块,监控TCP端口+ HTTP/HTTPS路由状态

文章目录 一、黑盒测试使用场景二、安装blackbox-exporter三、监控TCP端口四、监控HTTP/HTTPS路由五、最后分享几款Grafana模板 一、黑盒测试使用场景 官方下载地址 blackbox-exporter是Prometheus官方提供的一个黑盒测试的解决方案&#xff0c;可用于以下使用场景&#xff1a…

LLaMA参数微调方法

1.Adapter Tuning&#xff1a;嵌入在transformer中 新增了一个名为adapter的结构&#xff0c;其核心思想是保持模型其他原始参数不变&#xff0c;只改变adapter的参数&#xff0c;其结构如下图所示&#xff1a; 1.在每一个transformer模块最后都加入一层adapter。 2.adapter首…

Valine表白动态心跳源码

动态心跳源码 给前女友表白写的网页现在用不着喽 &#xff08;主要功能&#xff09; 记录在一起的时长QQ头像自动同步集成随机古诗词Valine留言评论&#xff08;Valine是一款快速、简洁且高效的无后端评论系统&#xff09; 出售源码&#xff1a;50&#xff08;联系方式在图中…

C# Onnx Yolov8 Pose 姿态识别

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…

HTTP响应详解, HTTP请求构造及HTTPS详解

HTTP响应详解 认识 "状态码" (status code) 状态码表示访问一个页面的结果 . ( 是访问成功 , 还是失败 , 还是其他的一些情况 ...). 以下为常见的状态码 . 200 OK 这 是一个最常见的状态码, 表示访问成功 . 抓包抓到的大部分结果都是 200 例如访问搜狗…

差分方程模型:兔子繁殖问题(斐波拉契数列)

背景 兔子出生后两个月就能生小兔子&#xff0c;如果每月生一次且恰好生一对小兔子&#xff08;雌性各一只&#xff09;&#xff0c;且出生的兔子都能成活。试问&#xff1a;由一对小兔子开始&#xff0c;一年后有多少对兔子&#xff0c;两年后呢&#xff1f; 【问题分析】 当…

【深度学习】Windows配置深度学习环境

0.前提 OS&#xff1a;Windows 10&#xff08;Windows 11也可&#xff09; CPU&#xff1a;i5-8300H GPU&#xff1a;NVIDIA-GTX1060 Python3.9.8 Pycharm2020-pro 参考博客&#xff1a; Anaconda超详细安装教程&#xff08;Windows环境下&#xff09; cuda安装以及conda安装…

系统架构设计师(第二版)学习笔记----信息系统基础

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----信息系统基础 文章目录 一、信息系统概述1.1 信息系统的5个基本功能1.2 信息系统发展阶段1.3 初始阶段的主要特点1.4 传播阶段的主要特点1.5 控制阶段的主要特点1.6 集成阶段的主要特点1.7 信息系统的种类…

Java————形参和实参

方法的形参相当于数学函数中的自变量&#xff0c;比如&#xff1a; Java中方法的形参就相当于sum函数中的自变量n&#xff0c; 用来接收sum函数在调用时传递的值的。 形参的名字可以随意取&#xff0c;对方法都没有任何影响&#xff0c; 形参只是方法在定义时需要借助的一个变…

Netty笔记

NIO介绍 全程java non-blocking IO,是JDK提供的新API。从1.4开始&#xff0c;提供了一系列改进的输入、输出特性&#xff0c;被统称为NIO&#xff0c;即同步非阻塞NIO相关类放到了java.nio下&#xff0c;并且对原java.io包中的很多了进行了改写NIO三大组件&#xff1a;Channel…

linux-如何用起来ubuntu

1 Oracle VM VirtualBox安装ubuntu20.04虚拟机 【工具】->【新建】 1.1 虚拟电脑名称和系统类型 【名称】&#xff1a;自定义名称即可 【文件夹】&#xff1a;虚拟机文件将要存储的路径 【虚拟光盘】&#xff1a;将要安装的虚拟机iso文件 1.2 自动安装 【用户名】&…

[Qt]多线程和套接字通信

文章目录 1. 多线程的使用1.1 线程类 QThread1.1.1 常用共用成员函数1.1.2 信号槽1.1.3 静态函数1.1.4 任务处理函数 1.2 使用方式11.2.1 操作步骤1.2.2 示例代码 1.3 使用方式21.3.1 操作步骤1.3.2 示例代码 2. 线程池的使用2.1 QRunnable2.2 QThreadPool 3. 套接字通信3.1 QT…

硬件故障诊断:快速定位问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Python编程——for循环基础语法、range语句以及一些案例

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 前言 在之前的文章我们讲解过 while 循环&#xff0c;除了w…

基于ASCON的AEAD

1. 引言 前序博客&#xff1a; ASCON&#xff1a;以“慢而稳”赢得NIST轻量级加密算法标准密码学中的AEAD(authenticated encryption with associated data) 对称密钥加密过去数年来已发生改变&#xff0c;具体为&#xff1a; 当今主要使用stream ciphers&#xff0c;因其比…

微信小程序 动漫游戏资讯推荐系统

配置文件 (自动编号、配置参数名称、配置参数值)&#xff1b; 系统的设计与实现采用Spring、SpringMVC和MyBatis作为主体框架,系统设计遵循界面层、业务逻辑层和数据访问层的Web开发三层架构。采用B/S结构,使得系统更加容易维护。系统的设计与实现主要实现角色有管理员和用户,管…

预训练相关知识

1、上下文无关语义表示方式存在问题 语义不同的词具有相同的表示&#xff0c;&#xff08;apple 电子产品苹果/水果苹果&#xff09; 容易出现oov问题 2、神经语言编码器 2.1、序列模型 cnn/rnn等&#xff0c;捕获局部信息和序列依赖信息&#xff0c;无法捕获长距离依赖。易训…

【JavaScript】HTML文件插入JavaScript函数

介绍 在HTML文件中插入JavaScript函数的方法如下&#xff1a; 1、在HTML文件中使用<script>标签来定义JavaScript函数&#xff0c;例如&#xff1a; <script> function myFunction() {// 在这里编写JavaScript函数代码 } </script>2、在HTML文件中调用Jav…

2023年稀有金属行业研究报告

第一章 行业概况 稀有金属是一类在地球上分布较为稀少或从原矿中分离较为困难的金属。这类金属包括稀土、锂、钼、钨、铟、钛等。由于其独特的物理和化学性质&#xff0c;稀有金属在许多高技术领域中都是不可或缺的材料&#xff0c;如航天、原子能、电子和国防等。 稀有金属在…