[AutoSar]BSW_Com017 COM模块介绍(一)

目录

  • 关键词
  • 平台说明
  • 一、COM 所处架构位置
  • 二、COM 的功能概述
  • 三、Functional Specification
    • 3.1 AUTOSAR COM basis function
    • 3.2 Signal Gateway
      • 3.2.1 Signal routing requirements
      • 3.2.2 Routing of signal groups
      • 3.2.3 Routing latency for normal Signal Gateway
      • 3.2.4 Gateway routing timeout
    • 3.3 Signal Processing
    • 3.4 Transmission of a Signal
    • 3.5 Transmission of a Signal Group
    • 3.6 Transmission Mode Selector
    • 3.7 Explicit Transmission Mode State Switch
    • 3.8 Transmit Signal Filters
    • 3.9 Minimum Send Distance of an I-PDU
      • 3.9.1 Minimum Send Distance only for Direct Send Triggers
    • 3.10 Transmission Deadline Monitoring
    • 3.11 Replication of Signal Transmission Requests
    • 3.12 Reception of a Signal
    • 3.13 Reception of a Signal Group
    • 3.14 Array-based access of SignalGroups
    • 3.15 Dynamic DLC
    • 3.16 Reception Deadline Monitoring
    • 3.17 Invalidation Mechanism
    • 3.18 Signal Reception Filtering
    • 3.19 Signal Status Information (update-bit)
    • 3.20 Gateway Description Routing
    • 3.21 Large I-PDUs
    • 3.22 Dynamic length signals

  

关键词

嵌入式、C语言、autosar、OS、BSW

平台说明

项目Value
OSautosar OS
autosar厂商vector , EB
芯片厂商TI 英飞凌
编程语言C,C++
编译器HighTec (GCC)
autosar版本4.3.1

在这里插入图片描述
>>>>>回到总目录<<<<<<

缩写描述
MDTMinimum Delay Timer
TMSTransmission Mode Selector

一、COM 所处架构位置

  位于服务层。
在这里插入图片描述

二、COM 的功能概述

  AUtosar COM 是基于ISO 17356-4:2005 OSEK/VDX Communication (COM)而来。主要用于上层(SWC,RTE)与下层(PDUR)的信号mapping、signal组合、滤波,对NM通知等。

三、Functional Specification

3.1 AUTOSAR COM basis function

  COM模块需要可实现以下功能,以下功能可根据需求配置,如果在其他特定模块中已经实现,可通过配置disable该功能:
1.将接收到的网络消息(在一个I-PDU内)映射到多个消息数据对象(1:n分割机制)。
2.内部消息到多个消息数据对象的映射(1:n拆分机制)。
3.将仅本地发送的消息映射到外部发送消息对象和内部接收消息对象(1:n分割机制)
4.M: 1发送;将来自多个发送者的消息映射到一个相同的消息对象。
5.通知机制:TASK, FLAG和EVENT。
6.启动和停止周期性消息。
7.NM接口。
8.发送端滤波。
9.Network-order message回调。
10.值符号的转换。
11.最小传输时间间隔。
12.拆包和组包信号和信号组。
13.字节顺序转换。
14.信号失效机制。
15.更新位(信号状态信息)
16.动态长度信号。
17.信号传输请求的复制。
18.接收和传输截止时间的监控。
19.I-PDU的处理。

3.2 Signal Gateway

  AUTOSAR COM模块提供一个集成的信号网关,以1:n的方式转发信号和信号组。
  信号网关允许信号和信号组从一个Rx I-PDU路由到一个或多个Tx I-PDU。为了减少中断运行时间,信号路由在Com_MainFunctionRouteSignals()中在任务级别执行。
  由于信号可以通过COM单独访问,因此可以在路由时改变i - pdu的信号布局。此外,还可以改变路由信号的字节对齐方式,并为Tx信号和I-PDU指定任何可用的传输属性。
在这里插入图片描述

7

