【DBC专题】-12-不同类型报文(应用/诊断/网关/测量标定)在DBC中配置,以及在Autosar各模块间的信号数据流向
点击返回「Autosar从入门到精通-实战篇」总目录
案例背景(共18页精讲):该篇博文将告诉您:
1)Autosar中,不同类型报文(App应用,UDS/OBD诊断,NM网络管理报文,XCP测量标定)的信号数据流向;
2)CAN DBC中,不同的Attribute属性决定不同类型报文(App应用,UDS/OBD诊断,NM网络管理报文,XCP测量标定)。
3)TechnicalReference-DbcRules-Vector文件下载,见下方链接:
TechnicalReference-DbcRules-Vectorhttps://download.csdn.net/download/qfmzhu/87580682
目录
1 Autosar中不同类型报文(应用/诊断/网络管理/测量标定)的信号数据流向
1.1 普通APP应用报文信号数据流向
1.1.1 多路复用Multiplexer报文信号数据流向
1.2 UDS/OBD诊断报文信号数据流向
1.3 NM网络管理报文信号数据流向
1.4 XCP测量标定报文信号数据流向
2 CAN DBC中如何定义不同类型报文(应用/诊断/网络管理/测量标定)
3 如何制作一个Autosar工具能够识别的CAN DBC
3.1 节点的定义
3.2 普通App帧配置
3.2.1 普通App Tx发送帧配置
3.2.2 普通App Rx接收帧配置
3.3 UDS/OBD诊断帧配置
3.3.1 UDS/OBD诊断功能请求帧配置
3.3.2 UDS/OBD诊断物理请求帧配置
3.3.3 UDS/OBD诊断诊断响应帧配置
3.4 NM网络管理帧配置
3.4.1 NM网络管理发送帧配置
3.4.2 NM网络管理接收帧配置
3.5 XCP测量标定帧配置
3.5.1 XCP测量标定发送帧配置
3.5.2 XCP测量标定接收帧配置
3.6 附件:Autosar工具能够使用的Demo.dbc
4 摘录:Autosar工具中使用的CAN DBC常用属性
结尾
优质博文推荐阅读(单击下方链接,即可跳转):
Vector工具链
CAN Matrix DBC
CAN Matrix Arxml
<--返回「实战篇」博文-总目录-->
<--返回「Autosar从入门到精通-实战篇」专栏主页-->
1 Autosar中不同类型报文(应用/诊断/网络管理/测量标定)的信号数据流向
以经典CAN/CANFD通信为例,不同类型报文(应用/诊断/网络管理/测量标定)在Autosar BSW层中的信号数据流向,见图1-1。
图1-1
COM:Communication
DCM: Diagnostic Communication Manager
Ipdum: IPDU Multiplexer
PduR:PDU Router
Nm: Network Management
CanTp: CAN Transport Layer
CanIf: CAN Interface
1.1 普通APP应用报文信号数据流向
如图1-1所述:
Rx 接收一帧普通的APP应用报文信号数据流向:CAN Driver – > CanIf -- > PduR -- > Com
Tx 发送一帧普通的APP应用报文信号数据流向:Com – > PduR – > CanIf – > CAN Driver
1.1.1 多路复用Multiplexer报文信号数据流向
如图1-2所述:
Rx 接收一帧多路复用Multiplexer报文信号数据流向:CAN Driver – > CanIf -- > PduR -- > Ipdum – > PduR -- > Com
Tx 发送一帧多路复用Multiplexer报文信号数据流向:Com – > PduR – > Ipdum – > PduR -- > CanIf – > CAN Driver
图1-2
1.2 UDS/OBD诊断报文信号数据流向
如图1-1所述:
Rx 接收一帧UDS/OBD诊断报文信号数据流向:CAN Driver – > CanIf -- > CanTp -- > PduR -- > Dcm
Tx 发送一帧UDS/OBD诊断报文信号数据流向:Dcm – > PduR – > CanTp -- > CanIf – > CAN Driver
1.3 NM网络管理报文信号数据流向
如图1-3所述:
Rx 接收一帧NM网络管理信号数据流向:CAN Driver – > CanIf -- > CanNm -- > PduR -- > Com
Tx 发送一帧NM网络管理信号数据流向:Com – > PduR – > CanNm -- > CanIf – > CAN Driver
图1-3
1.4 XCP测量标定报文信号数据流向
如图1-1所述:
Rx 接收一帧XCP测量标定报文信号数据流向:CAN Driver – > CanIf -- > XCP
Tx 发送一帧XCP测量标定报文信号数据流向:XCP -- > CanIf – > CAN Driver
2 CAN DBC中如何定义不同类型报文(应用/诊断/网络管理/测量标定)
CAN DBC中,不同的Attribute属性定义,决定了不同类型的报文:APP应用报文,UDS/OBD诊断报文,NM网络管理报文,XCP测量标定报文。
Vector Davinci提供的《TechnicalReference_DbcRules_Vector.pdf》文档中,说明了CAN DBC文件中,不同类型报文的Attributes(GenMsgILSupport,DiagState,DiagRequest,DiagResponse,NmAsrMessage)定义,见下表。
Attribute属性 | GenMsgILSupport | DiagState | DiagRequest | DiagResponse | NmAsrMessage |
APP应用报文 | Yes | No | No | No | No |
UDS/OBD诊断报文 | No | Yes/No | Yes/No | Yes/No | No |
NM网络管理报文 | No | No | No | No | Yes |
XCP测量标定报文 | No | No | No | No | No |
3 如何制作一个Autosar工具能够识别的CAN DBC
制作一个完整的CAN DBC,过程可参考博文“【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBChttps://blog.csdn.net/qfmzhu/article/details/111403266”,第3.2~3.5章节摘录了message配置,需要重点关注的地方:发送节点,接收节点,属性设置差异。
Autosar工具链导入该CAN DBC可参考博文:
【DaVinci Configurator专题】-2-将CAN 2.0或CANFD Matrix的Arxml/DBC文件导入到CFGhttps://blog.csdn.net/qfmzhu/article/details/115032771
3.1 节点的定义
在Network nodes中,至少定义4个节点,见图3-1:
- 当前所在ECU的节点名称:默认为DCDC;
- 定义若干个该ECU的接收节点:以VCU为例,这些节点中存在NM帧发送节点;
- 定义一个UDS/OBD诊断/测试仪节点:以Test为例。
- 定义一个XCP测量标定节点:以MCD为例。
图3-1
3.2 普通App帧配置
3.2.1 普通App Tx发送帧配置
3.2.2 普通App Rx接收帧配置
3.3 UDS/OBD诊断帧配置
3.3.1 UDS/OBD诊断功能请求帧配置
3.3.2 UDS/OBD诊断物理请求帧配置
3.3.3 UDS/OBD诊断诊断响应帧配置
3.4 NM网络管理帧配置
3.4.1 NM网络管理发送帧配置
3.4.2 NM网络管理接收帧配置
3.5 XCP测量标定帧配置
3.5.1 XCP测量标定发送帧配置
3.5.2 XCP测量标定接收帧配置
3.6 附件:Autosar工具能够使用的Demo.dbc
将以下内容复制到一个txt文件中,并保存,接着将文件后缀txt用dbc替换,这样可以快速得到这个demo.dbc文件。
VERSION ""NS_ : NS_DESC_CM_BA_DEF_BA_VAL_CAT_DEF_CAT_FILTERBA_DEF_DEF_EV_DATA_ENVVAR_DATA_SGTYPE_SGTYPE_VAL_BA_DEF_SGTYPE_BA_SGTYPE_SIG_TYPE_REF_VAL_TABLE_SIG_GROUP_SIG_VALTYPE_SIGTYPE_VALTYPE_BO_TX_BU_BA_DEF_REL_BA_REL_BA_DEF_DEF_REL_BU_SG_REL_BU_EV_REL_BU_BO_REL_SG_MUL_VAL_BS_:BU_: MCD Tester VCU DCDCBO_ 1809 XCP_Tx_Message: 8 DCDCSG_ DCDC_to_MCD_Resp : 7|64@0+ (1,0) [0|0] "" MCDBO_ 1808 XCP_Rx_Message: 8 MCDSG_ MCD_Req : 7|64@0+ (1,0) [0|0] "" DCDCBO_ 513 NM_Tx_Message: 8 DCDCSG_ NM_Tx_Message_Signal : 7|8@0+ (1,0) [0|0] "" VCUBO_ 512 NM_Rx_Message: 8 VCUSG_ NM_Rx_Message_Signal : 7|8@0+ (1,0) [0|0] "" DCDCBO_ 1794 Diag_Response: 8 DCDCSG_ DCDC_to_Tester_Phy_Resp : 7|64@0+ (1,0) [0|0] "" TesterBO_ 1793 Diag_Physical_Request: 8 TesterSG_ Tester_Phy_Req : 7|64@0+ (1,0) [0|0] "" DCDCBO_ 1792 Diag_Function_Request: 8 TesterSG_ Tester_Fun_Req : 7|64@0+ (1,0) [0|0] "" DCDCBO_ 256 APP_Rx_Message: 8 VCUSG_ APP_Rx_Message_Signal : 7|8@0+ (1,0) [0|0] "" DCDCBO_ 257 APP_Tx_Message: 8 DCDCSG_ APP_Tx_Message_Signal : 7|8@0+ (1,0) [0|0] "" VCUBA_DEF_ BU_ "NmStationAddress" INT 0 127;
BA_DEF_ "NmBaseAddress" HEX 1152 1279;
BA_DEF_ "Manufacturer" STRING ;
BA_DEF_ SG_ "GenSigInactiveValue" INT 0 2147483647;
BA_DEF_ SG_ "GenSigSendType" ENUM "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","IfActive","IfActiveWithRepetition","NoSigSendType","OnChangeAndIfActive","OnChangeAndIfActiveWithRepetition","vector_leerstring";
BA_DEF_ SG_ "GenSigStartValue" INT 0 2147483647;
BA_DEF_ BO_ "DiagRequest" ENUM "no","yes";
BA_DEF_ BO_ "DiagResponse" ENUM "no","yes";
BA_DEF_ BO_ "DiagState" ENUM "no","yes";
BA_DEF_ BO_ "DiagUudtResponse" ENUM "false","true";
BA_DEF_ BO_ "NmAsrMessage" ENUM "No","Yes";
BA_DEF_ BO_ "GenMsgCycleTime" INT 0 65535;
BA_DEF_ BO_ "GenMsgCycleTimeFast" INT 0 65535;
BA_DEF_ BO_ "GenMsgDelayTime" INT 0 65535;
BA_DEF_ BO_ "GenMsgFastOnStart" INT 0 65535;
BA_DEF_ BO_ "GenMsgILSupport" ENUM "no","yes";
BA_DEF_ BO_ "GenMsgNrOfRepetition" INT 0 999;
BA_DEF_ BO_ "GenMsgSendType" ENUM "Cyclic","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed","IfActive","NoMsgSendType";
BA_DEF_ BO_ "GenMsgStartDelayTime" INT 0 65535;
BA_DEF_ BO_ "TpTxIndex" INT 0 255;
BA_DEF_ "BusType" STRING ;
BA_DEF_ SG_ "GenSigTimeoutTime" INT 0 65535;
BA_DEF_DEF_ "NmStationAddress" 0;
BA_DEF_DEF_ "NmBaseAddress" 1152;
BA_DEF_DEF_ "Manufacturer" "Vector";
BA_DEF_DEF_ "GenSigInactiveValue" 0;
BA_DEF_DEF_ "GenSigSendType" "";
BA_DEF_DEF_ "GenSigStartValue" 0;
BA_DEF_DEF_ "DiagRequest" "";
BA_DEF_DEF_ "DiagResponse" "";
BA_DEF_DEF_ "DiagState" "";
BA_DEF_DEF_ "DiagUudtResponse" "";
BA_DEF_DEF_ "NmAsrMessage" "";
BA_DEF_DEF_ "GenMsgCycleTime" 0;
BA_DEF_DEF_ "GenMsgCycleTimeFast" 0;
BA_DEF_DEF_ "GenMsgDelayTime" 0;
BA_DEF_DEF_ "GenMsgFastOnStart" 0;
BA_DEF_DEF_ "GenMsgILSupport" "";
BA_DEF_DEF_ "GenMsgNrOfRepetition" 0;
BA_DEF_DEF_ "GenMsgSendType" "Cyclic";
BA_DEF_DEF_ "GenMsgStartDelayTime" 0;
BA_DEF_DEF_ "TpTxIndex" 0;
BA_DEF_DEF_ "BusType" "CAN";
BA_DEF_DEF_ "GenSigTimeoutTime" 0;
BA_ "DiagRequest" BO_ 1809 0;
BA_ "DiagResponse" BO_ 1809 0;
BA_ "DiagState" BO_ 1809 0;
BA_ "DiagUudtResponse" BO_ 1809 0;
BA_ "NmAsrMessage" BO_ 1809 0;
BA_ "GenMsgILSupport" BO_ 1809 0;
BA_ "GenMsgSendType" BO_ 1809 8;
BA_ "DiagRequest" BO_ 1808 0;
BA_ "DiagResponse" BO_ 1808 0;
BA_ "DiagState" BO_ 1808 0;
BA_ "DiagUudtResponse" BO_ 1808 0;
BA_ "NmAsrMessage" BO_ 1808 0;
BA_ "GenMsgILSupport" BO_ 1808 0;
BA_ "GenMsgSendType" BO_ 1808 8;
BA_ "DiagRequest" BO_ 513 0;
BA_ "DiagResponse" BO_ 513 0;
BA_ "DiagState" BO_ 513 0;
BA_ "DiagUudtResponse" BO_ 513 0;
BA_ "NmAsrMessage" BO_ 513 1;
BA_ "GenMsgCycleTime" BO_ 513 200;
BA_ "GenMsgILSupport" BO_ 513 0;
BA_ "GenMsgSendType" BO_ 513 0;
BA_ "DiagRequest" BO_ 512 0;
BA_ "DiagResponse" BO_ 512 0;
BA_ "DiagState" BO_ 512 0;
BA_ "DiagUudtResponse" BO_ 512 0;
BA_ "NmAsrMessage" BO_ 512 1;
BA_ "GenMsgCycleTime" BO_ 512 200;
BA_ "GenMsgILSupport" BO_ 512 0;
BA_ "GenMsgSendType" BO_ 512 0;
BA_ "DiagRequest" BO_ 1794 0;
BA_ "DiagResponse" BO_ 1794 1;
BA_ "DiagState" BO_ 1794 0;
BA_ "DiagUudtResponse" BO_ 1794 1;
BA_ "NmAsrMessage" BO_ 1794 0;
BA_ "GenMsgILSupport" BO_ 1794 0;
BA_ "GenMsgSendType" BO_ 1794 8;
BA_ "DiagRequest" BO_ 1793 1;
BA_ "DiagResponse" BO_ 1793 0;
BA_ "DiagState" BO_ 1793 0;
BA_ "DiagUudtResponse" BO_ 1793 1;
BA_ "NmAsrMessage" BO_ 1793 0;
BA_ "GenMsgILSupport" BO_ 1793 0;
BA_ "GenMsgSendType" BO_ 1793 8;
BA_ "DiagRequest" BO_ 1792 0;
BA_ "DiagResponse" BO_ 1792 0;
BA_ "DiagState" BO_ 1792 1;
BA_ "DiagUudtResponse" BO_ 1792 1;
BA_ "NmAsrMessage" BO_ 1792 0;
BA_ "GenMsgILSupport" BO_ 1792 0;
BA_ "GenMsgSendType" BO_ 1792 8;
BA_ "DiagRequest" BO_ 256 0;
BA_ "DiagResponse" BO_ 256 0;
BA_ "DiagState" BO_ 256 0;
BA_ "DiagUudtResponse" BO_ 256 0;
BA_ "NmAsrMessage" BO_ 256 0;
BA_ "GenMsgCycleTime" BO_ 256 100;
BA_ "GenMsgILSupport" BO_ 256 1;
BA_ "GenMsgSendType" BO_ 256 0;
BA_ "GenMsgCycleTime" BO_ 257 100;
BA_ "DiagRequest" BO_ 257 0;
BA_ "DiagResponse" BO_ 257 0;
BA_ "DiagState" BO_ 257 0;
BA_ "DiagUudtResponse" BO_ 257 0;
BA_ "NmAsrMessage" BO_ 257 0;
BA_ "GenMsgCycleTimeFast" BO_ 257 20;
BA_ "GenMsgDelayTime" BO_ 257 10;
BA_ "GenMsgILSupport" BO_ 257 1;
BA_ "GenMsgNrOfRepetition" BO_ 257 3;
BA_ "GenMsgSendType" BO_ 257 7;
BA_ "GenMsgStartDelayTime" BO_ 257 10;
4 摘录:Autosar工具中使用的CAN DBC常用属性
Attribute Name | Object Type | Value Type | Values and Ranges (Bold = default) | Description |
Manufacturer | Network | String | Vector | 表示OEM。value必须是 " Vector "。 |
BusType | Network | String | CAN CAN FD | 定义CAN-2.0和CAN-FD网络。如果至少有一个CAN-FD报文,则必须设置为 "CAN FD"。 |
VFrameFormat | Message | Enum | CAN Standard CAN Extended CAN FD Standard CAN FD Extended | 表示CAN报文的种类。这个属性对每个报文都是可用的,在属性定义中没有声明。它的显示文本是 "ID-Format "或 "Type"。 |
GenMsgILSupport | Message | Enum | No: 0 Yes: 1 | 表示一个消息将由COM处理。如果选择 "yes",该信息将由COM处理,否则不处理。 |
GenMsgSendType | Message | Enum | Cyclic: 0, NotUsed, NotUsed, NotUsed, NotUsed, NotUsed, NotUsed, NotUsed, NoMsgSendType: 8 | 指定I-PDU的Tx行为。可以与任何类型的GenSigSendType相结合。 |
GenSigSendType | Signal | Enum | Cyclic: 0, OnWrite: 1, OnWriteWithRepetition: 2, OnChange: 3, OnChangeWithRepetition: 4, NotUsed, NotUsed, NoSigSendType: 7 | 指定一个信号的Tx行为。OnChange仅支持<=4 Byte的信号。 请注意:带重复的发送类型和不带重复的发送类型的组合将导致信息在任何时候都是带重复的发送。 |
GenMsgCycleTime | Message | Integer | 0..65535 | 每次循环发送信息之间的时间,单位是毫秒。 |
GenMsgCycleTimeFast | Message | Integer | 0..65535 | 如果至少有一个IfActiveSignal的默认值不同,则每次循环发送消息之间的时间(ms)。 也适用于有重复的消息(即GenMsgNrOfRepetition > 0)。每次重复的时间间隔。 |
GenSigStartValue | Signal | Integer Float | 0..2147483647 | 这个值是信号的默认值。 字符串值类型可以表示十六进制和整数值。 |
GenSigInactiveValue | Signal | Integer | 0..2147483647 | 表示信号的无效值。 |
GenMsgDelayTime | Message | Integer | 0..65535 | 这是具有相同标识符的不同信息发送之间的最小时间,单位是ms。 |
GenMsgStartDelayTime | Message | Integer | 0..65535 | 这定义了Com_IpduGroupStart和这个I-PDU的循环部分的第一次发送之间的时间,单位是ms。 |
GenMsgNrOfRepetition | Message | Integer | 0..255 | 在一个初始发送请求之后的发送重复次数。重复之间的时间必须使用dbc属性GenMsgCycleTimeFast来定义。 |
GenSigTimeoutTime_<Ecu> | Signal | Integer | 0..65535 | 用于特定节点收到的该信号的超时时间(ms)。 如果为一个消息配置了不同的GenSigTimeoutTime值,并且没有使用更新位,那么最低的超时时间(最强的定义)被用于超时监测。 必须为每个接收此信号的ECU提供一个专门的属性定义(GenSigTimeoutTime_<Ecu>)。 |
NmAsrMessage | Message | Enum | No = 0, Yes = 1 | 该属性定义了相应的消息是否是AUTOSAR NM消息 |
DiagState | Message | Enum | No = 0, Yes = 1 | 设置为 "yes",用于 > Functional (UDS) request CanTp将使用Normal addressing。 |
DiagRequest | Message | Enum | No = 0, Yes = 1 | 设置为 "yes",用于 > Physical Request CanTp将使用Normal addressing。 |
DiagResponse | Message | Enum | No = 0, Yes = 1 | 设置为 "是",用于。 > Physical Response CanTp将使用Normal addressing。 |
<--返回「实战篇」博文-总目录-->
<--返回「Autosar从入门到精通-实战篇」专栏主页-->
<--返回「个人博客」首页-->
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。
相关文章:

【DBC专题】-12-不同类型报文(应用/诊断/网关/测量标定)在DBC中配置,以及在Autosar各模块间的信号数据流向
点击返回「Autosar从入门到精通-实战篇」总目录 案例背景(共18页精讲):该篇博文将告诉您: 1)Autosar中,不同类型报文(App应用,UDS/OBD诊断,NM网络管理报文,XCP测量标定)的信号数据流向; 2)CAN …...

【Linux】进程的基础概念 进程的相关操作 进程的状态
进程一、进程的基本知识1、基本概念2、进程的描述 —— PCB3、task_ struct内容分类二、进程的相关操作1、在Linux下查看进程2、通过系统调用在代码中获取进程标示符3、如何创建子进程4、关于fork()的一些深度理解三、进程的状态Linux中的进程的状态四、僵尸进程与孤儿进程僵尸…...

【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块
【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块前言1 ComM简介2 ComM功能介绍2.1 PNC 状态管理2.2 Channel状态管理2.3 通信禁止功能2.4 不同类型的NM2.5 User、PNC 与 Channel 的映射2.6 状态保存END前言 因为一个偶然的机会让我接触到了AUTOSAR,所以…...

BP插件开发(JAVA)
本文会包括BP插件开发流程及打包,API,javaswing(UI)部分的内容。阅读完本文后,读者将初步具有开发BP插件的能力。1 开始开发我们使用IDEA作为开发工具(使用其他IDE也绰绰有余)。引入依赖包&…...

