当前位置: 首页 > news >正文

H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。


简介

电压,电流,NTC热敏电阻以及4-20mA输入,可以在上位机端设置,也可以显示屏端设置

详细使用说明可以看在线或者离线操作说明手册:H7-TOOL操作说明和客户常见问题汇总贴,含PDF离线版(2024-08-16) - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

建议优先熟悉下,特别是这几个功能对应使用的引脚。


LUA函数说明:

1、启动模拟量采集。

启动模拟量采集仅需用到两个大类配置,一个负载电流测量,还有一个低速多通道。

所以启动模拟信号采集封装了两种配置

(1)负载电流测量,配置代码固定如下:

function start_dso(void)write_reg16(0x01FF, 1) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动end

(2)低速多通道测量,配置代码固定如下:

--启动模拟量电路
function start_dso(void)write_reg16(0x01FF, 2) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动end

2、测量函数,读取模拟值

测量函数比较简单,周期调用即可,建议100ms以上读取一次,因为所有数据100ms更新一轮

read_analog(9) --9 - 读取4-20mA


(1)电压读取

read_analog(0) -- 0 - CH1电压
read_analog(1) -- 1 - CH2电压

举例:每500ms读取一次CH1和CH2通道电压

实现代码如下:

--启动模拟量电路
function start_dso(void)write_reg16(0x01FF, 2) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动endprint("启动电压测量")
start_dso() -- 调用一次初始化for i = 1, 10, 1 do -- 读取10次
data1 = read_analog(0) -- 0 - CH1电压
data2 = read_analog(1) -- 1 - CH2电压
print(string.format("CH1电压:%f,CH2电压:%f", data1,data2))
delayms(500)
end

实际效果:


(2)高侧负载测量

read_analog(2) --2 - 高侧负载电压
read_analog(3) --3 - 高端负载电流

举例:每500ms读取一次

实现代码如下

--启动模拟量电路
function start_dso(void)write_reg16(0x01FF, 1) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动endprint("启动高侧测量")
start_dso() -- 调用一次初始化for i = 1, 10, 1 do -- 读取10次
data1 = read_analog(2) --2 - 高侧负载电压
data2 = read_analog(3) --3 - 高端负载电流
print(string.format("负载电压:%f,负载电流:%f", data1,data2))
delayms(500)
end

实际效果:


(3)TVCC测量

read_analog(4) --4 - TVCC电压
read_analog(5) --5 - TVCC电流

举例:每500ms读取一次

实现代码如下:

--启动模拟量电路
function start_dso(void)write_reg16(0x01FF, 2) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动endprint("启动TVCC测量")
start_dso() -- 调用一次初始化for i = 1, 10, 1 do -- 读取10次
data1 = read_analog(4) --4 - TVCC电压
data2 = read_analog(5) --5 - TVCC电流
print(string.format("TVCC电压:%f,TVCC电流:%f", data1,data2))
delayms(500)
end

(4)NTC热敏电阻测量

read_analog(6) --6 - NTC热敏电阻阻值

举例:每500ms读取一次

--启动模拟量电路
function start_dso(void)write_reg16(0x01FF, 2) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动endprint("启动NTC热敏电阻测量")
start_dso() -- 调用一次初始化for i = 1, 10, 1 do -- 读取10次
data1 = read_analog(6) --6 - NTC热敏电阻阻值
print(string.format("NTC热敏电阻:%f", data1))
delayms(500)
end

(5)供电电压测量

read_adc(7) --7 - 外部供电电压
read_analog(8) --8 - USB供电电压

举例:每500ms读取一次

--启动模拟量电路
function start_dso(void)write_reg16(0x01FF, 2) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动endprint("启动供电电压测量")
start_dso() -- 调用一次初始化for i = 1, 10, 1 do -- 读取10次
data1 = read_adc(7) --7 - 外部供电电压
data2 = read_analog(8) --8 - USB供电电压
print(string.format("外部供电电压:%f, USB供电电压:%f", data1, data2))
delayms(500)
end

