【MCAL】ADC模块详解

目录

前言

正文

1.ADC模块介绍

2.关键概念及依赖的模块

2.1 ADC依赖的模块

3.ADC功能示例

3.1 ADC Buffer Access Mode示例

3.1.1配置(Configuration)

3.1.2 初始化(Initialization)

3.1.3 Adc_GetStreamLastPointer的使用方法

3.1.4 Adc_ReadGroup用法

4.ADC转换和交互

5.ADC状态机

5.1 ADC State Diagram for One-Shot/Continuous Group Conversion Mode

5.2 ADC State Diagram for HW/SW Trigger in One-Shot Group Conversion Mode

5.3 ADC State Diagram for SW Trigger in Continuous Conversion Mode

5.4 ADC State Diagram for One-Shot Conversion Mode, Software Trigger Source, Single Access Mode

5.5 ADC State Diagram for One-Shot Conversion, Hardware Trigger Source, Single Access Mode

5.6 ADC State Diagram for One-Shot Conversion Mode, Hardware Trigger Source, Linear and Circular Streaming Access Mode

5.7 ADC State Diagram for Continuous Conversion Mode, Software Trigger Source, Single Access Mode

5.8 ADC State Diagram for Continuous Conversion Mode, Software Trigger Source, Linear and Circular Streaming Access Mode

6.ADC重要数据类型

6.1 Adc_ChannelType

6.2 Adc_GroupType

6.3 Adc_StatusType

6.4 Adc_TriggerSourceType

6.5 Adc_GroupConvModeType

6.6 Adc_StreamBufferModeType

6.7 Adc_GroupAccessModeType

6.8 Adc_HwTriggerSignalType

6.9 Adc_PriorityImplementationType

6.10Adc_GroupReplacementType

6.11 Adc_ChannelRangeSelectType

6.12 Adc_ResultAlignmentType

6.13 Adc_PowerStateRequestResultType

7.ADC重要API

7.1 Adc_SetupResultBuffer

7.2 Adc_StartGroupConversion

7.3 Adc_StopGroupConversion

7.4 Adc_ReadGroup

7.5 Adc_EnableHardwareTrigger

7.6 Adc_DisableHardwareTrigger

7.7 Adc_EnableGroupNotification

7.8 Adc_DisableGroupNotification

7.9 Adc_GetGroupStatus

7.10 Adc_GetStreamLastPointer

8.ADC重要时序

8.1 Software triggered One-Shot conversion without notification

8.2 Software triggered continuous conversion with notification

8.3 Hardware triggered One-Shot conversion with notification

8.4One-Shot conversion - Linear Streaming

9.ADC配置实例

10.ADC使用示例

11.总结


前言

MCAL处于AUTOSAR架构的最底层,和具体的芯片强绑定,且不同的芯片使用不同的MCAL配置工具,例如英飞凌芯片系列使用EB配置MCAL,瑞萨芯片系列使用Davince配置MCAL。所以,除了AUTOSAR标准定义好的配置项及标准接口外,不同厂商的MCAL还会有独立于MCAL标准之外的配置,所以MCAL的学习最好是结合具体的工具和芯片来学习。本文为模拟-数字信号转换器Analog-to-digital converter模块详解篇

【MCAL】MCU模块详解

参考文献:

1.Specification of ADC Driver 4.3.1

https://www.autosar.org/nc/document-search/

正文

1.ADC模块介绍

ADC模块处于AUTOSAR架构下的MCAL部分,ADC模块初始化并控制微控制器的内部模拟数字转换器单元。ADC模块分别提供启动和停止转换的服务,以启用和禁用转换的触发源。此外,它还提供了启用和禁用通知机制的服务,以及查询转换状态和结果的例程。ADC模块在所谓的ADC通道组上工作,它们是由所谓的ADC通道构建的。ADC通道组结合了模拟输入引脚(ADC通道)、所需的ADC电路本身和将结果寄存器转换为可单独控制和通过ADC模块访问的实体。