【Zookeeper】介绍与配置
目录 概述 工作机制 特点 数据结构 应用场景 统一配置管理 统一集群管理 编辑 服务器动态上下线 软负载均衡 下载 启动 启动客户端 配置参数 集群配置 配置服务器编号 配置zoo.cfg 分发zoo.cfg配置文件 选举机制 第一次启动 非第一次启动 集群启动停止脚本…...
chrome快捷键
Ctrl T:打开新标签页。Ctrl W:关闭当前标签页。Ctrl Shift T:重新打开最近关闭的标签页。Ctrl Tab:在打开的标签页之间切换。Ctrl Shift Tab:在打开的标签页之间反向切换。Ctrl N:打开新窗口。Ctrl…...

手搓string类
手搓string类 文章目录手搓string类string的成员一.构造,拷贝构造,赋值重载和析构1.构造函数2.拷贝构造3.swap问题4.赋值重载5.析构函数二.简单接口1.c_str2.size(有效字符长度)3.capacity(有效字符容量)4.operator[]5.迭代器和范…...

小白学Pytorch系列--Torch API (7)
小白学Pytorch系列–Torch API (7) Comparison Ops allclose 此函数检查输入和其他是否满足条件: >>> torch.allclose(torch.tensor([10000., 1e-07]), torch.tensor([10000.1, 1e-08])) False >>> torch.allclose(torch.tensor([10000., 1e-…...

函数(上)——“Python”
各位CSDN的uu们你们好呀,今天小雅兰的内容是Python的函数呀,下面,就让我们进入函数的世界吧 首先可以选择性地看一下小雅兰很久之前写的C语言函数章节的知识: 函数——“C”_认真学习的小雅兰.的博客-CSDN博客 函数递归…...
ChatGPT说:如何利用ChatGPT变现?躺着赚钱不是梦。
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏&…...

4.网络爬虫—Post请求(实战演示)
网络爬虫—Post请求实战演示POST请求GET请求POST请求和GET请求的区别获取二进制数据爬[百度官网](https://www.baidu.com/)logo实战发送post请求百度翻译实战使用session发送请求模拟登录17k小说网常见问题前言: 📝📝此专栏文章是专门针对…...

【视频文稿】车载Android应用开发与分析 - 开发系统应用
本期视频地址:https://www.bilibili.com/video/BV1NY411z7TK/ 前言 Hello,大家好,我是林栩。 开发车载应用,其实主要都是在Android系统中编写各种系统应用,所以上期视频先介绍了Android系统源码的下载和编译流程&…...

Scala流程控制
目录 单分支 双分支 多分支 for 循环控制 循环守卫 循环步长 循环嵌套 循环返回值 While 和 do..While 循环控制 While循环控制 do..While 循环控制 循环中断 单分支 if (条件表达式) {执行代码块 }var age StdIn.readShort()if (age < 18){println("童年&quo…...

人脸活体检测系统(Python+YOLOv5深度学习模型+清新界面)
摘要:人脸活体检测系统利用视觉方法检测人脸活体对象,区分常见虚假人脸,以便后续人脸识别,提供系统界面记录活体与虚假人脸检测结果。本文详细介绍基于YOLOv5深度学习技术的人脸活体检测系统,在介绍算法原理的同时&…...
prometheus03-如何导出prometheus指标
Prometheus是一个开源的监控系统和时间序列数据库,用于收集和存储服务的指标数据。要导出Prometheus指标,你需要使用或实现一个Prometheus Exporter。以下是一个简单的指南,分为三个主要步骤: 选择或实现Prometheus Exporter Pr…...

Linux驱动开发——串口设备驱动
Linux驱动开发——串口设备驱动 一、串口简介 串口全称叫做串行接口,通常也叫做 COM 接口,串行接口指的是数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信距…...

LeetCode--缺失的第一个正数(41)和 接雨水(42)
目录 缺失的第一个正数 接雨水 0ms,100% 代码 缺失的第一个正数 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/first-missing-positive 题目:给你一个未排序的整数数组 nums ,请…...
java源码阅读---ReentrantLock源码解析
ReentrantLock源码解读 在讲ReentrantLock之前我们先看一下Lock接口里的方法 Lock接口中的方法 lock()方法 void lock(); //直接加锁,如果加锁失败什么也不返回lockInterruptibly()方法 void lockInterruptibly() throws InterruptedException;lockInterruptibly()方法能够…...
OpenCv + Qt5.12.2 文字识别
OpenCv Qt5.12.2 文字检测与文本识别 前言 好久没有进行一些相关的更新的了,去年一共更新了四篇,最近一直在做音视频相关的直播服务,又是重新学习积攒经验的一个过程。去年疫情也比较严重,等到解封,又一直很忙&a…...
网络作业1【计算机网络】
网络作业1【计算机网络】前言推荐网络作业1一. 单选题(共7题,58.1分)二. 多选题(共1题,8.3分)三. 判断题(共4题,33.6分)最后前言 2023-3-13 20:11:42 以下内容源自《计…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...