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

2023-09-17 14:09:39
头图

第一代光电小工具(一)


关键字: 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
更多推荐

孙宇晨出席米尔肯研究院亚洲峰会:持续推动行业破圈 亚洲将成重要加密中心

9月14日,波场TRON创始人、火币HTX全球顾问委员会成员孙宇晨受邀出席2023米尔肯研究院亚洲峰会(2023MilkenInstituteAsiaSummit),与前美国驻新加坡大使、WagarGlobalAdvisors咨询公司主席KirkWagar就加密行业未来趋势相关问题进行了深度对话。孙宇晨在对谈中表示,稳

DETR 系列 Mask Frozen-DETR: High Quality Instance Segmentation with One GPU 论文阅读笔记

DETR系列MaskFrozen-DETR:HighQualityInstanceSegmentationwithOneGPU论文阅读笔记一、Abstract二、引言三、相关工作目标检测实例分割讨论四、本文的方法4.1Baseline设置结果实验设置4.2图像特征编码器DeformableencoderblockSwi

AI实战营第二期 第九节 《底层视觉与MMEditing》——笔记10

文章目录AI实战营第二期第九节《底层视觉与MMEditing》什么是超分辨率图像分辨率的目标应用方向超分的类型单图超分的解决思路深度学习时代的超分辨率算法SRCNNFastSRCNNSRResNet感知损失VS.均方误差均方误差感知损失对抗生成网络GAN应用于超分辨率如何学习生成器网络对抗训练GAN优化目标DCGANS

基于SpringBoot+Vue的餐饮管理系统设计与实现

前言💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏推荐订阅👇🏻2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选

Spring Cloud 负载平衡的意义什么?

目录一、什么是负载平衡二、为什么需要负载平衡三、SpringCloud如何实现负载平衡四、负载平衡的nginx配置一、什么是负载平衡负载平衡是指将网络流量在多个服务器之间分布,以达到提高系统性能、增强可靠性和提供更好用户体验的目的。在负载平衡的架构中,多个服务器被组织成一个集群,共同处理用户的请求。负载平衡的主要作用有

Hive的基本SQL操作(DDL篇)

目录​编辑一、数据库的基本操作1.1展示所有数据库1.2切换数据库1.3创建数据库1.4删除数据库1.5显示数据库信息1.5.1显示数据库信息1.5.2显示数据库详情二、数据库表的基本操作2.1创建表的操作2.1.1创建普通hive表(不包含行定义格式)2.1.2创建自定义行格式的hive表2.1.3创建默认分隔符的h

FPGA原理与结构(16)——时钟IP核的使用与测试

系列文章目录:FPGA原理与结构(0)——目录与传送门一、前言本文介绍xilinx的时钟IP核ClockingWizardv6.0的具体使用与测试过程,在学习一个IP核的使用之前,首先需要对于IP核的具体参数和原理有一个基本的了解,具体可以参考:FPGA原理与结构——时钟IP核原理学习https://blog.csdn

做题(1)

1.fileinclude打开发现提示flag在flag.php里边查看页面源代码$lan=$_COOKIE['language'];这句话是关键变量lan是用cookie传参的@include("english.php");这句话表明了文件包含include函数用php伪协议filer绕过@include($lan.

[ES6]模块

[ES6]模块特点export与import基本用法导入导出基本方式导入导出等价方式html导入别名导出默认导出基本用法默认导出对象复合使用import命令的特点只读属性单例模式静态执行特性在ES6前,实现模块化使用的是RequireJS或者seaJS(分别是基于AMD规范的模块化库,和基于CMD规范的模块化库)ES6

Java 类和对象

在面向对象语言中万物皆对象,一切都围绕对象来进行,找对象、建对象,用对象等。类:把具有相同特征和行为的一组对象抽象为类,类是抽象概念,如人类、车类等,无法具体到每个实体。对象:某个类的一个实体,当有了对象后,这些特征便有了相应的值,行为也就有了相应的意义。类是描述某一对象的统称,对象是这个类的一个实例而已。有类之后就能

商城系统开发,如何确保用户数据的安全性?

确保用户数据的安全性是商城系统开发中至关重要的一项任务。随着数字化时代的到来,用户的个人信息和交易数据已成为黑客和不法分子的重要目标,因此保护用户数据的安全性对于商城系统的成功运营至关重要。在开发商城系统时,以下几个方面是确保用户数据安全性的关键要素(仅供参考)。第一点,建立严格的访问控制和权限管理机制。商城系统应该采

热文推荐