3.2.1 Signal routing requirements

  为了允许在两个信号之间进行路由,必须满足关于Rx和Tx信号兼容性的几个要求:
    应用程序数据类型必须相等.
    Rx信号的比特数不能大于Tx信号的比特数.
    当路由字节数组(应用程序数据类型为uint[8])时,字节数必须相等.
    如果一个Tx信号在多个路由关系中使用(n(Rx):1(Tx)路由),运行时路由关系必须是互斥的,以保证数据的一致性。

3.2.2 Routing of signal groups

  信号组从Rx I-PDU到Tx I-PDU路由一致。为了保证信号的数据一致性,要求Tx信号组的所有信号都用一个Rx信号组的信号填充。如果没有给出,信号组路由是不可能的。
  不要求Rx信号组的所有信号都路由到Tx信号组。这允许将Rx信号组路由到具有较少组信号的Tx信号组.

3.2.3 Routing latency for normal Signal Gateway

  最大路由延迟受多种因素的影响,COM无法保证延迟。在估计路由延迟时,必须考虑以下因素:
    COM(主)函数的循环次数
    Tx I-PDU的最小延迟时间
    Tx I-PDU的传输方式和周期时间
    Tx信号传输方式和滤波器设置
    由底层引起的延迟(如总线访问延迟时间)
    其他因素,如中断事件,可能延迟路由执行

3.2.4 Gateway routing timeout

  基本Tx-I-PDU的网关路由超时描述了两个路由事件引用同一个Tx-I-PDU之间在超时之前的最大时间间隔。如果路由超时,则停止Tx-I-PDU的循环传输。如果该Tx-I-PDU发生网关映射事件,则重新启动PDU的循环传输。

3.3 Signal Processing

  每个Pdu都有ComIPduSignalProcessing参数,该参数可以有值IMMEDIATE or DEFERRED.

   IMMEDIATE : 1.通知函数 在Com_TxConfirmation()或Com_RxIndication()函数中被调用。
        2.带有IMMEDIATE信号处理的被触发信号的传输将在各自的Com_MainFunctionTx()的下一次调用中被触发。
   DEFERRED: 1.通知函数在Com_MainFunctionRx()或Com_MainFunctionRx()的下一个调用周期中被调用。
        2.信号处理DEFERRED的I-PDU中包含的信号值将在各自的Com_MainFunctionRx()中在任务级别上更新。

3.4 Transmission of a Signal

  为了请求信号的传输,上层使用API Com_SendSignal。在执行可选参数检查后,COM用新的信号值更新I-PDU,并检查信号的传输属性是否需要直接传输。如果是,则设置一个标志,稍后在COM层的发送部分的循环主函数中计算该标志。Tx I-PDU必须分配给Com_MainFunctionTx
  直接传输和周期传输的i - pdu的传输过程如下图所示。

周期传输
会在下个Com_mainfunctionTX 的时候发送更新的数据(5)
在这里插入图片描述

直接传输
在同一个周期更新的值B会被A覆盖。,所以如果上层更新信号过快会被覆盖掉。
在这里插入图片描述
MIXED 混合传输:
结合了上述两种类型。

3.5 Transmission of a Signal Group

  AUTOSAR COM提供信号组,以一次性地发送多个信号。映射到一个信号组的信号称为group signals,它们之间应该是有联系的。为了保证group signals的一致性,每个信号组都有一个阴影缓冲区。要请求传输具有多个组信号的group signals,必须遵循以下API调用顺序:

/* Update the group signal values in the shadow buffer */
Com_SendSignal(GroupSignal1, &SigBuffer1);
Com_SendSignal(GroupSignal2, &SigBuffer2);
/* Copy the shadow buffer to the Tx buffer */
Com_SendSignalGroup(SignalGroupA);

注意事项: 为了保证整个信号组的数据一致性,一个信号组的完整传输(连续调用’Com_SendSignal’和’Com_SendSignalGroup’)不能被同一信号组的另一个传输请求或’Com_InvalidateSignalGroup’的调用中断。

