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

CAPL编程系列_02

1_CAPL 中的运算符

 在CAPL(CANoe/CANalyzer Programming Language)中,运算符用于执行各种运算操作,类似于其他编程语言。CAPL中的运算符可以分为以下几类:

1. 算术运算符

算术运算符
+

加法运算符

-

减法运算符
*乘法运算符
/除法运算符
%求余运算符
int a = 10, b = 5;
int sum = a + b;      // sum = 15
int diff = a - b;     // diff = 5
int prod = a * b;     // prod = 50
int quotient = a / b; // quotient = 2
int remainder = a % b; // remainder = 0

2. 赋值运算符

赋值运算符
=

赋值

+=加法赋值
-=减法赋值
*=乘法赋值
/=除法赋值
%=取余赋值
int a = 5;
a += 10; // a = a + 10 => a = 15
a -= 3;  // a = a - 3  => a = 12
a *= 2;  // a = a * 2  => a = 24
a /= 4;  // a = a / 4  => a = 6
a %= 4;  // a = a % 4  => a = 2

3. 自增和自减运算符

自增和自减运算符
++自增(前置或后置)
--自减(前置或后置)
int a = 5;
a++;  // a = 6 (后置自增)
++a;  // a = 7 (前置自增)int b = 10;
b--;  // b = 9 (后置自减)
--b;  // b = 8 (前置自减)

4. 类型转换运算符

(type):类型转换

double a = 5.7;
int b = (int)a;  // b = 5

5. 关系运算符

==等于
!=不等于
>

大于

<小于
>=大于等于
<=小于等于

6.逻辑运算符

逻辑非
&&逻辑与
||逻辑或

7.位运算符

&按位与两个操作数对应位都为1时,结果位才为1,否则为0
|按位或两个操作数对应位有一个是1,结果位就为1,否则为0
^按位异或相同位的两个操作数不同,结果为1,相同则为0
~按位取反对操作数的每一个位取反,即将0变为1,将1变为0
<<左移将操作数的二进制位向左移动指定的位数,右侧空出的位用0填充
>>右移将操作数的二进制位向右移动指定的位数,左侧空出的位由符号位填充




2_CAPL 中的分支结构

1.if

三种 i f 分支语句

简单 if 语句(单分支)
if-else 语句(双分支)
if-else if 语句(多分支)
//简单  if 语句(单分支)if(条件)
{条件成立执行的语句
}// 任意一个表达式都可以做“条件”
// 判定规则:非 0 即 “真”
// 0,                     0.0,‘\0' 都表示“假”//示例//单分支
on key "a" 
{int score = 92;if (score >= 90)
{
write (“奖励1000元”);
}write(“程序结束了~~~”)}
if-else 语句 (双分支)if(条件)
{条件成立执行的语句
}
else
{条件不成立执行的语句
}

 

if-else if 语句 (多分支)if(条件1)
{条件1成立执行的语句
}
else if (条件2)
{前面条件不成立,但条件2成立执行的语句
}
else if (条件N)
{前面条件不成立,但条件N成立执行的语句
}
else
{所有条件都不成立时执行的语句
}

条件判断的三元运算符

条件 表达式一 表达式二
on key "e" 
{int score = 52;char result;//三元运算表达式result = score >= 60 ? 'Y' :  'N';write ("result 为 %c", result);
}//输出:result 为 N

2.switch

switch(表达式)
{case 值1:语句;break;case 值2:语句;break;case 值N:语句;break;default:语句;
}

注意点:

> case 后的值必须是整型的常量或常量表达式

> 分支中的break可以缺省,如果缺省,该分支语句执行后会贯穿到下一个分支

3.while 和 do-while 语句

while
//while 语句while (条件表达式)
{循环主体语句1;循环主体语句2;循环主体语句N;
}

注意点:

>条件表达式可以是一个任意的表达式

>注意正确设计循环的执行流程,防止出现死循环

     do-while