(6)4-20mA测量
read_analog(9) -- 4-20mA测量

举例:每500ms读取一次

--启动模拟量电路
function start_dso(void)write_reg16(0x01FF, 2) -- 测量模式 0:示波器 1:负载电流 2:多路低速扫描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采样频率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采样深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --触发电平ADC 0-65535write_reg16(0x0209, 50) --触发位置百分比 0-100write_reg16(0x020A, 0) --触发模式 0:自动 1:普通 2:单次write_reg16(0x020B, 0) --触发通道 0:CH1 1:CH2write_reg16(0x020C, 0) --触发边沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1  bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:启动endprint("启动4-20mA测量")
start_dso() -- 调用一次初始化for i = 1, 10, 1 do -- 读取10次
data1 = read_analog(9) -- 4-20mA测量
print(string.format("4-20mA读取:%f", data1, data2))
delayms(500)
end

测量的10mA,精度还是非常不错的


3、测量函数,直接读取ADC值

这个用法和第2步读取模拟值是完全一样的。只是这里获取的是ADC支持。

read_adc(0) --0 - CH1电压
read_adc(1) --1 - CH2电压
read_adc(2) --2 - 高侧负载电压
read_adc(3) --3 - 高端负载电流
read_adc(4) --4 - TVCC电压
read_adc(5) --5 - TVCC电流
read_adc(6) --6 - NTC热敏电阻阻值
read_adc(7) --7 - 外部供电电压
read_adc(8) --8 - USB供电电压
read_adc(9) -- 9 - 4-20mA输入
 

4、使用上位机同时展示这些数值

相关文章:

H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用&#xff…...

使用梧桐数据库进行销售趋势分析和预测

在当今竞争激烈的商业环境中,企业需要深入了解销售数据,以便做出明智的决策。销售趋势分析和预测是帮助企业把握市场动态、优化库存管理、制定营销策略的重要工具。本文将介绍如何使用SQL来创建销售数据库的表结构,插入示例数据,并…...

SQLITE排序

最终实现的效果:先查询第一层2列开始的1、4、2、3排,再查询第三列、四列...,然后第二层... 入库 排序优先级:层>列>排(1>2,4>3) 最终排的优先级 1>4>2>3 ORDER BY rack.rackLayer,rack.rackColumn, CASE rack.rackRowW…...

python的文件操作

文件操作 1.打开文件 2.读取文件内容 3.写入文件内容 4.关闭文件 要打开文件,可以使用open()函数并指定文件路径和模式。 file open("example.txt", "r") # 打开了一个名为"example.txt"的文件,并将其赋值给变量file。第…...

群晖通过 Docker 安装 MySQL

1. 打开 Docker 应用,并在注册表搜索 MySQL 2. 下载 MySQL 镜像,并选择版本 3. 在 Docker 文件夹中创建 MySQL,并创建子文件夹 4. 设置权限 5. 选择 MySQL 映像运行,创建容器 6. 配置 MySQL 容器 6.1 使用高权限执行容器 6.2 启…...

同程旅行面经

前言 一面 2024-10-11 实习项目架构,技术栈是怎么样的,自己实现了哪些功能?(文件上传,更新记录记忆,动态表格)写了多少行代码?(2~3k)项目有上线了吗&#x…...

【贪心算法】(第八篇)