3.6 Transmission Mode Selector

  AUTOSAR COM允许为每个I-PDU配置两种不同的传输模式(ComTxModeTrue和ComTxModeFalse)。仅根据映射到该I-PDU上的信号的滤波状态来选择在特定时间点有效的I-PDU的传输模式。
   如果映射到特定I-PDU的任何信号的滤波器的计算结果为TRUE,则该I-PDU以传输模式TRUE传输。当映射到该I-PDU的所有信号的滤波器的值为FALSE时,该IPDU使用传输模式FALSE。
   如果映射到特定I-PDU的所有信号都没有分配滤波器,则传输模式计算为TRUE,并且永远不会改变。

3.7 Explicit Transmission Mode State Switch

   通过调用Com_SwitchIpduTxMode API,可以显式地切换每个Tx I-PDU的配置传输模式(TRUE/FALSE)。如果请求的传输模式与当前激活的传输模式不同,则立即激活新的传输模式。

3.8 Transmit Signal Filters

   可以选择性地为每个发射信号分配一个信号滤波器。发射信号的滤波器只用于传输模式的选择,但发射信号的值永远不会被过滤掉。
支持以下过滤器:mask, x, min和max的值可以为每个过滤器配置.
 F_Always (TRUE)
 F_Never (FALSE)
 F_MaskedNewDiffersMaskedOld ((new_value&mask) != (old_value&mask))
 F_MaskedNewEqualsX ((new_value&mask) == x)
 F_MaskedNewDiffersX ((new_value&mask) != x)
 F_MaskedNewIsOutside ((new_value<min) || (max<new_value))
 F_MaskedNewIsWithin ((min<=new_value) && (new_value<=max))

3.9 Minimum Send Distance of an I-PDU

   在COM规范中定义了一种可选机制,通过为I-PDU引入最小发送距离来实现总线负载的划分。这个概念也在Tx主函数中处理.
   混合传输方式示例如下图所示。请注意,由于最小发送距离,循环传输可以延迟,但基本周期不修改。直接传输用红色实箭头表示。
在这里插入图片描述

3.9.1 Minimum Send Distance only for Direct Send Triggers

   如果ComEnableMDTForCyclicTransmission参数设置为false,则只考虑基于事件的传输的最小延迟时间,它可以由Com_InvalidateSignal(), Com_InvalidateSignalGroup(),Com_SendSignal(), Com_SendSignalGroup(), Com_SendSignalGroupArray() or Com_TriggerIPDUSend().发起.
在这里插入图片描述
   下图表明循环传输不会结束最小延迟时间。在循环传输之后直接触发基于事件的传输,尽管最小延迟还没有过去。紧接着,在比较中,第二个基于事件的传输请求被配置的最小延迟时间延迟,因为第一个基于事件的传输已经重新加载了延迟计数器。

在这里插入图片描述

3.10 Transmission Deadline Monitoring

   对于Tx i - pdu,提供了截止日期监控机制来检测底层传输机制的故障。
支持两种不同的变体:
   Normal Mode: 如果COM触发了I-PDU的发送,则观察I-PDU的发送请求到下一个Tx确认(Com_TxConfirmation())之间的时间。例如,发送请求由Com_SendSignal()、Com_TriggerIPduSend()或循环触发器给出。
   None Mode: 对于由总线接口调度表(例如LIN调度表)触发的i - pdu,观察两个连续Tx确认之间的时间(Com_TxConfirmation())。“None Mode”适用于两种传输模式都配置为None的Tx I-PDU。当I-PDU对应的I-PDU组启动并在传输确认时重新加载时,定时器启动。如果这个定时器还没有运行,这个时候一个触发事件,例如Com_TriggerIPduSend(),也将启动定时器。

如果设置为 Normal Mode,在调用Com_SendSignale或者Com_SendSignaleGtoup的时候开始计时器,如果在Confirmation前超时,则触发notification functions。
在这里插入图片描述
如下图所示,如果设置为None Mod ,超时计时器由Com_IPduGroupControl()启动,收到confirmation 后重置定时器,如果两个confirmation 间超时则触发notification functions。