图片

2.关键概念及依赖的模块

2.1 关键概念

ADC HW Unit: ADC硬件单元,表示一种微控制器输入电子设备,它包括执行“模拟到数字转换”所需的所有部件。简单理解就是,ADC硬件单元是集成在MCU内部的ADC控制器,MCU可以集成多个ADC硬件单元(ADC控制器)。

ADC Module:ADC模块,软件概念,ADC基本软件模块也就是ADC驱动程序,也缩写为ADC驱动程序。

ADC Channel:ADC通道,表示绑定到一个端口引脚的逻辑ADC实体。多个ADC实体可以映射到同一个端口引脚。实际配置中如果一个Pin映射一个ADC Channel,那么也就是一路外部ADC的数据由一路ADC Channel来获取。

ADC Channel Group:连接到同一ADC硬件单元的一组ADC通道(例如,一个采样和保持转换器和一个A/D转换器)。整个组的转换是由一个触发源触发的。简单理解,一个ADC HW Unit上的所有ADC Channel就属于哥ADC Group。

ADC Result Buffer:ADC驱动程序的用户必须为每个组提供一个缓冲区。如果选择了流媒体访问模式,该缓冲区可以保存同一组通道的多个样本。如果选择了单一访问模式,则在缓冲区中保留每个组通道的一个样本。

Software Trigger:启动一个ADC通道组或连续一系列ADC通道组转换的软件API调用。

Hardware Trigger:启动ADC通道组的一次转换的ADC内部触发信号。ADC硬件触发器在ADC硬件内部生成,例如基于ADC计时器或触发器边缘信号。触发器硬件是紧密耦合的或集成在ADC硬件中的。在检测到硬件触发器后,无需使用任何软件即可启动ADC通道组转换。

注意:如果ADC硬件不支持硬件触发器,则将软件触发器与GPT/ICU驱动程序结合使用,可以实现类似的行为。例如,在GPT计时器通知功能中,可以启动软件触发的ADC通道组转换

Conversion Mode:One-Shot:ADC通道组的转换在触发后执行一次,并将结果写入分配的结果缓冲区。触发器可以是软件API调用或硬件事件。Continuous:ADC通道组的转换在软件API调用(开始)后连续执行,并将结果写入分配的结果缓冲区。转换本身正在自动运行(受硬件/中断控制)。连续转换可以通过软件API调用(停止)来停止。

Sample Time:模拟值被采样的时间。

Conversion Time:将采样的模拟值转换为数字表示的时间。

Acquisition Time:Sample Time + Conversion Time。

2.1 ADC依赖的模块

1)MCU

微控制器单元驱动器(MCU驱动程序)主要负责初始化和控制芯片的内部时钟源和时钟预调节器。时钟频率可能会影响:

-- Trigger frequency

-- Conversion time

-- Sampling time

2)PORT

PORT模块应配置ADC模块使用的端口引脚。必须同时考虑模拟输入引脚和外部触发引脚。

3.ADC功能示例

下表显示了ADC用户可能需要的功能的列表,以及ADC模块所提供的功能的方式。此外,该表还描述了这些功能的可能实现。

图片

3.1 ADC Buffer Access Mode示例

3.1.1配置(Configuration)

图片

示例配置由三个 ADC Group组成。Group G1包含2个通道,Group G2和Group G3各包含一个通道。对于G1 和G2,Group访问模式 配置为ADC_ACCESS_MODE_STREAMING。G3的Group访问模式为ADC_ACCESS_MODE_SINGLE。ADC 驱动程序将Group 1-3 的转换结果存储在三个应用程序缓冲区中,通过三个配置的 ADC_RESULT_POINTER 访问:G1_ResultPtr、G2_ResultPtr 和 G3_ResultPtr。

3.1.2 初始化(Initialization)

Std_ReturnType Adc_SetupResultBuffer

