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

ESP32应用教程(1)— VL53L3CX距离传感器

文章目录

前言

1 产品概述

1.1 技术规格

1.2 系统框图

1.3 设备引脚分布

2 工作流程

2.1 系统功能描述

2.2 状态机描述

2.3 测距模式说明

3 控制接口

3.1 设备地址

3.2 I²C写1个字节数据

3.3 I²C读1个字节数据

3.4 I²C写多个字节数据

3.5 I²C读多个字节数据

3.6 I²C 接口 - 参考寄存器

4 代码说明

4.1 下载编译

4.2 代码结构

5 波形分析


前言

本文介绍了在 ESP32 DEVKIT V1 开发板上开发 VL53L3CX 距离传感器的过程。


VL53L3CX 是意法半导体的最新飞行时间(ToF)产品,并嵌入了意法半导体的第三代 FlightSense 专利技术。它结合了高性能的接近和测距传感器,具有多目标距离测量和自动污点校正功能。微型可回流封装集成了单光子雪崩二极管(SPAD)阵列和物理红外滤光片,在各种环境照明条件下实现最佳测距性能,并配有各种盖片。

VL53L3CX 结合了高性能接近传感器的优点、出色的近距离线性度以及高达 3m 的测距能力。

凭借获得专利的算法和巧妙的模块构造,VL53L3CX 还能够通过深度检测视野(FoV)内的不同对象。意法半导体的直方图算法允许覆盖玻璃的串扰抗扰度超过 80cm,并具有动态污迹补偿功能。

  • 完全集成的小型化模块
    • 发射器:940nm 不可见激光(VCSEL)及其模拟驱动器;
    • 运行进阶数字固件的低功耗微控制器;
    • 尺寸:4.4 x 2.4 x 1 mm
  • 快速,精确测距
    • 基于直方图技术;
    • 完整视野(FoV)时,高达 300cm+ 的检测范围;
    • 使用专利算法(直接 ToF)可以远距离覆盖玻璃串扰和指纹污迹;
    • 动态指纹污迹补偿;
    • 短距离,高精度线性;
    • 多目标检测和距离测量。
  • 典型全视野:25°
  • 方便集成
    • 可回流组件;
    • 提供零件间或通用形状串扰校准;
    • 单电源;
    • 适用于多种类型的覆盖玻璃材料;
    • I²C 接口(可达 1MHz);
    • Xshutdown 复位并中断 GPIO 以优化测距操作;
    • 包含 CLinux 全套软件驱动程序。

1 产品概述

1.1 技术规格

1.2 系统框图

1.3 设备引脚分布

2 工作流程

2.1 系统功能描述

下图显示了系统级功能说明。客户主机应用程序使用应用编程接口 (API) 控制设备。API 的实现以驱动程序(裸 C 代码或 Linux 驱动程序)的形式交付给客户

驱动程序与客户应用程序共享一套高级功能,可控制设备固件,如初始化、范围启动/停止、设置系统精度等。

用户的应用程序调用 API 中的函数,然后 API 通过 IICVL53L3CX 中的固件(Firmware)进行通信,固件再操作硬件。

2.2 状态机描述

下图显示了设备状态机。

上电以后,VL53L3CX 会进入 Hw Standby 状态,这是待机状态,功耗很低。然后拉高 XSHUT脚,让 VL53L3CX 进入 Initial Boot 状态,自动进入软件待机状态。主机初始化开始,准备校准。如果不需要待机状态,可以把 XSHUT 接到 AVDD 上。VL53L3CX 处于休眠状态是不能进行 IIC 通信的。

2.3 测距模式说明