3.11 Replication of Signal Transmission Requests

  AUTOSAR COM提供了一个可选功能,为上层的一个发送请求复制传输请求到下层。
   下层接收上层的一个发送请求。如果将ComTxModeNumberOfRepetitions属性配置为大于0的值(对于DIRECT或MIXED传输模式),则只要在上层发送请求后调用该I-PDU的“n + 1”确认,COM就会使用可配置的ComTxModeRepetitionPeriodFactor循环地触发Tx IPDU的传输。
在这里插入图片描述

如下图所示,N = 2 ,重复复制发送了两次在这里插入图片描述

3.12 Reception of a Signal

  为了接收信号,上层使用API Com_ReceiveSignal。该业务发送的信号值包含在该信号的最新I-PDU中。由于信号处理上下文依赖于相应Rx IPDU的配置,所以直到下一次调用相应的Com_MainfunctionRx时,最新的信号值才可用。
   信号的接收过程通常与I-PDU的接收是异步的。但是可以在接收通知回调中调用Com_ReceiveSignal。
在这里插入图片描述
  调用com_receivessignal总是返回最后接收到的信号值,如果超时发生并且Rx数据超时动作被设置为REPLACE,则返回初始值,即使相应的I-PDU组停止。

3.13 Reception of a Signal Group

  AUTOSAR COM提供signal groups 用于一次性接收多个signals。signals映射到一个signal groups,signal之间通常是由联系的,说人话就是同一类signal放在一个signal group。为了确保组信号值的一致性,为每个信号组提供阴影缓冲区。
   由于信号处理上下文依赖于相应Rx IPDU的配置,所以直到下一次调用相应的Com_MainfunctionRx时,最新的信号组值才可用。
注意: 为了保证整个信号组的数据一致性,一个信号组的完整接收(Com_ReceiveSignalGroup和Com_ReceiveSignal的连续调用)不能被同一信号组的另一个接收请求中断。

/* Copy the Rx buffer to the shadow buffer */
Com_ReceiveSignalGroup(SignalGroupA);
/* Get the group signal values from the shadow buffer */
Com_ReceiveSignal(GroupSignal1, &SigBuffer1);
Com_ReceiveSignal(GroupSignal2, &SigBuffer2);

3.14 Array-based access of SignalGroups

  Array-based access of SignalGroups 作为 替换Transmission of a Signal Group 和Reception of a Signal Group的方式,可以不用对Group中的Signals单独处理。调用Com_ReceiveSignalGroupArray和Com_SendSignalGroupArray API用于发送和接收基于uint8数组的SignalGroup。使用Array-based 后 ,group 打包和拆包的资源消耗就没了,SignalGroup的进一步处理留给API的调用者。但是,为了允许快速处理,必须满足以下先决条件:
1.只支持固定大小的数据类型。
2.SignalGroup必须在包含的I-PDU中按字节对齐。
3.SignalGroup不能被其他信号打断。
4.Transmission Mode Selector只能选择ALWAYS, NEVER, MASKED_NEW_EQUALS_X和
MASKED_NEW_DIFFERS_X。

  要激活此功能,请打开全局COM配置开关ComEnableSignalGroupArrayApi必须启用。此外,只有SignalGroups ComSignalGroupArrayAccess被active才允许array-based access。
在这里插入图片描述
在这里插入图片描述
注意: 如果Array-based access of SignalGroups 经过了signal gateway,由于signal gateway需要解包分组信号,上述基于阵列表示的优点将消失。

3.15 Dynamic DLC

  COM会评估从底层接口给出的SDU的DLC的实际长度,以支持接收具有可变长度的Rx i - pdu。
分为两种情况:
  1.实际收到的DLC大于等于静态配置的PDU长度:
      仅处理与静态配置的PDU长度相同的SDU负载数据。
      信号的内容可以被正常处理。
  2.实际收到的DLC小于静态配置的PDU长度:
      仅处理实际收到的DLC长度的PDU数据。
      信号的内容可以被正常处理。会导致信号异常。如果配置的更新位不包含在实际接收到的有效载荷中,则信号被处理,就像设置了更新位一样。