(Adc_GroupType Group, const Adc_ValueGroupType* DataBufferPtr)

图片

用户必须为ADC Group结果提供应用程序结果缓冲区。每组需要一个缓冲区。如果选择了Streaming Access Mode,缓冲区大小取决于组通道数、Group访问模式和Stream采样数。在开始Group转换之前,用户必须使用API函数Adc_SetupResultBuffer初始化Group结果指针,该函数将Group结果指针初始化为指向指定的应用程序结果缓冲区。

3.1.3 Adc_GetStreamLastPointer的使用方法

Adc_StreamNumSampleType	  Adc_GetStreamLastPointer

(Adc_GroupType  Group,  Adc_ValueGroupType**  PtrToSamplePtr)

图片

ADC 驱动程序将G1、G2 和 G3组的转换结果存储在相应的结果缓冲区 G1_ResultBuffer[]、G2_ResultBuffer[] 和 G3_ResultBuffer[]中。ADC驱动程序不支持从ADC API函数直接访问ADC硬件结果寄存器。

用户提供三个指针 G1_SamplePtr、G2_SamplePtr 和 G3_SamplePtr调用Adc_GetStreamLastPointer后会指向ADC申请结果缓冲区。精确的指针G1_SamplePtr在调用Adc_GetStreamLastPointer后指向最近完成的转换回合的最新G1_CH0结果(G1_CH0是G1组定义中的第一个通道)。group 1的应用结果缓冲区保存了 G1_CH0 的3份Stream结果,以及G1_CH1的3份Stream结果。了解应用程序结果缓冲区布局,用户可以访问最新一轮转换的所有组通道结果。G2_SamplePtr和G3_SamplePtr也对齐,调用Adc_GetStreamLastPointer后,指向对应组的第一个组通道的最新结果。两组都只有一个频道。G2_SamplePtr 指向G2_CH2结果之一(最新结果)。由于G3配置为Single Access Mode,因此G3_SamplePtr始终指向G3_CH3。

3.1.4 Adc_ReadGroup用法

Std_ReturnType Adc_ReadGroup

(Adc_GroupType Group,Adc_ValueGroupType* DataBufferPtr)

图片

如果启用了可选的API函数Adc_ReadGroup,则用户必须为所选组提供额外的缓冲区,该缓冲区可以保存一轮组转换的结果。调用Adc_ReadGroup将最新的结果从应用程序结果缓冲区复制到应用程序读取组缓冲区。在该示例中,一个应用程序读取缓冲区 (G2_G3_ReadBuffer) 用于组G2和G3。

4.ADC转换和交互

以下示例根据组和转换类型指定了信道转换的顺序:

Example 1:包含通道[CH0、CH1、CH2、CH3 和 CH4]的通道组配置为连续转换模式。完成每次扫描后,将调用Notification(如果已启用)。然后自动开始新的扫描。

Example 2:包含通道[CH0、CH1、CH2、CH3 和 CH4]的通道组配置为One-Shot转换模式。完成扫描后,将调用Notification(如果已启用)。

Example 3:包含通道[CH3]的通道组配置为连续转换模式。完成每次扫描后,将调用Notification(如果已启用)。然后自动开始新的扫描。

Example 4:包含通道[CH4]的通道组配置为One-Shot转换模式。完成扫描后,将调用Notification(如果已启用)。

5.ADC状态机

ADC模块具有一个状态机,如下图所示。这些状态是特定于组的,而不是特定于模块的。该图显示了ADC组的所有可能的配置选项。状态转换取决于ADC组的配置。

5.1 ADC State Diagram for One-Shot/Continuous Group Conversion Mode

5.2 ADC State Diagram for HW/SW Trigger in One-Shot Group Conversion Mode

5.3 ADC State Diagram for SW Trigger in Continuous Conversion Mode

5.4 ADC State Diagram for One-Shot Conversion Mode, Software Trigger Source, Single Access Mode