目录 分发饼⼲(easy) 题目解析 讲解算法原理 编写代码 最优除法(medium) 题目解析 讲解算法原理 编写代码 分发饼⼲(easy) 题目解析 1.题目链接:. - 力扣(LeetCode&#xf…...

立即调用的函数表达式(IIFE)

立即调用的函数表达式(IIFE),它会立即执行并返回一个空对象 解析 Plugins: (() > { return {}; })():1、解析 () > { return {}; } 是一个箭头函数,它定义了一个返回空对象的函数。 在定义之后,() 表示立即调用…...

YOLOv11改进-卷积-引入小波卷积WTConv 解决多尺度小目标问题

本篇文章将介绍一个新的改进机制——WTConv(小波卷积),并阐述如何将其应用于YOLOv11中,显著提升模型性能。YOLOv11模型相比较于前几个模型在检测精度和速度上有显著提升,但其仍然受卷积核感受野大小的限制。因此&#…...

flask 接口还在执行中,前端接收到接口请求超时,解决方案

在 Flask 中,当某个接口执行时间较长而导致前端请求超时时,需要考虑以下解决方案: 1. 优化接口的响应时间 如果可能,先优化接口中的代码逻辑,减少处理时间。对于查询操作,可以考虑数据库索引优化、缓存机制等手段。2. 增加请求超时时间 如果接口确实需要较长时间完成,前…...

探索 Python 中的 XML 转换利器:xml2dict

文章目录 **探索 Python 中的 XML 转换利器:xml2dict**一、背景介绍二、xml2dict 是什么?三、如何安装 xml2dict?四、基本用法五、实际应用场景六、常见问题及解决方案七、总结 探索 Python 中的 XML 转换利器:xml2dict 一、背景…...

dbt-codegen: dbt自动生成模板代码

dbt项目采用工程化思维,数据模型分层实现,支持描述模型文档和测试,非常适合大型数据工程项目。但也需要用户编写大量yaml描述文件,这个过程非常容易出错且无聊。主要表现: 手工为dbt模型编写yaml文件,这过…...

springboot057洗衣店订单管理系统(论文+源码)_kaic

基于springboot的洗衣店订单管理系统 摘要 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势,针对这个问题开发一个专门适应洗衣店业务新的交流形式的网站。本文介绍了洗衣店订单管理系统的开发全过程。通过分析企业对于洗衣店订单管理系统的需求…...

南大通用(GBase 8s)数据库在 Spring Boot 中使用 Flyway

db-migration:Flyway、Liquibase 扩展支持达梦(DM)数据库、南大通用(GBase 8s)数据库,并支持 Flowable 工作流。 已支持 达梦数据库(DM 8)。默认支持 flowable 工作流。南大通用数…...

CMakeLists.txt 编写规则

目录 1. 注释 1.1 注释行 1.2 注释块 2. CMakeLists.txt的编写 2.1 同意目录下的源文件 2.2 SET指令 2.3 file和aux_source_directory 2.4 包含头文件 2.5 生成动态库和静态库 2.6 链接库文件 2.7 message指令 2.8 移除操作 2.9 find_library和find_package 3. 常…...

Javascript算法——二分查找

1.数组 1.1二分查找 1.搜索索引 开闭matters!!![left,right]与[left,right) /*** param {number[]} nums* param {number} target* return {number}*/ var search function(nums, target) {let left0;let rightnums.length-1;//[left,rig…...

node-sass/vendor/linux-x64-72 : Error: EACCES: permission denied, mkdir

npm i --unsafe-perm node-sassgithub解决问题...

uniapp-uniapp + vue3 + pinia 搭建uniapp模板

使用技术 ⚡️uni-app, Vue3, Vite, pnpm &#x1f4e6; 组件自动化引入 &#x1f34d; 使用 Pinia 的状态管理 &#x1f3a8; tailwindcss - 高性能且极具灵活性的即时原子化 CSS 引擎 &#x1f603; 各种图标集为你所用 &#x1f525; 使用 新的 <script setup> …...

深度学习的一些数学基础

数学基础 万丈高楼平地起 怎么说呢&#xff0c;学的数二对于这些东西还是太陌生了&#xff0c;而且当时学的只会做题&#xff0c;不知道怎么使用/(ㄒoㄒ)/~~ 所以记下来一些不太清楚的前置知识点&#xff0c;主要来自《艾伯特深度学习》&#xff0c;书中内容很多&#xff0c…...

自由学习记录(13)

服务端常见的“资源” 在服务端&#xff0c;常见的“资源”指的是服务端提供给客户端访问、使用、处理或操作的各种数据和功能。根据不同类型的服务和应用场景&#xff0c;服务端的资源种类可以非常广泛。以下是一些常见的服务端资源类型&#xff1a; 1. 文件和静态资源 网页…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...