3.16 Reception Deadline Monitoring

  对于Rx信号和信号组,提供截止时间监控机制,检测其他ecu的故障。可以为每个信号和信号组配置超时时间,但是只能单独监视具有配置的更新位的信号和信号组。对于没有配置更新位的信号和信号组,应用基于I-PDU的超时。
   如果发生超时,COM是否调用超时通知并将信号值替换为配置的初始值是可配置的。如果Rx超时值与初始值不同,可以使用“Rx Data Timeout Substitution Value”参数配置Rx超时值。
在这里插入图片描述

3.17 Invalidation Mechanism

  在发送端,可以为每个信号和组信号配置一个无效值,该值由COM无效api设置,以表明应用程序不能提供任何有效的信号值。
  对于信号组,所有的组信号应立即失效,因为组信号以一致的方式相关。因此,如果一组信号无效,则整个信号组无效。
   在接收端,COM根据配置的无效值检查接收到的信号和组信号的值。如果检测到无效值,COM提供以下操作:
      1.无效的值被信号的初始值所替换,然后进行正常的信号处理
      2.调用配置的无效通知,并且无效值不存储在内部COM缓冲区中
      3.对于信号组,将检查所有组信号的无效值。如果至少有一个组信号无效,则对该信号组的所有组信号执行无效操作。
在这里插入图片描述

3.18 Signal Reception Filtering

  可以对Rx信号和组信号配置滤波算法,过滤掉特定的信号值。如果滤波器算法被评估为FALSE,则整个信号处理被抑制。因此,信号数据不存储在内部COM缓冲区中,并且不调用已配置的通知函数。
  对于信号组,如果所包含的任何组信号的至少一个已配置的滤波算法被求值为TRUE,则执行信号处理。只有当所有滤波算法的值都为FALSE时,信号组才会被过滤掉。

3.19 Signal Status Information (update-bit)

  对于信号和信号组,可以配置更新位来指示自信号在总线上的最后一次传输以来信号值是否已被应用程序更新。
   在发送端,更新位在Com_SendSignal或Com_SendSignalGroup的上下文中设置。由于更新位在值更新后只能在总线上出现一次,因此更新位必须根据下层的发送行为清除。每个Tx I-PDU可配置 update-bit。
   如果下层在发送上下文中复制了I-PDU负载,则在COM触发I-PDU的发送后,更新位将被直接清除。如果下层请求通过调用Com_TriggerTransmit解耦的I-PDU负载,则更新位将在此上下文中被清除。
   接收ECU检查与信号或信号组相关的更新位的状态,如果没有设置更新位,则禁止完整的信号处理。在功能良好的网络中,如果信号值发生了变化,则应该始终设置更新位。否则发送ECU是缺陷。
在这里插入图片描述
在这里插入图片描述

3.20 Gateway Description Routing

  描述路由是一种基本的路由模式,在这种模式下,一个传入的Rx- I-PDU的一部分被复制到1…n个目的tx -I-PDU中,而不需要对其内容进行进一步的解释和处理。在这种模式下,可以绕过正常的信号处理路径,从而减少路由事件延迟。

3.21 Large I-PDUs

  大的I-PDU是指大到无法装入底层通信协议的单个L-PDU的PDU。一个大的I-PDU必须将ComIPduType配置为TP,并且将通过传输协议发送/接收。在接收端,COM总是保存一个大I-PDU中包含的信号的有效值。
  在传输端,当一个大的I-PDU传输正在进行时,COM将通过调用api: Com_SendSignal, Com_SendSignalGroup和Com_SendDynSignal返回COM_BUSY。
注意: 对于较大的i - pdu, ComTxIPduClearUpdateBit上下文只能配置为confirm。