5.5 ADC State Diagram for One-Shot Conversion, Hardware Trigger Source, Single Access Mode

5.6 ADC State Diagram for One-Shot Conversion Mode, Hardware Trigger Source, Linear and Circular Streaming Access Mode

5.7 ADC State Diagram for Continuous Conversion Mode, Software Trigger Source, Single Access Mode

5.8 ADC State Diagram for Continuous Conversion Mode, Software Trigger Source, Linear and Circular Streaming Access Mode

6.ADC重要数据类型

6.1 Adc_ChannelType

图片

ADC通道类型,这里的通道是逻辑通道(软件定义),我们可以定义多个逻辑通道映射到同一个物理通道上。在实际项目中,我们一般逻辑通道数和物理通道数意义对应,也就是一个物理通道(外部传感器数据输入)对应一个逻辑通道。

6.2 Adc_GroupType

图片

ADC组也是逻辑组,我们可以定义多个组,每个组里面分配的Channel通道也是可以自由组合的。实际项目中,一般MCU有多少个ADC HW Unit就配置多少个Group,然后每个Group里面包含队医ADC HW Unit的所有物理Channel。

6.3 Adc_StatusType

图片

ADC状态指的是每一个Group的状态,而不是整个ADC模块的状态。如果Group Access Mode配置为Single或者Stream但是Stream缓存大小为1的话,Group的ADC_COMPLETE状态等同于ADC_STREAM_COMPLETED状态。

6.4 Adc_TriggerSourceType

图片

ADC转换触发源。

软件触发:

void Adc_StartGroupConversion(Adc_GroupType Group) --> 开始ADC转换

void Adc_StopGroupConversion(Adc_GroupType Group) --> 停止ADC转换

硬件触发:例如配置为PWM输入的双边沿触发ADC转换。

6.5 Adc_GroupConvModeType

图片

ADC_CONV_MODE_ONESHOT:在配置的触发事件之后,ADC通道组中的每个通道只执行一次转换。Group配置为软件触发的情况下,已启动的一次性转换可以通过软件API调用停止。Group配置为硬件触发的情况下,可以通过禁用触发事件(如果硬件支持)来停止已启动的一次性转换。

ADC_CONV_MODE_CONTINUOUS:对一个ADC信道组中的每个ADC信道进行重复转换。连续转换模式仅适用于配置为软件触发的Group。已启动的“连续转换”可以通过软件API调用停止。

6.6 Adc_StreamBufferModeType

图片

ADC_STREAM_BUFFER_LINEAR:一旦流缓冲区已满(已到达的样本数量),ADC驱动程序就会立即停止转换。

ADC_STREAM_BUFFER_CIRCULAR:即使流缓冲区已满(到达的样本数量),ADC驱动程序也会继续转换。

6.7 Adc_GroupAccessModeType

图片

ADC_ACCESS_MODE_SINGLE:每个通道Channel只缓存一个采样Sample数据。

ADC_ACCESS_MODE_STREAMING:每个通道(Channel)可以缓存多个采样(Sample)数据。

6.8 Adc_HwTriggerSignalType

图片

用于配置驱动程序应该在硬件触发信号的哪个边缘上进行反应的类型,即启动转换(仅在由ADC硬件支持的情况下)。

6.9 Adc_PriorityImplementationType

图片

用于配置优先级化机制的类型。

6.10Adc_GroupReplacementType

图片

如果组转换被具有更高优先级的组中断,则在ADC组级别上使用的替换机制。

ADC_GROUP_REPL_ABORT_RESTART:如果组被优先级更高的组中断,则在组级别上使用中止/重新启动机制。在更高优先级的组转换完成后,重启中断组(所有组通道)的完整转换轮。如果将组配置为流访问模式,则只丢弃中断的转换轮的结果。已写入结果缓冲区的先前转换轮的结果不受影响。