//do-while 语句do
{循环主体语句1;循环主体语句2;循环主体语句N;
} while (条件表达式) ;

注意点:

>先执行,后判断

>至少执行一次循环主体

on key 'd'
{//输出1到100之间所有能被 7 整除或以 7 结尾的数字int i = 1;while (i <= 100){if (i % 7 == 0 || i % 10 == 7){ write("i: % d",i);}i++;}}


循环过程中的流程控制关键字:

>break       : 跳出整个循环

on key 'f'
{//判断一个数字是否是质数int n = 13;int i = 2;while ( i < n ){if (n % i == 0){write ("%d不是质数,它能为%d整除",n,i);break;}i++;}if (i == n){write("%d是质数",n);}}

>continue  :继续下一次循环

4.for 语句

on key 'b'
{//判断一个数字是否是质数(素数)int num = 13;int i;for(i = 2; i < num; i++){if(num % i == 0){ write("%d 不是质数,能被 %d 整除",num,i);break;}}if(i == num){write("%d是质数",num);}
}

注意点:

>初始化,条件,更新三个部分均可省略,但如果省略了条件,则默认为“真”

>与C语言的for不同,不支持逗号运算符




3_CAPL 中的函数定义

返回值类型  函数名(形参列表)


   函数主体语句

   return 返回值;

}

注意点:
> 函数如果没有返回值,返回值的占位符为 void,且void可以省略.

> 函数可以重载(函数名相同、返回值相同,但形参不同).

on key 'a'
{float r;r = power (2.5,3); //调用函数write("2.5的3次方为: %.4f " ,r ) ;write("4的4次方为:%d",(int)power(4,4));  //调用函数
}// 定义求a的b次方的函数
float power(float a,int b)
{float p;int i;p = 1;   //乘积for(i = 0; i < b; i++){p = p * a;  //将当前乘积 p 跟 a 相乘的结果,再赋值给乘积 p}return p;
}




4_CAPL 中的定时器

variables
{timer tmr1;  //声明一个定时器变量
}//当定时器被触发时需要执行的代码
on timer tmr1
{write("发送报文等等工作.......");
}on key 'a'
{//设置定时器在多少秒后执行setTimer(tmr1,2);
}

注意点:
> 有“秒定时器”和“毫米定时器”两种 timer、 msTimer

> 定时器变量只能声明在 variables 作用域

> 必须为定时器变量定义对应的“处理代码块” 【 on timer 定时器变量 】

> 启动定时器的函数 --  setTimer

> 结束定时器的函数 --  cancelTimer

>msTimer 有一个直接用于周期性使用的函数:setTimerCyclic(变量名,毫秒数);




5_CAPL 中的报文发送

> 声明 message 类型的“报文”变量

      message 0x1A5 msg1;

      message EngineState msg2;

> 给报文变量赋值

      声明报文变量的同时,赋初值

      声明变量后,再进行赋值

> 调用内置函数output,发送报文

》注意:

write是往canoe工具上的输出面板,输出一些文字信息

output是内置函数,是往总线上输出报文

on key 'a '
{//多种声明变量的方法//1.声明了一个ID为0x1A5的报文变量message 0x1A5 msg1;//2.声明了一个ID为0x2B6的报文变量,并且赋予初始值message 0x2B6 msg2 = { dlc=4, byte(0) = 0x2D,byte(1)=0x3F };//3.声明了一个ID为0x3c7的报文变量(和 msg1 对比)message 0x2B6 msg2 = { dlc=4, byte(0) = 0x2D,byte(1)=0x3F };//msg1的变量赋值msg1.dlc = 8;   //给报文变量的dlc赋值msg1.byte(0) = 0xC7;   //给报文数据域中的Byte0的这个字节赋值msgl.byte(1) = 0x95;   //给报文数据域中的Byte1的这个字节赋值msgl.byte(2) = 0x3F;   //给报文数据域中的Byte2的这个字节赋值msgl.byte(3) = 0x6B;   //给报文数据域中的Byte3的这个字节赋值//msg3的变量赋值msg3.dlc = 8;msg3.word(0) = ox95C7;  //给报文数据域中的Byte0和Byte1的这个字节赋值(两个字节倒序)msg3.word(2) = ox6B3F;  //word占两个字节,所以要跳两个output(msg1);   //发送报文msg1output(msg2);   //发送报文msg2output(msg3);   //发送报文msg3
}

  //只需填写转速,后台会自动生成DATA的值
on key 'a'
{//创建一个指定报文名的报文变量//如果这个报文在 dbc 中存在,不用指定dlcmessage EngineState msg1;//给该报文的 EngineSpeed 和 OnOff 这两个信号赋值//语法:【报文变量.信号名】msg1.EngineSpeed = 3000;  //赋值为 3000 rpmmsg1.OnOff = 1;  //赋值引擎开关状态为On ( 值为 1 )//发送报文msg1output(msg1);
}

 定时器周期性发送

//定义一个定时器事件,当触发定时器,就给msg2.EngineSpeed(引擎转速)进行赋值
variables    //全局变量里去定义一个毫秒定时器
{int currEngspd = 0 ;  // 当前的引擎转速值message EngineState msg2 ;  // 创建报文msTimer tmrSendMsg2;  // 定义一个毫秒定时器用于发送报文
}on timer tmrSendMsg2  //定义一个Msg2定时事件
{// 将当前转速值赋值给报文msg2的引擎转速信号EngineSpeed msg2.EngineSpeed = currEngspd; currEngspd += 10;  // 每次增长10rmpoutput(msg2);
}on key 'b'
{setTimerCyclic(tmrSendMsg2,100)
}




6_CAPL 中的事件

                                                  时间驱动的概念
接收到报文事件处理的程序
用户输入事件处理的程序
定时器到时事件处理的程序
时间
事件含义
on preStart在总线“测量开始之前”触发
on start在总线“测量开始时”触发
on preStop在总线“测量将结束时”触发
on stopMeasurement在总线“测试结束后”触发
事件含义
on key 指定键当指定键按下时触发
on timer 定时器当“定时器计时到时”时触发
事件含义
on message 指定报文当接收到指定报文时触发
事件含义
on signal 指定信号当监测到指定信号值变化时触发
on signal_update 指定信号当监测到指定信号值更新时触发
事件含义
on sysVar 系统变量当监测到系统变量变化时触发
on sysVar_update 系统变量当监测到系统变量更新时触发
重点关注加粗字体的使用

  1. on sysvar 和 on sysvar_update 事件
on sysvar  系统变量名
{write("系统变量的值变化了: %d",@this);
}on sysvar_update 系统变量名
{write("系统变量的值更新了:%d",@this);
}
  • 可以使用 @系统变量名 来获取或设置系统变量的值
  • 还可以调用 sysGetVariableXxx( ) 函数来获取系统变量的值
  • 还可以调用 sysSetVariableXxx( ) 函数来设置系统变量的值
  • 在系统变量事件处理程序中,还可以使用 @this 来获取变量的值

on key 'a'
{//改变系统变量TurnLeftIndicator,赋值一个0到9的随机数 @Control::TurnLeftIndicator = random(10) > 7 ? 1 : 0;//sysSetVariableInt("Control","TurnLeftIndicator",random(10) > 4 ? 1 : 0 );
}//当系统变量Control::TurnLeftIndicator的值发生变化时,执行的代码
on sysvar Control::TurnLeftIndicator
{write("TurnLeftIndicator变量的值发生变化了:%d %d %d',@this, @Control::TurnLeftIndicator,sysGetVariableInt("Control","TurnLeftIndicator'));
}//当系统变量Control::TurnLeftIndicator的值发生更新时,执行的代码
on sysvar_update Control::TurnLeftIndicator
{write("TurnLeftIndicator变量的值发生更新了: %d %d %d", @this,@Control::TurnLeftIndicator,sysGetVariableInt("Control","TurnLeftIndicator'));
}

以上是关于CAPL语言中一些简单的总结。


希望对你有所帮助,谢谢观看。

相关文章:

CAPL编程系列_02

1_CAPL 中的运算符 在CAPL&#xff08;CANoe/CANalyzer Programming Language&#xff09;中&#xff0c;运算符用于执行各种运算操作&#xff0c;类似于其他编程语言。CAPL中的运算符可以分为以下几类&#xff1a; 1. 算术运算符 算术运算符 加法运算符 - 减法运算符*乘法运…...

AI Agents系列之构建多智能体系统

&#x1f9e0; 向所有学习者致敬&#xff01; “学习不是装满一桶水&#xff0c;而是点燃一把火。” —— 叶芝 我的博客主页&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 欢迎点击加入AI人工智能社区&#xff01; &#x1f680; 让我们一起努力&#xff0c;共创…...

FPGA学习——DE2-115开发板上设计波形发生器

1. 实验目的 掌握直接数字频率合成&#xff08;DDS&#xff09;技术的基本原理和应用。使用DE2-115开发板实现正弦波和方波的生成。使用SignalTap II嵌入式逻辑分析仪测试输出波形的离散数据。 2. 实验原理 DDS技术&#xff1a;通过相位累加器生成相位信息&#xff0c;结合波…...

51单片机实验二:数码管静态显示

目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.单个数码管显示 2.六个数码管依次从0~F变换显示 3.proteus仿真 一、实验环境与实验器材 环境&#xff1a;Keli&#xff0c;STC-ISP烧写软件,Proteus. 器材&#xff1a;TX-1C单片机&#xff08;STC89C52RC…...

JavaScript性能优化实战指南

1. 引言 JavaScript作为现代Web开发的核心技术&#xff0c;为网页带来了丰富的交互性和动态功能。然而&#xff0c;随着Web应用日益复杂&#xff0c;JavaScript代码的性能成为影响用户体验的关键因素。性能不佳的JavaScript可能导致页面加载缓慢、交互卡顿、甚至浏览器无响应&…...

POSIX 信号量(Semaphore)

一、POSIX 信号量基础 1. 什么是信号量&#xff1f; 信号量 是一种同步机制&#xff0c;用于控制对共享资源的访问。它通过一个整数值表示可用资源的数量&#xff0c;支持两种原子操作&#xff1a; P操作&#xff08;Wait&#xff09;&#xff1a;尝试减少信号量值&#xff0…...

深度学习驱动下的字符识别:挑战与创新

一、引言 1.1 研究背景 深度学习在字符识别领域具有至关重要的地位。随着信息技术的飞速发展&#xff0c;对字符识别的准确性和效率要求越来越高。字符识别作为计算机视觉领域的一个重要研究方向&#xff0c;其主要目的是将各种形式的字符转换成计算机可识别的文本信息。近年…...

DOM TreeWalker API 详解

DOM TreeWalker API 详解 TreeWalker API 是 DOM 中一个强大但相对较少使用的功能&#xff0c;它提供了一种有效遍历文档树的方式。它比手动递归或使用简单的节点导航方法更加灵活和高效。 TreeWalker 基本概念 TreeWalker 对象可以让你按照指定的过滤条件&#xff0c;以特定…...

深度学习| Deep Snake环境配置+训练+预测评估(超全面)

前言:Deep Snake是一个比较经典结合了轮廓的深度学习分割方法,但是去实际运行Deep Snake项目的时候遇到了很多问题。这篇文章把Deep Snake从环境配置、训练到预测评估,都做了详细的教程,还补充了一些相关的知识点。 Deep Snake配置和运行 Deep Snake信息数据集COCOMask-&g…...

NHANES指标推荐:CMI

文章题目&#xff1a;Association between cardiometabolic index and biological ageing among adults: a population-based study DOI&#xff1a;10.1186/s12889-025-22053-3 中文标题&#xff1a;成年人心脏代谢指数与生物衰老之间的关系&#xff1a;一项基于人群的研究 发…...

非比较排序——计数排序

计数排序 计数排序是非比较排序 void CountSort(int *a,int n) {//找范围int mina[0],maxa[0];for(int i0;i<n;i){if(a[i]<min){mina[i];}if(a[i]>max){mina[i];}}int rangemax-min1;//创建计数用的数组int *count(int *) malloc(range* sizeof(int));//计数数组的元…...

spring cloud gateway前面是否必须要有个nginx

在 **"客户端 → Nginx (前置限流) → Spring Cloud Gateway → 微服务(Sentinel 熔断限流)"** 的架构中&#xff0c;**Spring Cloud Gateway 前面并不强制要求必须有 Nginx**&#xff0c;是否需要取决于具体场景。以下是详细分析&#xff1a; 一、必须使用 Nginx 的…...

复现SCI图像增强(Toward fast, flexible, and robust low-light image enhancement.)

运行train.py报错 > File "/home/uriky/桌面/SCI-main/SCI-main/train.py", line 105, in main > train_queue torch.utils.data.DataLoader( File "/home/uriky/anaconda3/envs/AA/lib/python3.8/site-packages/torch/utils/data/dataloader.py&q…...

Linux 进程

文章目录 1. 冯诺依曼体系结构1.1 什么是冯诺依曼体系结构1.2 为什么选择冯诺依曼结构 2. 操作系统2.1 操作系统是什么2.2 操作系统如何对硬件资源进行管理2.3 计算机的层状体系结构 3. 进程3.1 进程是什么3.2 进程的相关属性3.3 在Linux中了解进程3.3.1 查看进程3.3.2 子进程由…...

TVM计算图分割--Collage

1 背景 为满足高效部署的需要&#xff0c;整合大量优化的tensor代数库和运行时做为后端成为必要之举。现在的深度学习后端可以分为两类&#xff1a;1&#xff09;算子库(operator kernel libraries)&#xff0c;为每个DL算子单独提供高效地低阶kernel实现。这些库一般也支持算…...

Liunx知识点

1./dev&#xff1a;是系统设备文件存放位置 /home&#xff1a;是普通用户存放目录 /etc&#xff1a;大部分配置文件的存放目录 /mnt&#xff1a;挂载服务需要的目录 /tmp&#xff1a;存放临时文件 /boot&#xff1a;启动文件 /root&#xff1a;root用户存放目录 /var&am…...

全栈架构设计图

以下是针对Vue前端、服务端、管理后台及数据库的架构图和交互流程设计&#xff0c;采用分层结构和模块化设计思路&#xff1a; 一、系统整体架构图 #mermaid-svg-vAtZ3R6d5Ujm6lYT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}…...

【SAP ME 42】SAP ME 性能改进

性能问题症状 可观察到以下症状:com.sap.me.production$SfcStartService#startSfc - 此 API 方法具有来自 RESOURCE_TYPE_RESOURCE 表的 SQL 查询的运行速度较慢。 com.sap.me.production$CreateSfcService#createSfc - 对于每个创建的车间作业控制,检查在计划标准配置中是否…...

《GPT-4.1深度解析:AI进化新标杆,如何重塑行业未来?》

一、GPT-4.1:AI 领域的 “全能战士” 降临 1.1 发布背景与战略意义 在 OpenAI 的技术迭代版图中,GPT-4.1 被赋予了 “承前启后” 的关键角色。它不仅是 GPT-4o 的全面升级版,更被视为向 GPT-5 过渡的重要桥梁。2025 年 4 月 15 日的发布会上,OpenAI 宣布 GPT-4.1 系列模型…...

node.js 基础

模块导入和导出 形式1 function get_jenkins(){return "jenkins....." }function test_cc(){return "4444444" }export {get_jenkins,test_cc}// 主函数 import { get_jenkins, test_cc } from ./module.js;console.log(get_jenkins()); console.log(tes…...

数据结构中的宝藏秘籍之广义表

广义表&#xff0c;也被称作列表&#xff08;Lists&#xff09;&#xff0c;是一种递归的数据结构。它就像一个神秘的盒子&#xff0c;既可以装着单个元素&#xff08;原子&#xff09;&#xff0c;也可以嵌套着其他的盒子&#xff08;子列表&#xff09;。比如广义表 (a (b c)…...

电流模式控制学习

电流模式控制 电流模式控制&#xff08;CMC&#xff09;是开关电源中广泛使用的一种控制策略&#xff0c;其核心思想是通过内环电流反馈和外环电压反馈共同调节占空比。相比电压模式控制&#xff0c;CMC具有更快的动态响应和更好的稳定性&#xff0c;但也存在一些固有缺点。 …...

汽车免拆诊断案例 | 2011款雪铁龙世嘉车刮水器偶尔自动工作

故障现象 一辆2011款雪铁龙世嘉车&#xff0c;搭载1.6 L 发动机&#xff0c;累计行驶里程约为19.8万km。车主反映&#xff0c;该车刮水器偶尔会自动工作&#xff0c;且前照灯偶尔会自动点亮。 故障诊断 接车后试车发现&#xff0c;除了上述故障现象以外&#xff0c;当用遥控器…...

#去除知乎中“盐选”付费故事

添加油猴脚本&#xff0c;去除知乎中“盐选”付费故事 // UserScript // name 盐选内容隐藏脚本 // namespace http://tampermonkey.net/ // version 0.2 // description 自动隐藏含有“盐选专栏”或“盐选”文字的回答卡片 // author YourName // mat…...

github 项目迁移到 gitee

1. 查看远程仓库地址 git remote -v 2. 修改远程仓库地址 确保 origin 指向你的 Gitee 仓库&#xff0c;如果不是&#xff0c;修改远程地址。 git remote set-url origin https://gitee.com/***/project.git 3. 查看本地分支 git branch 4. 推送所有本地分支 git p…...

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(五级)答案 + 解析

青少年软件编程(Python)等级考试试卷(五级) 分数:100 题数:38 一、单选题(共25题,共50分) 1. 以下哪个选项不是Python中的推导式?( ) A. 列表推导式 B. 字典推导式 C. 集合推导式 D. 元组推导式 正确答案:D 答案解析:Python中的推导式包括列表推导式、字典推导式…...

[Unity]-[UI]-[Prefab] 关于UGUI UI Prefab的制作技巧

从上到下&#xff0c;从外到里&#xff0c;多用空物体套壳 这个意思就是说在使用ugui时制作prefab时&#xff0c;要遵循“从上到下&#xff0c;从外到里&#xff0c;多用空物体套壳”的原则&#xff0c;好处就是后面好修改&#xff0c;并且可以复用不同的prefab子模块。且在布…...

【Reading Notes】(8.3)Favorite Articles from 2025 March

【March】 雷军一度登顶中国首富&#xff0c;太厉害了&#xff08;2025年03月02日&#xff09; 早盘&#xff0c;小米港股一路高歌猛进&#xff0c;暴涨4%&#xff0c;股价直接飙到52港元的历史新高。这一波猛如虎的操作&#xff0c;直接把雷军的身家拉到了2980亿元&#xff0c…...

2021-11-09 C++倍数11各位和为13

缘由c函数题找数字的-编程语言-CSDN问答 void 倍数11各位和为13(int n, int& b, int* h) {//缘由https://ask.csdn.net/questions/7559803?spm1005.2025.3001.5141b !(n % 11);while(n)*h n % 10, n / 10; }int a 1, b 1, c 0, d 0;while (a < 100){倍数11各位和…...

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(六级)真题

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 答案解析&#xff1a;https://blog.csdn.net/qq_33897084/article/details/147341458 一、单选题(共25题&#xff0c;共50分) 1. 在tkinter的…...

Linux简介

一、Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff0c;是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CP…...

每天学一个 Linux 命令(22):pwd

​​可访问网站查看,视觉品味拉满: http://www.616vip.cn/22/index.html pwd 命令用于打印当前工作目录(Print Working Directory)的绝对路径,帮助用户快速确认自己在文件系统中的位置。虽然简单,但它是终端操作中不可或缺的基础命令,尤其在处理相对路径或脚本编写时尤为…...

Windows 11设置开机自动运行 .jar 文件

Windows 11设置开机自动运行 .jar 文件 打开启动文件夹&#xff1a; 按下 Win R&#xff0c;输入 shell:startup&#xff0c;回车。 此路径为当前用户的启动文件夹&#xff1a; C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup创…...

西门子 博途 软件 崩溃

西门子 博途 软件 编译/仿真 崩溃 是因为项目中OPC UA的接口问题 解决拌饭见 https://support.industry.siemens.com/cs/document/109971630/tia-portal-%E5%9C%A8%E7%BC%96%E8%AF%91-plc-%E6%97%B6%E5%B4%A9%E6%BA%83?dti0&dlzh&lcen-WW...

12芯束装光纤不同包层线颜色之间的排列顺序

为什么光纤线必须按照以下颜色顺序进行排序&#xff1f;这其实是为了防止光污染的问题&#xff0c;不同颜色在传递光时从包层表皮漏光传感到梳妆的其它纤芯上&#xff0c;会有光污染的问题&#xff0c;而为了减少并防止光污染的现象&#xff0c;所以在光通信之中&#xff0c;需…...

数据驱动、精准协同:高端装备制造业三位一体生产管控体系构建

开篇引入 鉴于集团全面推行生产运营体建设以及对二级单位生产过程管控力度逐步加强&#xff0c;某高端装备制造企业生产部长王总正在开展新的一年企业生产管控规划工作&#xff0c;为了能够更好地进行体系规划与建设应用&#xff0c;特邀请智能制造专家小智来进行讨论交流。 王…...

HAL详解

一、直通式HAL 这里使用一个案例来介绍直通式HAL&#xff0c;选择MTK的NFC HIDL 1.0为例&#xff0c;因为比较简单&#xff0c;代码量也比较小&#xff0c;其源码路径&#xff1a;vendor/hardware/interfaces/nfc/1.0/ 1、NFC HAL的定义 1&#xff09;NFC HAL数据类型 通常定…...

RAG知识库中引入MCP

MCP(Memory, Context, Planning)是一种增强AI系统认知能力的框架。将MCP引入RAG知识库可以显著提升系统的性能和用户体验。下面我将详细介绍如何实现这一整合。 MCP框架概述 MCP框架包含三个核心组件: Memory(记忆):存储和管理历史交互和知识Context(上下文):理解当…...

再读bert(Bidirectional Encoder Representations from Transformers)

再读 BERT&#xff0c;仿佛在数字丛林中邂逅一位古老而智慧的先知。初次相见时&#xff0c;惊叹于它以 Transformer 架构为罗盘&#xff0c;在预训练与微调的星河中精准导航&#xff0c;打破 NLP 领域长久以来的迷雾。而如今&#xff0c;书页间跃动的不再仅是 Attention 机制精…...

C# 单例模式

创建一个类 在类中定义方法 internal class Config {// 实现单利模式private static Config instance null;private Config() { }private static object Locker new object(); // 定义lock锁// 通过公有的方法 返回实力public static Config GetInstance(){// 空的自己构造…...

mainwidget.cpp:1741:21: error: use of undeclared identifier ‘mainTab‘

这个错误表明在你的代码中&#xff0c;mainTab 这个变量没有被正确声明或定义。这通常是因为以下原因之一&#xff1a; 变量未声明&#xff1a;mainTab 可能没有在类的成员变量中声明。 变量未初始化&#xff1a;mainTab 可能没有在构造函数中正确初始化。 作用域问题&#x…...

OpenCV day6

函数内容接上文&#xff1a;OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑&#xff08;模糊&#xff09; 25.cv2.blur()&#xff1a; 26.cv2.boxFilter(): 27.cv2.GaussianBlur()&#xff1a; 28.cv2.medianBlur(): 29.cv2.bilateralFilter()&#xff1a; 锐…...

MySQL:Join连接的原理

连接查询的执行过程&#xff1a; 确定第一个需要查询的表【驱动表】 选取代价最小的访问方法去执行单表查询语句 从驱动表每获取到一条记录&#xff0c;都需要到t2表中查找匹配的记录 两表连接查询需要查询一次t1表&#xff0c;两次t2表&#xff0c;在两表的连接查询中&…...

Linux MySQL版本升级(rpm安装方式)

一、背景 近期生产环境扫描发现MySQL的多个安全漏洞。目前厂商已经发布了升级补丁以修复此安全问题&#xff0c;补丁获取链接&#xff1a;https://www.oracle.com/security-alerts/cpuoct2024.html 二、升级注意事项 备份数据&#xff1a;升级前务必备份数据库。检查兼容性&…...

数字图像处理(膨胀与腐蚀)

腐蚀 核心原理&#xff1a;结构元四肢运算结果全为1&#xff0c;则结构元中心为1&#xff0c;否则为0。 怎么计算是否为1还是为0 结构元的值与前景的值进行与运算&#xff0c;如果结构元四肢的与运算结果全为1&#xff0c;则结构元中心为1&#xff0c;否则为0。 假设下图为结构…...

J值即正义——Policy Gradient思想、REINFORCE算法,以及贪吃蛇小游戏(三)

文章目录 前情提要谁的J值大呢?那么 ∇ θ J ( θ ) \nabla_\theta J(\theta) ∇θ​J(θ)要怎么求呢?构建loss函数**代码实现示例**(PyTorch伪代码):前情提要 上回咱说道,对于强化学习而言,J值即正义。 比如,你当了老板,你手下的两个高管,分别都为公司的发展提出了…...

pdfjs库使用3

.App { text-align: center; height: 100vh; display: flex; flex-direction: column; background-color: #f5f5f5; } /* PDF 查看器容器样式 */ .pdf-viewer { flex: 1; padding: 20px; max-width: 100%; margin: 0 auto; box-sizing: border-box; background-color: white;…...

transformer-词嵌入和位置嵌入详解

文章目录 1、介绍一下位置嵌入Positional Encoding、什么是Positional Encoding呢&#xff1f;为什么Transformer需要Positional Enconding? Transformer 的 Positional Encoding 是如何表达相对位置关系的&#xff1f;2、我来简单举个例子2.1 词向量&#xff1a;每个token都会…...

大模型本地部署之ollama安装及deepseek、qwen等模型下载操作

大模型本地部署之----ollama安装指南 最新版--下载方式 Download Ollama on macOS 因github下载较慢&#xff0c;可以网上搜索github加速工具下载 ----download后加版本号 例如: https://github.com/ollama/ollama/releases/download/v0.6.5/OllamaSetup.exe 通过网盘分享…...

ffprobe 输出 HEVC 码流 Level:标准的 “错位” 与分析的 “归位”

问题描述 最近用ffprobe分析HEVC/H265的码流,发现了与理论知识不符合的现象,比如针对一个H265的码流,用ffprobe输入命令 ffprobe -show_streams 1.h265 时,输入如下;可以看到 H265 的码流 Level 显示等于 93,打印值与标准理论值不符合,用其他工具分析此时 Level 等于 3.…...