VL53L3CX 的专用运行模式(称为 "预设")是 "测距模式"。在该模式下,软件驱动程序提供了统包功能,可在所有客户应用中快速、轻松地进行测距: 测距模式是获得 VL53L3CX 最佳功能的配置。

  • 测距模式对 80cm 以外的盖板玻璃串扰和污点具有本机抗扰度。利用获得专利的算法(直接 ToF),可以进行时间滤波,将串扰信号与距离大于 80cm 的物体信号区分开来。现在,与市场上的其他传感器不同,在盖上玻璃的情况下,可以实现 300cm 的同类最佳测距性能,而且无需任何计算;
  • 测距模式可同时检测 FoV 内的多个物体。软件驱动程序最多可同时输出四个范围,以显示物体的范围。详情请查阅最新的软件驱动程序手册 了解更多详情;
  • 调用驱动函数后,默认以 30Hz 的频率执行测距操作(典型测距操作持续 33ms。它包括内部内务管理、测距和后处理。

3 控制接口

本节介绍控制接口。I²C 接口使用两个信号:串行数据线 (SDA) 和串行时钟线 (SCL)。连接到总线上的每个设备都使用唯一的地址,存在简单的主/从关系。

SDASCL 线路均通过主机上的上拉电阻与正电源电压相连。当线路处于浮动状态,上拉电阻器将线路拉高时,线路处于高电平状态。当没有数据传输时,两条线路均为高电平。

时钟信号 (SCL) 由主设备生成。主设备启动数据传输。产品设备上的 I²C 总线最大速度为1Mbits/s,默认设备地址为 0x52

信息以 8 位数据包(字节)的形式打包,后面总是跟着一个确认位,Ac 表示 VL53L3CX 确认,Am 表示主确认(主机总线主控)。内部数据通过在 SCL 上升沿采样 SDA  产生。外部数据必须在 SCL 的高电平期间保持稳定。但在 SCL 为高电平时,SDA 分别下降或上升时的启动 (S) 或停止 (P) 条件除外。

报文包含一系列字节,前面是启动条件,后面是停止或重复启动(另一个启动条件,但前面没有停止条件),然后是另一条报文。第一个字节包含设备地址(0x52),并指定数据方向。如果最低有效位为低位(即 0x52),则报文是主从写入。如果 LSB 被置位(即 0x53),则信息是主从读取

3.1 设备地址

VL53L3CX 模块的 I²C 通讯地址是 0x52

3.2 I²C写1个字节数据

与飞行时间传感器的所有串行接口通信必须以启动条件开始。VL53L3CX 模块通过将 SDA 线变为低电平来确认收到有效地址。读/写位(地址字节的 LSB)的状态将被存储,并可解释从 SDA 采样的下一个数据字节。在写入序列中,接收到的第二个字节提供一个 16 位索引,该索引指向一个内部 8 位寄存器。

从站接收到数据后,逐位写入串行/并行寄存器。从站接收到每个数据字节后,都会产生一个确认。然后,数据将被存储到由当前索引寻址的内部寄存器中。

在读取信息期间,当前索引所寻址寄存器的内容将在设备地址字节之后的字节中读出。该寄存器的内容被并行加载到串行/并行寄存器中,并通过 SCL 的下降沿从设备中时钟输出。

3.3 I²C读1个字节数据

在读取和写入信息序列中,每个字节结束时,接收设备都会发出确认(即 VL53L3CX 设备为写入,主机为读取)。

3.4 I²C写多个字节数据

总线主站只能通过发出停止条件或在读取操作过程中读取完整字节后发出负确认(即不将 SDA 线路拉低)来终止报文。接口还支持自动递增索引。因此,主站可以连续向从站发送数据字节,直到从站无法提供确认,或者主站通过停止条件终止写入通信。如果使用自动递增功能,主站就不必在发送数据字节时同时发送地址索引。

3.5 I²C读多个字节数据

3.6 I²C 接口 - 参考寄存器

下表所示寄存器可用于验证用户 I²C 接口。

4 代码说明

4.1 下载编译

1. 下载代码

git clone https://github.com/EmotionFly/ESP32_VL53L3CX.git
cd ESP32_VL53L3CX

2. 获取 esp-idf 库的环境

. $HOME/esp/esp-idf/export.sh

3. 编译—>下载—>监控

idf.py flash monitor

4.2 代码结构

1. 先确定测量数据是否已准备就绪。

VL53L1_GetMeasurementDataReady(&dev, &dataReady);

VL53L1_Error VL53L1_GetMeasurementDataReady(VL53L1_DEV Dev,uint8_t *pMeasurementDataReady)
{VL53L1_Error Status = VL53L1_ERROR_NONE;LOG_FUNCTION_START("");Status = VL53L1_is_new_data_ready(Dev, pMeasurementDataReady);LOG_FUNCTION_END(Status);return Status;
}

本质是访问 GPIO__TIO_HV_STATUS(0x0031) 寄存器的数据。

2. 获取测量数据。

VL53L1_GetRangingMeasurementData(&dev, &rangingData);

VL53L1_Error VL53L1_GetRangingMeasurementData(VL53L1_DEV Dev,VL53L1_RangingMeasurementData_t *pRangingMeasurementData)
{VL53L1_Error Status = VL53L1_ERROR_NONE;VL53L1_range_results_t       results;VL53L1_range_results_t       *presults = &results;VL53L1_range_data_t *presults_data;LOG_FUNCTION_START("");/* Clear Ranging Data */memset(pRangingMeasurementData, 0xFF,sizeof(VL53L1_RangingMeasurementData_t));/* Get Ranging Data */Status = VL53L1_get_device_results(Dev,VL53L1_DEVICERESULTSLEVEL_FULL,presults);if (Status == VL53L1_ERROR_NONE) {pRangingMeasurementData->StreamCount = presults->stream_count;/* in case of lite ranging or autonomous the following function* returns index = 0*/presults_data = &(presults->data[0]);Status = SetSimpleData(Dev, 1,presults->device_status,presults_data,pRangingMeasurementData);}LOG_FUNCTION_END(Status);return Status;
}

本质是访问 RESULT__RANGE_STATUS(0x0089)和 RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0(0x0096)寄存器的数据。

3. 系统中断清零

本质是将 SYSTEM__INTERRUPT_CLEAR(0x0086) 寄存器置 1

5 波形分析

相关文章:

ESP32应用教程(1)— VL53L3CX距离传感器

文章目录 前言 1 产品概述 1.1 技术规格 1.2 系统框图 1.3 设备引脚分布 2 工作流程 2.1 系统功能描述 2.2 状态机描述 2.3 测距模式说明 3 控制接口 3.1 设备地址 3.2 IC写1个字节数据 3.3 IC读1个字节数据 3.4 IC写多个字节数据 3.5 IC读多个字节数据 3.6 IC…...

Redis从基础到进阶篇(一)

目录 一、了解NoSql 1.1 什么是Nosql 1.2 为什么要使用NoSql 1.3 NoSql数据库的优势 1.4 常见的NoSql产品 1.5 各产品的区别 二、Redis介绍 2.1什么是Redis 2.2 Redis优势 2.3 Redis应用场景 2.4 Redis下载 三、Linux下安装Redis 3.1 环境准备 3.2 Redis的…...

postgresql的基本使用

添加字段 ALTER TABLE AAF_SYS_PARAM ADD REFER_ID VARCHAR(64); ALTER TABLE AAF_SYS_PARAM ADD OPTION_JSON VARCHAR(3000);COMMENT ON COLUMN AAF_SYS_PARAM.REFER_ID IS 关联节点ID; COMMENT ON COLUMN AAF_SYS_PARAM.OPTION_JSON IS 选择项枚举json; 修改字段 ALTER T…...

ABC 258 G Triangle(bitset 优化)

ABC 258 G Triangle(bitset 优化) ABC 258 G Triangle 大意&#xff1a;给出一个邻接矩阵 &#xff0c;用来记录两两元素间是否连接 &#xff0c; 计算其中三元环的数目。 思路&#xff1a; 不妨先想暴力解法 for(int i 1 ; i < n ; i ){for(int j i 1 ; j < n ;…...

使用StreamLold写入 Starrocks报错:Caused by org

问题描述 使用StreamLoad写入Starrocks报错&#xff0c;报这个错误:Caused by: org.apache.http.ProtocolException: Content-Length header already present 代码案例 引入依赖 <!-- Starrocks使用StreamLoad发送Http请求 --><dependency><groupId>or…...

WX1860- ngbe-1.2.5 xdp程序在路由模式下,使用iperf工具测试数据包不转发,用jmeter可以

本地验证时重定向iperf包有出现calltrace错误&#xff0c;经推断&#xff0c;系统PAGE_SIZE<8k时可能出现&#xff08;getconf PAGE_SIZE指令可查看&#xff09;&#xff0c;按下图将ngbe_main.c的2350行ngbe_rx_bufsz改为ngbe_rx_pg_size可修复。其次&#xff0c;需要将加载…...

PHPStudy 安装tp8 php8.2.9 安装XDbug、redis扩展

一、PhpStudy升级PHP版本&#xff0c;安装PHP8.2操作步骤 1.1、官网下载最新的php版本 打开Windows版的官网下载&#xff0c;地址&#xff1a;https://windows.php.net/download/ 页面上有不同的PHP版本&#xff0c;这里我们下载的是64位nts版的PHP8.2.9。 1.2、解压下载的文…...

结构体指针和结构体数组指针

结构体指针和结构体数组指针是不同的类型。 结构体指针定义&#xff1a;Student *stu 结构体指针的步长是一个结构体的大小&#xff1b; 结构体数组指针定义&#xff1a;Student (*stu)[] 结构体数组指针的步长是整个结构体数组的大小。 例程&#xff1a; #include <stdio…...

libdrm全解析二十 —— 源码全解析(17)

接前一篇文章&#xff1a;libdrm全解析十九 —— 源码全解析&#xff08;16&#xff09; 本文参考以下博文&#xff1a; DRM 驱动程序开发&#xff08;VKMS&#xff09; 特此致谢&#xff01; 本文继续对include/drm/drm.h中实际功能宏定义进行讲解。 29. DRM_IOCTL_SET_MAS…...

基于docker搭建owncloud Harbor 构建镜像

环境介绍&#xff1a;ContenOS7.9 docker17.12.1-ce 使用mysql:5.7和 owncloud 镜像&#xff0c;构建一个个人网盘。 docker pull owncloud #拉取镜像 docker pull mysql5.7 创建容器 docker run --name owncloud-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORDroot …...

往Buildroot中增加Qt项目

前言 目的&#xff1a;应用开发时最初是没有和buildroot中一起编译时&#xff0c;后面应用程序写的差不多时&#xff0c;同事问我怎么把应用程序打包到文件系统中&#xff0c;然后发布时跟随文件系统一起发布&#xff0c;并且增加打包启动脚本。所以本文在已经可以单独编译的基…...

C#-Tolewer和ToUpper的使用

目录 简介: 好处:​ 过程: 总结&#xff1a; 简介: 字符串是不可变的&#xff0c;所以这些函数都不会直接改变字符串的内容&#xff0c;而是把修改后的字符串的值通过函数返回值的形式返回。 ToLower和ToUpper是字符串处理函数&#xff0c;用于将字符中的英文字母转换为小…...

RabbitMQ集群搭建和测试总结_亲测

RabbiMQ简介 RabbitMQ是用Erlang开发的&#xff0c;集群非常方便&#xff0c;因为Erlang天生就是一门分布式语言&#xff0c;但其本身并不支持负载均衡。 RabbitMQ模式 RabbitMQ模式大概分为以下三种: (1)单一模式。 (2)普通模式(默认的集群模式)。 (3)镜像模式(把需要的队列…...

SQLSTATE[IMSSP]: The active result for the query contains no fields.

我的是SQL server 报错场景&#xff0c;代码&#xff1a; $psendmx_sql"SET IDENTITY_INSERT PSENDMX ON;INSERT INTO psendmx (DJBH,MIBH,MXBH,SPDM,GG1DM,GG2DM,SL,SL_2,CKJ,ZK,DJ,DJ_1,JE,HH) VALUES {$mx_values};SET IDENTITY_INSERT PSENDMX OFF;"; $a$db_er…...

在Flutter应用内部实现分屏功能

前言 这一次被要求实现屏幕上同时展示两个页面&#xff0c;并且两个页面的逻辑&#xff0c;功能互不影响&#xff0c;通俗一点讲就是在Flutter内部实现一个类似于分屏的功能&#xff0c;这可难不倒我。 方法 要在 Flutter 中实现一个屏幕的上半部分和下半部分展示不同的页面…...

Docker常用操作命令(二)

Docker常用操作命令(二) 11、进入容器 docker exec -it 容器名称or容器ID /bin/bash [rootzch01 ~]# docker exec -it 973ff3caff19 /bin/bash 退出容器 root973ff3caff19:/# exit 12、查看容器中的进程 docker top 容器名称or容器ID [rootzch01 ~]# docker top 973ff3c…...

vue3 tailwindcss的使用

首先安装依赖&#xff1a; npm install -D tailwindcsslatest postcsslatest autoprefixerlatestnpm i -D unocss 然后vite.config.ts中 引入 import Unocss from unocss/viteexport default defineConfig({plugins: [Unocss(),],})终端执行&#xff1a; npx tailwindcss in…...

redis 基础篇(redis 理解)

目录 redis 特性介绍 redis 的一些特性&#xff08;优点&#xff09; 1. 在内存中存储数据 2. 可编程的 3. 可扩展 4. 持久化 5. 支持集群 6. 高可用 redis 的应用场景 数据库 作缓存 会话存储 作消息队列 redis 不适合做的事情 redis 介绍 redis 客户端形态 命…...

C++系列-函数重载

C系列-函数重载 函数重载函数重载的条件函数重载注意事项引用作为重载函数重载遇到默认参数 函数重载 函数名可以相同&#xff0c; 提高复用性 函数重载的条件 同一个作用域下函数名相同函数参数不同 – 参数个数不同 – 参数顺序不同 – 参数类型不同不可以使用返回值作为重…...

leetcode-23.合并k个升序链表-day17

...

Linux scp命令

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的&#xff0c;rcp 是不加密的&#xff0c;scp 是 rcp 的加强版。 scp [可选参数] file_source file_target 参数说明&#xff1a; -1&#xff1a; 强制scp命令使用协议ss…...

vue 简单实验 v-bind 变量与html属性绑定

1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"bind-attribute"><span v-bind:title"message">鼠标悬停几秒钟查看此处动态绑定的提示信息&#xff01;</sp…...

114.(cesium篇)cesium去掉时间轴并用按钮控制运动

地图之家总目录(订阅之前必须详细了解该博客) 完整代码工程包下载,运行如有问题,可“私信”博主。效果如下所示: cesium去掉时间轴并用按钮控制运动 下面献上完整代码,代码重要位置会做相应解释 <html lang...

2023年清洁能源与智能电网国际会议(CCESG 2023)

会议简介 Brief Introduction 2023年清洁能源与智能电网国际会议(CCESG 2023) 会议时间&#xff1a;2023年 召开地点&#xff1a;中国南宁 大会官网&#xff1a;CCESG 2023-2023 International Joint Conference on Clean Energy and Smart Grid 由IASED主办&#xff0c; CoreS…...

RISC-V中国峰会 | 256核服务器高调亮相,谁与争锋?

8月23日&#xff0c;第三届RISC-V中国峰会&#xff08;RISC-V Summit China 2023&#xff09;在北京香格里拉饭店正式开幕&#xff0c;来自世界各地的行业精英汇聚一堂&#xff0c;为RISC-V生态系统建言献策&#xff0c;凝心聚力&#xff01; 中国工程院院士倪光南、RISC-V国际…...

树套树小结

树状数组套权值线段树&#xff0c;实现过程类似主席树&#xff0c;采用动态开点实现 https://www.luogu.com.cn/problem/P3380 树状数组部分 线段树部分...

android 解决sdk代码冲突

1. 在引用sdk的外面添加排除sdk implementation ("androidx.core:core-ktx:1.9.0"){exclude (group:androidx.appcompat, module:appcompat)} 2. 全局指定对应的sdk版本 configurations.all {resolutionStrategy.eachDependency { DependencyResolveDetails detail…...

C++逆天合集

1.基础知识 1. 创建 编译 运行 touch a.cpp gedit a.cpp g -o a.out a.cpp ./a.out 2. a 等价于a a 1 3. ::运算符 4. 类型转换 赋给无符号类型超出其表达范围时&#xff0c;对总数取模得余数 赋给带符号类型超出其表达范围时&#xff0c;结…...

stm32之15.超声波与灯光功能一起实现(进阶)

主函数代码修改 --------------------- 源码 int main(void) {uint32_t t0;uint32_t distance;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);led_init();key_init();/* 初始化串口1波特率为115200bps&#xff0c;若发送/接收数据有乱码&#xff0c;请检查PLL */usart1_ini…...

美创科技荣获“2023年网络安全优秀创新成果大赛—杭州分站赛”两项优胜奖

近日&#xff0c;由浙江省互联网信息办公室指导、中国网络安全产业联盟&#xff08;CCIA&#xff09;主办&#xff0c;浙江省网络空间安全协会承办的“2023年网络安全优秀创新成果大赛-杭州分站赛”正式公布评选结果。 经专家评审&#xff0c;美创科技报名参赛的解决方案—“医…...

使用gdb+gdbserver远程调试aarch64平台程序

嵌入式开发板子(aarch64)程序编译(在ubuntu远程调试) 1.支持coredump, 并且设置coredump路径等 //生成文件路径与格式 echo /data/coredump/%e-%t-%p-%c.core > /proc/sys/kernel/core_pattern // 设置开启coredump 并设置显示文件大小 void set_coreDumpAvalib(const rl…...

【CesiumJS入门】(9)获取地表两点的距离及中心点——EllipsoidGeodesic

前言 一般情况下&#xff0c;我们可以直接通过Cesium.Cartesian3.distance(left, right)来获取两点的距离&#xff0c;但获取到的是两点的直线距离&#xff1a; const start new Cesium.Cartesian3.fromDegrees(113,23); const end new Cesium.Cartesian3.fromDegrees(113,…...

OLED透明屏介绍:领先科技的革命性创新

OLED透明屏作为一项领先的科技创新&#xff0c;在产品设计和用户体验方面展现出了巨大的潜力。 在这篇文章中&#xff0c;尼伽将介绍OLED透明屏的定义、特点、应用领域以及未来发展趋势&#xff0c;以帮助您全面了解OLED透明屏。 一、OLED透明屏的定义与原理 1.1 定义&#x…...

ESXI补丁更新

一、准备工作 VMware 产品的补丁可从https://customerconnect.vmware.com/patch下载 使用 vSphere Web Client 将补丁上载至 ESXi 主机中的数据存储。&#xff08;注意&#xff1a;VMware 建议在数据存储中创建一个新目录并将补丁文件上载至此目录。&#xff09; 迁移主机上正…...

【每日易题】数组下标的逆天用法——你见过把数组存储的值当作数组下标来解题的吗?

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;在最近是刷题中&#xff0c;遇到了一种非常新奇的数组下标的用法&#xff0c;今天想来给大家分享一下这种神奇的思路和方法&#xff0c;希望能在你遇到类似问题时能通…...

mysql基本操作

常用的数据类型 int 整型用于定义整数类型的数据float 单精度浮点4字节32位 准确表示到小数点后六位 double 双精度浮点8字节64位双精度浮点8字节64位char 固定长度的字符类型用于定义字符类型数据varchar可变长度的字符类型 text文本image图片de…...

vue组件的使用

一、首先要穿件组件构造器对象&#xff0c;或者导入组件 1..在本部分注册组件其中组件为子组件 2.在本部分注册组件 二、而后注册组件 1.在本部分注册组件其中组件为子组件 2.在本部分注册组件 三、 接着&#xff0c;使用组件。 1.在本部分注册组件其中组件为子组件 其中v-i…...

Axure设计之日期选择器(年月选择)

在系统中&#xff0c;日期选择器经常会用到&#xff0c;包括日历日期的选择、日期时间的选择和日期范围的选择&#xff0c;一般是下拉列表的形式进行选择。Axure没有自带的日期选择器&#xff0c;下面教大家如何在Axure中制作真实日期选择&#xff08;年月选择&#xff09;效果…...

CAD泰森多边形框架3D插件

插件介绍 CAD泰森多边形框架3D插件可用于在AutoCAD软件内生成三维Voronoi框架结构实体模型&#xff0c;适用于多孔Voronoi科研论文渲染绘图、Voronoi框架有限元建模、Voronoi空间结构优化等方面的应用。 使用说明 插件可设置生成的几何尺寸、晶格尺寸及边框直径等信息。 插…...

Django的render()函数的三个主要参数详解,特别是第三个字典类型的参数context

当在Django中使用 render() 函数时&#xff0c;它有三个主要参数&#xff1a;request&#xff0c;template_name&#xff0c;和 context。第三个参数&#xff0c;即 context&#xff0c;是一个字典&#xff0c;用于将数据传递给模板以进行渲染。 在下面的代码中&#xff1a; …...

统计不同字段的值域

目录 背景数据库表 需求目标SQL知识点注意点 背景 数据库 PostgreSQL 表 tbl_mr hosxblyfsylfkfs广东医院1301广东医院1404浙江医院0307浙江医院0209………… tbl_emr hosxblyfsylfkfs广东医院9999903广东医院1408浙江医院9507浙江医院0214………… 其中 xb 字段为 num…...

js this 指的是什么

1 对象中方法 函数中的this 指的是包含它的对象, 子对象中的this指的是全局在浏览器中是 window 对象 var obj1 {this1funcA: function() {var obj2 {innerFunc: function() {this2}};obj3{ this3 }}obj4{ this4 } }; 在这个对象中&#xff0c;this 的指向会随着调用上…...

用pytorch实现Resnet

ResNet&#xff08;Residual Network&#xff09;是一种深度卷积神经网络架构&#xff0c;由Kaiming He等人于2015年提出。它在计算机视觉领域引起了革命性的变革&#xff0c;使得训练更深的神经网络成为可能&#xff0c;超越了传统网络架构的限制。 ResNet的主要创新在于…...

C++类成员的访问权限以及类的封装

C通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限&#xff0c;它们分别表示公有的、受保护的、私有的&#xff0c;被称为成员访问限定符。所谓访问权限&#xff0c;就是你能不能使用该类中的成员。 Java、C# 程序员注意&#xff0c;C 中的 publ…...

Linux 多线程解决客户端与服务器端通信

一、一个服务器端只能和一个客户端进行通信&#xff08;单线程模式&#xff09; 客户端代码ser.c如下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet…...

FMX的TListBox单选列表框

TListBox功能比较全&#xff0c;对于选择项&#xff0c;有“两种”模式&#xff0c;一种就是ListItem选中&#xff08;界面上就是焦点和颜色变化&#xff09;&#xff0c;可以无&#xff0c;单选和多选。另一种是通过CheckBox来选择ListItem的选中。默认下&#xff0c;ShowChec…...

prompt工程(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 我准备想办法把这些东西整合到我的ScholarEase项目里。到时候按照分类、按照prompt生成方法列一堆选项&#xff0c;用户自己生成prompt后可以选择在ScholarEase里面聊天&#xff0c;也可以复制到别的地方&#xff08;比如ChatGPT网页版之类的&a…...

win11 docker-desktop安装记录

win11安装Docker踩坑实录 马上开始正式工作了&#xff0c;需要用到docker&#xff0c;以前在win10上安装过&#xff0c;新电脑是win11&#xff0c;心想肯定会遇到坑&#xff0c;就浅浅记录一下 首先看一下安装要求 需要wsl2 那么就先进行 wsl的更新 wsl --update注意这里网络…...

opencv特征提取、梯度计算

...

AI绘画工具MJ新功能有点东西,小白也能轻松一键换装

先看最终做出来的效果 直接来干货吧。Midjourney&#xff0c;下面简称MJ 1.局部重绘功能来袭 就在前两天&#xff0c;MJ悄咪咪上线了这个被众人期待的新功能&#xff1a;局部重绘。 对于那些追求创新和个性化的设计师来说&#xff0c;局部绘制不仅是一个实用的功能&#xff…...