ADC_GROUP_REPL_SUSPEND_RESUME:如果一个组被优先级更高的组中断,则在组级别上使用暂停/恢复机制。在更高优先级的组转换完成后,中断组的转换回合将完成。已写入结果缓冲区的先前转换轮的结果不受影响。

6.11 Adc_ChannelRangeSelectType

图片

图片

在主动限制检查的情况下:定义哪些与通道低限制和通道高度限制定义的板相关的转换值。

6.12 Adc_ResultAlignmentType

图片

6.13 Adc_PowerStateRequestResultType

图片

7.ADC重要API

7.1 Adc_SetupResultBuffer

图片

使用存储转换结果的组缓冲区启动地址初始化ADC驱动程序。应用程序必须确保DataBufferPtr所指向的应用程序缓冲区能够保存指定组的所有转换结果。在重置后,需要使用Adc_SetupResultBuffer进行初始化,然后才能启动组转换。

7.2 Adc_StartGroupConversion

图片

启动所请求的ADC通道组的所有通道的转换。在开始调用Adc_StartGroupConversion函数开始ADC数据转换之前应该先调用Adc_SetupResultBuffer设置转换结果缓冲区。

7.3 Adc_StopGroupConversion

图片

停止所请求的ADC通道组的转换.。

7.4 Adc_ReadGroup

图片

图片

读取请求组最后完成的转换轮的组转换结果,并从数据bufferPtr地址开始存储通道值。组通道值按通道编号递增顺序存储(如果配置了流媒体访问,则与结果缓冲区的存储布局相反)。

7.5 Adc_EnableHardwareTrigger

图片

为所请求的ADC通道组启用硬件触发器。

7.6 Adc_DisableHardwareTrigger

图片

7.7 Adc_EnableGroupNotification

图片

图片

为所请求的ADC通道组启用通知机制。

7.8 Adc_DisableGroupNotification

图片

图片

7.9 Adc_GetGroupStatus

图片

7.10 Adc_GetStreamLastPointer

图片

返回存储在结果缓冲区中的每个通道的有效样本数。读取一个指向组结果缓冲区中的一个位置的指针。使用指针位置,可以访问最后一次完成的转换轮的所有组通道的结果。使用指针和返回值,就可以访问所有有效的组转换结果(用户必须考虑结果缓冲区的布局)。

8.ADC重要时序

8.1 Software triggered One-Shot conversion without notification

ADC_USER使用Adc_GetGroupStatus()函数轮询每一组(Group)的状态,直到Group状态为ADCU_STREAM_COMPLETED后调用Adc_ReadGroup()函数获取ADC转换结果。

8.2 Software triggered continuous conversion with notification

使用ADC的Notification机制(ADC组完成数据转换后产生中断-->调用Notification函数-->调用Adc_ReadGroup)来读取ADC转换数据。

8.3 Hardware triggered One-Shot conversion with notification

8.4One-Shot conversion - Linear Streaming

9.ADC配置实例

关注本公众号,后面具体项目实战会详细介绍。

10.ADC使用示例

实际项目开发中我们一般会设计一个IoHwAb_Adc模块,ADC功能的使用模块就可以封装ADC模块提供的AUTOSAR标准接口来实现特定的需求。一般我们会在IoHwAb模块分装ADC模块的使用细节,让ASW直接使用IoHwAb模块分装后的接口。

如下图所示:

模块名:IoHwAb_Adc

模块的Runnable:IoHwAb_Init,IoHwAb_Mainfunction

模块提供的接口:IoHwAb_Adc_GetAdcValue,IoHwAb_Adc_GetBaseVoltage,IoHwAb_Adc_GetRawSignal,IoHwAb_Adc_GetFilterSignal

模块使用的接口:Adc_SetupResultBuffer,Adc_StartGroupConversion,Adc_ReadGroup

11.总结