3.22 Dynamic length signals

  动态长度信号是ComSignals或ComGroupSignals, ComSignalType配置为UINT8_DYN。动态长度信号的取值范围为0 ~配置的ComSignalLength。动态长度信号必须包含在ComIPduType配置为TP的I-PDU中,动态长度信号必须放置在I-PDU的末尾。允许为动态长度信号配置更新位。在这种情况下,更新位必须位于动态长度信号的前面。使用API Com_ReceiveDynSignal接收动态长度信号,使用API Com_SendDynSignal发送动态长度信号。
   动态长度信号必须放置到字节边界,并且必须具有信号的端序OPAQUE。
  在接收端,唯一支持的ComFilterAlgorithm是ALWAYS,而在发送端,动态长度信号和组信号支持ComFilterAlgorithms ALWAYS和NEVER。此外,ComTransferProperties TRIGGERED_ON_CHANGE和TRIGGERED_ON_CHANGE_WITHOUT_REPETITION不支持动态长度信号和组信号。

Com Optimizations 和状态机等后面续上。。。。

[AutoSar]BSW_Com018 COM模块介绍(二)

>>>>>回到总目录<<<<<<

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

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

相关文章

Nacos介绍和Eureka的区别

Nacos&#xff08;全称为 Alibaba Cloud Nacos&#xff0c;或简称为 Nacos&#xff09;是一个开源的分布式服务发现和配置管理系统。它由阿里巴巴集团开发并开源&#xff0c;旨在帮助开发人员简化微服务架构下的服务注册、发现和配置管理。 1、Nacos 提供了以下主要功能&#…

Django在日志中使用AdminEmailHandler发送邮件(同步),及celery异步发送日志邮件的实现

目录 一、使用AdminEmailHandler实现发送日志通知邮件 1&#xff0c;配置日志项 2&#xff0c;配置邮件项 3&#xff0c;在视图里使用日志 二、继承AdminEmailHandler使用celery实现异步发送邮件 1&#xff0c;安装配置celery 2&#xff0c;继承AdminEmailHandler类&…

V2X技术与智能传感器的完美融合:提升城市道路安全

在科技不断创新的今天&#xff0c;城市交通领域涌现了大量新技术。有时候我们不仅仅需要独立应用这些新技术来实现交通的变革&#xff0c;更需要将它们巧妙地结合连接起来&#xff0c;以获取更高效更安全的交通环境。本文将探讨V2X技术与智能传感器的结合&#xff0c;如何在城市…

uni-app打包证书android

Android平台打包发布apk应用&#xff0c;需要使用数字证书&#xff08;.keystore文件&#xff09;进行签名&#xff0c;用于表明开发者身份。 Android证书的生成是自助和免费的&#xff0c;不需要审批或付费。 可以使用JRE环境中的keytool命令生成。 以下是windows平台生成证…

1升级powershell后才能安装WSL2--最后安装linux--Ubuntu 22.04.3 LTS

视频 https://www.bilibili.com/video/BV1uH4y1W7UX特殊开启–Hyper-V虚拟机 把一下代码保存到【a.bat】的执行文件中&#xff0c;进行Hyper-V虚拟机的安装开启【Windows 批处理文件 (.bat)】 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mu…

elasticsearch的数据搜索

DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户…

鸿蒙Harmony应用开发—ArkTS(@Styles装饰器:定义组件重用样式)

如果每个组件的样式都需要单独设置&#xff0c;在开发过程中会出现大量代码在进行重复样式设置&#xff0c;虽然可以复制粘贴&#xff0c;但为了代码简洁性和后续方便维护&#xff0c;我们推出了可以提炼公共样式进行复用的装饰器Styles。 Styles装饰器可以将多条样式设置提炼…

学点儿Java_Day9_String、包装类