本文详细介绍了AUTOSAR架构下的MCAL_ADC模块,着重需要理解ADC Channel,ADC Group,ADC Result Buffer等概念,以及各种Group Access Mode,Group Conversion Mode的特点。。实际项目中,需要更具具体项目的需求来配置MCAL_ADC模块,然后设计一个IoHwAb_ADC的模块来封装ADC的具体配置和使用细节,给应用层SWC提供统一的ADC数据访问接口。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

漏洞检测和评估【网站子域扫描工具02】

上一篇:爬取目标网站的域名和子域名【网站子域扫描工具01】 在Python中,有一些流行的漏洞扫描库可以对子域进行漏洞扫描和评估,比如Nmap、Sublist3r等。 1.端口扫描 以下是一个简单的示例代码,展示了如何使用Nmap进行基本的端口扫…

无法解析服务器的名称或地址/Wsl/0x80072eff/win10 WSL2问题解决Wsl 0x800701bc/Wsl:0x80041002

无法解析服务器的名称或地址 和 Wsl/0x80072eff 1.连VPN,推荐的VPN如下。(如一直显示无法连接,则推荐使用VPN) Anycast加速器 (any4ga.com) 优点:无限GB 缺点:较贵,通过银行卡充值9折后的价格是每月45元左右 …

DC-1靶机刷题记录

靶机下载地址: 链接:https://pan.baidu.com/s/1GX7qOamdNx01622EYUBSow?pwd9nyo 提取码:9nyo 参考答案: https://c3ting.com/archives/kai-qi-vulnhnbshua-tiDC-1.pdf【【基础向】超详解vulnhub靶场DC-1】 https://www.bilibi…

加解密算法整理(对称加密、非堆成加密、散列函数)

加解密算法是现代密码学核心技术,从设计理念和应用场景上可以分为两大基本类型,如下表所示。 算法类型特点优势缺陷代表算法对称加密加解密的密钥相同计算效率高,加密强度高需提前共享密钥,易泄露DES、3DES、AES、IDEA非对称加密…

Win10下在Qt项目中配置SQlite3环境

资源下载 官网资源:SQLite Download Page 1、sqlite.h sqlite-amalgamation-3450000.zip (2.60 MiB) 2、sqlite3.def,sqlite3.dll sqlite-dll-win-x64-3450000.zip (1.25 MiB) 3、 win10下安装sqlite3所需要文件 sqlite-tools-win-x64-3450000.zipht…

SpringCloud GateWay 在全局过滤器中注入OpenFeign网关后无法启动

目录 一、问题 二、原因 1、修改配置 2、添加Lazy注解在client上面 3、启动成功 一、问题 当在gateway的全局过滤器GlobalFilter中注入OpenFeign接口的时候会一直卡在路由中,但是不会进一步,导致启动未成功也未报错失败 2024-01-18 22:06:59.299 I…

EMQX安装和Java使用

一、EMQX介绍 EMQX是大规模分布式MQTT消息服务器,可以高效可靠连接海量物联网设备,实时处理分发消息与事件流数据,助力构建关键业务的物联网与云应用。EMQX 作为物联网应用开发和物联网平台搭建必须用到的基础设施软件,主要在边缘…

AI大模型学习笔记之二:什么是 AI 大模型的训练和推理?

在人工智能(AI)的领域中,我们经常听到训练(Training) 和 推理(Inference) 这两个词汇,它们是构建强大 AI 模型的关键步骤。我们通过类比人类的学习过程来理解这两个概念,可以更加自然而生动地理…

迅为RK3588开发板编译 Buildroot单独编译图形化界面(打包镜像)

上面 Kernel/U-Boot/Recovery/Rootfs 各个部分的编译后,将打包要用到的所有固件移动到 rockdev 目录下,然后打包为完整的 update.img 镜像。 首先在 linux 源码目录下输入以下命令进入编译的 UI 界面,进入之后如下所示: ./buil…

Flutter:跨平台移动应用开发的未来

Flutter:跨平台移动应用开发的未来 引言 Flutter的背景和概述 Flutter是由Google开发的一个开源UI工具包,用于构建漂亮、快速且高度可定制的移动应用程序。它于2017年首次发布,并迅速引起了开发者们的关注。Flutter采用了一种全新的方法来…

C++大学教程(第九版)5.19求Π的值

题目 代码 #include <bits/stdc.h> using namespace std;int main() {double pai 0;for (int count 1, i 1; count < 1000; i 2, count){int flag 1;if (count % 2 0){flag -1;}pai flag * (4.0 / (i * 1.0));cout << "当取前" << co…

C++ 之LeetCode刷题记录(十三)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可…

监控系统——Zabbix

目录 Zabbix概述 Zabbix 监控原理 Zabbix 与 Prometheus的区别 Zabbix 6.0 新特性 Zabbix 6.0 功能组件 Zabbix Server 数据库 Web 界面 Zabbix Agent Zabbix Proxy Java Gateway Zabbix 6.0 部署 部署 zabbix 服务端 添加 zabbix 客户端主机 自定义监控内容…

#LLMOps##AIGC# Dify_构建本地知识库问答应用-生成Al应用的创新引擎 用于构建助手API和GPT的开源开发平台

github&#xff1a; https://github.com/langgenius/dify/blob/main/README_CN.md 介绍文档&#xff1a;https://docs.dify.ai/getting-started/readme Dify 介绍 Dify 笔记 Dify 是什么&#xff1f; 开源的大语言模型&#xff08;LLM&#xff09;应用开发平台融合了后端即服…

vue二次封装ant-design-vue中的Modal弹窗组件,实现拖拽,全屏两种功能,原有参数属性不变

在我们的项目的有的地方需要用弹框的拖拽&#xff0c;以及弹窗自定义全屏显示的需求&#xff0c;所以再次将二次合一&#xff0c;同时弹框里面内容自适应屏幕高度 在ant-design-vue中&#xff0c;已经实现了拖拽&#xff0c;全屏的功能&#xff0c;下面是ant官网的示例 自定义…

关键信息基础设施安全相关材料汇总

文章目录 前言一、法律(1)《中华人民共和国国家安全法》(2)《中华人民共和国网络安全法》(3) 《中华人民共和国密码法》(4)《中华人民共和国数据安全法》(5) 《中华人民共和国个人信息保护法》二、行政法规(6)《中华人民共和国保守国家秘密法实施条例》(7) 《关键信息基础设施安…

解决Python安装库时出现的Requirement already satisfied问题

uirement already satisfied的问题当我们用pip install 库名时&#xff0c;出现了下面 Requirement already satisfied WARNING: Ignoring invalid distribution -ip 的问题 对于这样的问题&#xff0c;解决办法就是在 pip install 后加 - -target你所要添加的库文件地址(注意…

python2实现数据库表定时全量同步sftp

python2实现数据库表定时全量同步sftp 需求 周边系统需要通过sftp接口&#xff0c;将本系统数据库的8张表吐给sftp&#xff0c;文件名为txt,提供的字段用#号分隔&#xff08;逗号存在分隔不开的情况&#xff09;&#xff0c;8张表采用全量每天同步。 环境 操作系统centos7.…

pandas字符串操作(下)

目录 数据预览&#xff1a; 七、contains判断字符串里是否包含某字符 1.需求&#xff1a; 2.讲解 3.效果展示 八、startswith/endswith判断是否以某个字开头或结尾 1.需求&#xff1a; 2.讲解 3.效果展示 九、repeat将字符串进行重复 1.需求&#xff1a; 2.讲解 3.…

python的tabulate包在命令行下输出表格不对齐

用tabulate可以在命令行下输出表格。 from tabulate import tabulate# 定义表头 headers [列1, 列2, 列3]# 每行的内容 rows [] rows.append((张三,数学,英语)) rows.append((李四,信息科技,数学))# 使用 tabulate 函数生成表格 output tabulate(rows, headersheaders, tab…