1 String 详解“”和equals的区别 Testpublic void test1() {//"abc"双引号括起来的字符串&#xff1a;字符串常量&#xff0c;它也是一个对象// 1.8之后常量池放到堆&#xff0c;在常量池里面找有没有这个"abc"对象&#xff0c;// 如果常量池里面没有这…

是德科技keysight N1912A双通道功率计

181/2461/8938产品概述&#xff1a; Keysight(原Agilent) N1912A P系列双通道功率计可提供峰值、峰均比、平均功率、上升时间、下降时间、最大功率值、最小功率值以及宽带信号的统计数据。 Keysight(原Agilent) N1912A P系列双通道功率计, 可提供峰值、峰均比、平均功率、上升…

nodejs各版本下载

https://registry.npmmirror.com/binary.html 然后进入nodejs各个版本&#xff0c;然后按需选择

JAVA 栈和队列总结

除了最底层下面三个是实现类&#xff0c;其他都是接口。 双端队列&#xff08;队头队尾都可以插入和删除元素&#xff09;的方法&#xff1a; 普通队列方法&#xff1a; 常用的是add(),poll(), element() 我们用Deque(双端队列)实现栈 Deque当栈用的时候的方法。 deque.push…

百度小程序入口在哪里找到怎么打开百度词令关键词口令直达小程序?

百度小程序入口在哪里找到怎么打开百度词令关键词口令直达小程序&#xff1f; 一、百度搜索找到百度词令小程序 打开手机百度搜索「词令」即可找到百度词令关键词口令直达小程序&#xff1b; 二、百度小程序中心找到百度小程序 2.1、打开手机百度&#xff0c;点击底部我的&a…

解决用POI库生成的word文件中的表格在python-docx无法解析的问题

问题背景 用apache-poi生成word文件中表格&#xff0c;在使用python-docx库解析时报错&#xff1a; 问题分析 1. word文档本质上是一个rar压缩包&#xff0c;用winrar解析后如下&#xff1a; 2. 查看document.xml&#xff0c;可以看到table元素下面是没有<w:tblGrid>这…

Carla 自动驾驶挑战赛 搭建环境

1. 系统设置 1.1 下载CARLA排行榜包 下载打包的CARLA 排行榜版本。 将包解压到一个文件夹中&#xff0c;例如 CARLA。 在以下命令中&#xff0c;更改${CARLA_ROOT}变量以对应于您的 CARLA 根文件夹。 为了使用 CARLA Python API&#xff0c;您需要在您喜欢的环境中安装一些…

ARM-Linux 开发板下安装编译 OpenCV 和 Dlib

安装 OpenCV 和 Dlib 不像在 x86 平台下那样简单&#xff0c;用一句命令就可以自动安装完。而在 ARM 平台中许多软件都需要自行下载编译&#xff0c;且还有许多问题&#xff0c;本篇文章就是记录在 ARM 平台下载 OpenCV 踩过的坑。 硬件环境&#xff1a; RK3568 Ubuntu20.04…

一文读懂I2C协议

一.硬件连接 I2C必须使用开漏&#xff08;或集电极开路&#xff09;的引脚&#xff0c;其引脚框图如下所示。 SCL0对应78K0的P6.0引脚&#xff0c;SDA0对应78K0的P6.1引脚。 在使用开漏引脚通信时&#xff0c;需注意如下事项&#xff1a; 1&#xff09;两条总线须外接…

jvm提供的远程调试 简单使用

JVM自带远程调试功能 JVM远程调试&#xff0c;其实是两个虚拟机之间&#xff0c;通过socket通信&#xff0c;达到远程调试的目的&#xff1b; 前提 确保本地和远程的网络是开通的&#xff1b; 本地操作 远程操作 在启动命令参数中 把上面的内容复制进去

基于CSS3制作专属可自由旋转的立方体

一、代码区域 1.1 css3代码区域 <style>* {padding: 0;margin: 0;list-style: none;}/* 1) 定义动画 */keyframes loop {0% {transform: rotateX(348deg) rotateY(67deg) rotateZ(95deg);}50% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);}100% {transform:…

list.sort()Collections.sort()深入理解

list.sort()&&Collections.sort() 文章目录 list.sort()&&Collections.sort()背景相关代码代码一代码二 原理举一反三 业务场景考虑 背景 业务中经常用到List的sort()方法&#xff0c;但是对于其中return的-1&#xff0c;0&#xff0c;1理解不到位&#xff0c…

(附源码)基于Spring Boot与Vue的宠物用品销售系统设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31…