CANoe入门到精通:界面布局、操作与网络配置全攻略
立即解锁
发布时间: 2025-01-27 11:40:46 阅读量: 291 订阅数: 25 


CANoe软件入门培训.pdf

# 摘要
本文详细介绍了CANoe软件的应用,包括软件概述、安装步骤、界面布局与操作基础、网络配置与诊断功能,以及高级应用与脚本编程。通过系统地阐述CANoe的使用方法和操作技巧,本文旨在帮助工程师和研究人员有效利用该软件进行车辆网络和通信系统的测试与诊断。同时,文中通过实战案例,展示了如何进行网络监控、故障诊断以及自动化测试,强调了掌握CANoe高级功能对于提高测试效率和准确性的重要性。本文也提供了一定的脚本编程知识,以实现CANoe工具的自动化和定制化。
# 关键字
CANoe;界面操作;网络配置;诊断功能;脚本编程;网络监控;故障诊断
参考资源链接:[CANoe入门指南:CAN总线开发与测试神器](https://wenku.csdn.net/doc/7iy06q7ig7?spm=1055.2635.3001.10343)
# 1. CANoe软件概述及安装步骤
在现代汽车电子系统中,车载网络的测试与验证是至关重要的环节。CANoe软件由Vector公司开发,是汽车工业中广泛使用的专业网络分析工具。它提供了对CAN、LIN、FlexRay等多种车载网络的模拟、测试和诊断功能,让工程师可以对车载电子系统进行全面的分析。
CANoe软件具有直观的图形用户界面(GUI),允许用户定制测试环境,执行自动化测试脚本,并与车辆的ECU进行通信。此外,它还支持强大的脚本语言CAPL(CAN Application Programming Language),使得软件能够根据用户需求执行复杂的测试序列和数据处理。
为了在您的系统上安装CANoe,以下是简要步骤:
1. 从Vector公司官方网站下载最新版本的CANoe安装程序。
2. 双击下载的安装程序开始安装过程。
3. 按照安装向导提示完成安装选项的配置,例如选择安装路径,组件等。
4. 安装完成后重启计算机。
安装完成后,您将可以开始体验CANoe的强大功能,并开始您的车载网络测试之旅。
接下来的章节,我们将深入探索CANoe软件的界面布局、基础操作、网络配置及诊断功能,以及高级应用和网络监控技巧。
# 2. CANoe界面布局与操作基础
## 2.1 界面布局和功能区介绍
### 2.1.1 窗口组件和快捷操作
CANoe的用户界面设计直观易用,为了最大化工作效率,熟练掌握窗口组件的位置和功能是必不可少的。软件界面的上方是菜单栏,包含文件、编辑、视图、工具、诊断、窗口和帮助等标准菜单选项。界面右侧是功能区,它提供了各种用于分析和配置的工具。
通过拖动标题栏,用户可以轻松地将窗口组件移动到其他区域,或者可以将组件停靠在界面的四个边上。此外,CANoe通过快捷键和工具栏按钮提供快速访问功能,使用户能快速执行常用操作,例如配置测量、发送消息或调整视图。
下面的代码块展示如何通过脚本改变界面布局和快捷键配置。
```capl
// 该CAPL脚本示例更改工具栏按钮的快捷键
void OnChangeShortcuts()
{
// 将“开始测量”按钮的快捷键更改为“Ctrl+M”
shortcuts[1].key = 'M';
shortcuts[1].ctrl = 1;
shortcuts[1].alt = 0;
shortcuts[1].shift= 0;
}
```
### 2.1.2 视图定制和工作区管理
视图定制允许用户根据个人偏好和任务需求定制CANoe的工作区,例如,用户可以移动、显示或隐藏特定的窗口组件,如测量窗口、符号编辑器或诊断监视器。工作区管理提供保存和加载用户界面配置的功能,确保用户能够快速切换工作环境。
使用下面的代码可以实现保存和恢复用户界面配置:
```capl
// 保存当前工作区配置到文件
void SaveWorkspace()
{
var WorkspaceFile wsFile = saveAsDialog("Workspace (*.xml)|*.xml", "Save Workspace As");
if (not wsFile.isNull())
{
writeToFile(wsFile, xmlFormat);
}
}
// 加载工作区配置文件
void LoadWorkspace()
{
WorkspaceFile wsFile = openDialog("Workspace (*.xml)|*.xml", "Load Workspace");
if (not wsFile.isNull())
{
readFromFile(wsFile, xmlFormat);
}
}
```
## 2.2 基础操作与工具使用
### 2.2.1 测量和分析工具的配置
配置测量和分析工具是CANoe中最基础的操作之一。通过配置测量窗口,可以监控和记录网络上的消息和信号。首先,创建一个测量配置文件,然后添加需要观察的消息类型。在CAPL脚本中,可以进一步定义消息过滤和特定事件的回调处理。
```capl
// CAPL脚本示例,用于配置测量和消息过滤
on message CAN1, 0x123
{
if (msg.len == 8 and msg.byte(0) == 0xAA and msg.byte(1) == 0xBB)
{
// 满足特定条件的消息处理
write("Special message received.");
}
}
```
### 2.2.2 消息发送和接收操作
在CANoe中,可以通过手动发送或使用CAPL脚本实现自动化发送消息。这对于测试特定通信模式或响应非常有用。接收操作则涉及监控网络以获取特定消息。
```capl
// CAPL脚本示例,发送CAN消息
on start
{
output("Starting automated message sending...");
// 发送一条标准CAN消息
message CAN1, 0x123
{
byte data[8] = {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00, 0x11};
}msg1;
setLength(8);
setData(0, 0xAA);
setData(1, 0xBB);
// ...
send();
}
// CAPL脚本示例,接收CAN消息
on message CAN1, 0x123
{
output("Message with ID 0x123 received.");
}
```
### 2.2.3 数据库和符号管理
数据库管理在CANoe中极为重要,它存储了信号和消息的名称、长度、位置和缩放因子等信息。符号管理则帮助用户定义和管理这些数据库文件。通过符号管理器,可以将数据库附加到网络,并对其中的信号进行编辑和分组。
为了有效地管理数据库,CANoe提供了一个图形界面,允许用户进行数据库的导入、导出以及合并等操作。此外,CAPL脚本也可以用来管理符号和数据库。
```capl
// CAPL脚本示例,使用符号变量
void onFirstCANMessage(const message& msg)
{
// 假设msg是0x123 ID的消息,并且数据库已经加载
variable var = symFind("V_MySignal");
if (var != NULL)
{
// 打印符号变量的值
write("The value of MySignal is: %d", var.get_int());
}
}
```
## 2.3 实战案例:首次启动和基础配置
### 2.3.1 创建新项目
创建新项目时,需要指定项目文件夹位置和项目类型。项目类型决定了CANoe中可用的模板和配置。例如,可以为汽车电子网络创建一个项目,其中包含所有相关的网络接口、消息和信号。
```capl
// CAPL脚本示例,创建新项目
void OnNewProject()
{
// 创建一个新的项目,文件名为"MyProject"
ProjectFile newProject = createProject("MyProject", "CAN");
if (not newProject.isNull())
{
// 项目创建成功
write("New project created successfully!");
}
}
```
### 2.3.2 配置网络接口和通道
为了与车辆网络通信,需要在CANoe中配置网络接口和通道。这涉及到选择合适的硬件接口,设置通信速率,并指定通道使用的网络协议。
```capl
// CAPL脚本示例,配置网络通道
void ConfigureNetworkChannel()
{
// 设置通道为CAN网络,并指定网络接口和速率
channel CAN1 = newChannel("CAN", "USB0"); // "USB0" 为示例接口
CAN1.bitrate = 500000; // 500 kbps
}
```
### 2.3.3 连接车辆网络和监控通信
在所有配置完成后,通过连接车辆网络,用户可以开始监控通信。CANoe将显示实时数据流和消息,允许用户观察车辆网络的实时行为。
```capl
// CAPL脚本示例,连接车辆网络
void ConnectToVehicleNetwork()
{
// 激活CAN通道
channel CAN1.active = 1;
if (CAN1.active)
{
output("Vehicle network connected.");
}
}
```
通过上述操作,用户可以设置CANoe的基础配置,并开始进行简单的网络监控和通信分析。接下来的章节将深入探讨网络配置与诊断功能,以及如何利用CANoe进行高级应用与脚本编程。
# 3. CANoe网络配置与诊断功能
## 3.1 网络配置基础
### 3.1.1 理解CAN、LIN、FlexRay网络
在深入探讨CANoe网络配置之前,我们必须先了解不同车载网络协议的基本概念和它们的应用。CAN(Controller Area Network)是目前汽车中最常用的网络协议之一,以其高可靠性、强抗干扰能力和灵活的网络拓扑结构著称。LIN(Local Interconnect Network)则多用于成本敏感或功耗要求低的场合,如车身控制等。FlexRay协议提供更高的数据传输速率和时间确定性,通常用于未来汽车的先进安全和动力总成控制等高端应用。
在CANoe中配置这些网络,首先需要根据你所要测试的车辆或设备的网络类型选择正确的接口。例如,如果你正在测试一个使用CAN协议的模块,你需要确保CANoe配置了相应的CAN接口,并且根据车辆的网络参数(如波特率、ID过滤等)进行设置。
### 3.1.2 网络参数设置和通信模拟
一旦了解了基础的网络协议知识,接下来便是实际的网络参数设置。在CANoe中,网络参数的设置是通过Channel Setup对话框进行的。这包括定义网络的物理层属性,例如总线速度(波特率)、同步方式以及消息的优先级等。务必确保这些参数与实际车辆网络保持一致,否则可能导致通信异常。
在设置网络参数之后,用户还可以使用CANoe的通信模拟功能进行消息的发送和接收测试。例如,可以模拟ECU(电子控制单元)发送特定的诊断请求消息,并观察网络上其他设备的响应。这种测试对于诊断特定通信问题和验证通信协议的实现非常有用。
```markdown
示例代码块:
[CANoe]
// 定义CAN通道
[CAN]
Channel = 0
Bitrate = 500000
SamplePoint = 87.5%
// 发送一条CAN消息
Message CAN_Messages ExampleMessage
ID = 0x123
DLC = 8
Data = 01 02 03 04 05 06 07 08
```
在上述示例代码中,我们配置了CANoe的一个通道(Channel 0),并设置其波特率为500kbps,同步点为87.5%。接着定义了一条ID为0x123的消息,它有8字节的数据。这些代码块应该根据实际的网络设置进行适当的修改。
## 3.2 高级网络配置
### 3.2.1 网络触发条件和定时器
在进行更高级的网络配置时,用户可以定义特定的触发条件和定时器来控制消息的发送和接收。在CANoe中,可以通过设置触发器(Triggers)来实现基于特定事件或条件的消息处理。这可以是外部事件(如按钮点击)或内部事件(如某特定消息的接收)。
定时器(Timers)则允许在固定时间间隔内自动执行某些操作。这对于测试某些周期性功能或者模拟实时场景非常有帮助。例如,可以使用定时器来周期性地向网络发送心跳消息,以保持某个远程终端的在线状态。
### 3.2.2 数据过滤和信号处理
数据过滤是网络配置的另一个高级功能,它允许用户定义过滤规则来仅接收或发送感兴趣的消息。CANoe提供了强大的信号处理功能,可以通过信号链(Signal Chaining)将复杂的数据处理任务分解为一系列更简单的步骤。
信号链是一种用于创建信号计算的方法,它允许用户将信号处理流程中的每个步骤串联起来。信号链的每个步骤可以是一个数学运算、一个内置的信号函数或者是一个自定义函数,从而为信号处理提供了极大的灵活性。
## 3.3 诊断会话和OBD功能
### 3.3.1 ISO15765、UDS协议和会话控制
车辆诊断是汽车电子测试中的重要一环。在CANoe中,对车辆的诊断可以通过实现ISO 15765(CAN-based)或UDS(ISO 14229)协议来进行。这些协议规定了诊断服务、会话类型和消息交换的规则。在进行诊断操作前,首先需要通过诊断接口建立起一个诊断会话。
### 3.3.2 OBD-II和UDS诊断功能操作
OBD-II是北美汽车诊断的标准接口,而UDS则是一种更为通用的诊断协议。在CANoe中,使用这些诊断功能通常需要先连接到车辆的OBD-II接口,然后启动一个诊断会话,并且发送相应的UDS服务请求。服务请求可以是读取车辆信息、清除故障码、控制车辆子系统等。
### 3.3.3 实际诊断案例分析
要进行诊断测试,首先需要在CANoe中创建一个新的项目,并设置好网络接口和通道。然后,可以连接到车辆,通过诊断功能读取车辆当前的状态,包括诊断故障码(DTCs)、车辆信息和运行参数等。实际诊断案例分析时,应该展示整个诊断流程,从建立连接开始,到进行具体的诊断任务,最后是读取并分析结果。
mermaid格式流程图可以用来展示典型的诊断流程:
```mermaid
graph LR
A[开始] --> B[打开CANoe]
B --> C[设置网络接口和通道]
C --> D[连接车辆OBD-II接口]
D --> E[建立诊断会话]
E --> F[请求车辆信息]
F --> G[读取诊断故障码]
G --> H[清除故障码]
H --> I[结束诊断]
```
在上述流程中,用户首先需要打开CANoe软件,然后根据车辆网络设置接口和通道。连接车辆的OBD-II接口后,需要通过诊断会话控制模块建立起连接。之后可以进行各种诊断操作,如读取车辆信息、读取诊断故障码或清除故障码等。最后,完成诊断后断开连接结束测试。
# 4. CANoe高级应用与脚本编程
## 4.1 脚本编程基础
### 4.1.1 CAPL语言概述
CAPL(CAN Access Programming Language)是Vector公司专为CANoe和CANalyzer工具开发的编程语言,它是一种专门用于自动化测试和模拟网络活动的语言。CAPL具有事件驱动和面向对象的特点,能够模拟CAN和LIN网络中的节点,发送和接收消息,监控数据变化,并能与CANoe的图形用户界面(GUI)交互。
### 4.1.2 变量、函数和控制结构
CAPL语言的语法结构类似C语言,但包含了一些特有的功能和结构,专门针对汽车通信网络的测试和仿真。在变量方面,CAPL提供了丰富的数据类型,例如int、float、bit、byte等,以及对位域操作的支持。函数则是程序的基本构成单位,可以执行特定任务。CAPL的控制结构包括条件语句(if-else)、循环语句(for、while)等,用于控制程序的执行流程。
```c
// 示例CAPL代码片段
variables
{
int counter = 0;
}
on start
{
setTimer( myTimer, 1000 ); // 设置定时器,周期为1000毫秒
}
on timer myTimer
{
counter++;
output( "The timer fired %d time(s).", counter ); // 输出定时器触发次数
if( counter == 5 )
{
setTimer( myTimer, 0 ); // 停止定时器
output( "Timer stopped after 5 times." );
}
}
```
在上述代码中,定义了一个变量`counter`用于记录定时器触发的次数。`on start`事件处理器在脚本启动时执行,设置了一个周期性定时器`myTimer`。每当定时器触发时,`on timer myTimer`事件处理器被调用,`counter`变量的值递增,并输出当前次数。当`counter`达到5次时,定时器被停止。
## 4.2 脚本进阶应用
### 4.2.1 消息处理和数据库交互
CAPL脚本提供了一系列的事件处理器用于处理接收到的消息。例如,`on message`事件处理器会在特定CAN或LIN消息到达时触发。通过这种方式,可以对消息进行解码和分析,甚至修改消息内容或发送新的消息。CAPL脚本还可以与CANoe的数据库(dbc文件)交互,查询和设置消息和信号的具体值。
```c
// 示例CAPL代码片段,处理CAN消息
on message CAN_Messages.MyMessage
{
output( "Message %s is received. ID=0x%X, DLC=%d, Data=0x%X.", name(), id(), dlc(), data() );
// 修改消息中的信号值
this.byte(0) = 0x55;
this.byte(1) = 0xAA;
output( "The modified message is sent back. Data=0x%X.", data() );
outputMessage(); // 发送修改后的消息
}
```
代码解释:当名为"MyMessage"的消息被接收到时,`on message`事件处理器将被触发。脚本首先输出原始消息的信息,然后修改消息的前两个字节,并将修改后的消息发送出去。
### 4.2.2 图形界面和自定义对话框
CAPL脚本支持创建自定义的图形用户界面(GUI),例如按钮、文本框和滑块等控件。这些控件可以响应用户的操作,并可以用来与用户进行交互。CAPL还允许使用对话框控件来创建模态对话框,用于显示信息、接收输入或进行设置。
```c
// 示例CAPL代码片段,创建模态对话框
dialog box Modaldlg
{
title "My Modal Dialog";
label "Enter a number:";
editbox;
button OK "OK";
}
on OK pressed
{
int inputNumber = this.editbox.value;
output( "You entered: %d", inputNumber );
}
```
在上述代码中,创建了一个模态对话框`Modaldlg`,包含一个标签、一个编辑框和一个按钮。当用户点击"OK"按钮时,`on OK pressed`事件处理器将获取编辑框中的输入并输出。
### 4.2.3 定时任务和事件驱动编程
CAPL脚本可以使用`setTimer`函数设置周期性定时任务,以模拟或监控周期性的事件。同时,脚本还可以响应各种事件驱动的事件处理器,例如CAN消息接收、定时器溢出或用户界面事件。
```c
// 示例CAPL代码片段,定时任务
variables
{
int timerCount = 0;
}
on start
{
setTimer( myPeriodicTask, 1000 ); // 设置周期为1000毫秒的定时任务
}
on timer myPeriodicTask
{
timerCount++;
output( "Periodic task fired: %d", timerCount );
if( timerCount > 10 ) // 执行10次后停止定时任务
{
setTimer( myPeriodicTask, 0 );
output( "Periodic task stopped after 10 times." );
}
}
```
在这段代码中,定义了一个名为`myPeriodicTask`的定时任务,每1000毫秒触发一次。计数器`timerCount`用于记录任务触发的次数,当达到10次后停止定时任务。
## 4.3 实战案例:自动化测试与数据记录
### 4.3.1 自动化测试脚本编写
自动化测试是CAPL脚本应用中的一个重要方面。编写自动化测试脚本可以模拟车辆网络中的各种条件,自动验证ECU的功能。自动化测试脚本通常包含初始化设置、测试执行和结果验证三个部分。
```c
// 示例CAPL代码片段,自动化测试脚本
variables
{
// 测试相关变量声明
}
on start
{
// 初始化代码
}
on message ExpectedMessage
{
// 消息处理代码
if( 消息满足测试条件 )
{
// 测试通过的处理
}
else
{
// 测试失败的处理
setTimer( TestTimeout, 0 ); // 设置超时定时器
}
}
on timer TestTimeout
{
output( "Test timed out!" );
// 测试超时后的处理
}
on stop
{
// 测试结束代码
}
```
### 4.3.2 数据记录和分析
在自动化测试中,收集数据并进行分析是至关重要的一步。CAPL脚本可以记录测试过程中的关键数据,然后使用内置函数或外部工具进行分析。数据可以记录到文件中,以便后续的分析和验证。
```c
// 示例CAPL代码片段,数据记录
variables
{
// 定义需要记录的变量
}
on message MyMessage
{
// 处理消息并更新记录变量
this.byte(0) = ...; // 更新数据
output( "Recording data: %d", this.byte(0) );
// 将数据记录到文件
file f;
if( !f.open( "C:\\DataRecords.txt", "a" ) )
{
output( "Unable to open data file." );
}
else
{
f.write( "%d, ", this.byte(0) );
f.close();
}
}
```
### 4.3.3 测试结果报告和验证
自动化测试脚本通常需要生成报告,以说明测试的结果。报告可以包含成功、失败的测试案例,以及相关的数据分析。CAPL脚本可以控制报告的生成,并将结果导出为文件。
```c
// 示例CAPL代码片段,测试结果报告
on stop
{
// 测试结束后的处理代码
file f;
if( !f.open( "C:\\TestResults.txt", "a" ) )
{
output( "Unable to open report file." );
}
else
{
f.write( "Test finished at: %s\n", DateTime() ); // 写入测试完成时间
// 写入其他需要记录的测试结果
f.close();
}
}
```
上述脚本展示了如何在测试完成时(on stop事件触发时)将测试结果写入到一个文本文件中。这些结果可用于生成更详细的报告。
通过本章节的介绍,您已经了解了CANoe高级应用与脚本编程的基础和进阶应用,实战案例中的自动化测试与数据记录。在下一章节中,我们将深入探讨CANoe网络监控与故障诊断的技巧,并通过案例分析加深理解。
# 5. CANoe网络监控与故障诊断技巧
在复杂的车辆网络系统中,有效地监控和诊断问题至关重要。CANoe提供了一系列强大的工具和技巧,可以帮助工程师实时监控网络活动,分析故障原因,并进行性能优化。本章节将详细介绍CANoe在网络监控和故障诊断方面的主要功能和使用技巧。
## 5.1 网络监控工具和方法
CANoe的网络监控功能允许用户查看实时数据流,并对网络通信进行追踪。这些功能对于故障排除和性能分析尤为重要。
### 5.1.1 实时网络监控和数据流追踪
要使用CANoe进行实时网络监控,首先需要配置好网络接口,并确保CANoe能够与车辆网络正确连接。以下是一个简单的步骤说明:
1. 启动CANoe,选择并打开一个项目。
2. 在“Trace”窗口中,点击“Start”开始捕获数据。
3. 在网络视图中,你可以看到实时传输的消息。双击任何一条消息,可以查看其详细内容。
例如,以下是捕获到的某条CAN消息的详细数据:
```plaintext
ID: 0x123, DLC: 8, Data: 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08
Timestamp: 25.4 ms
```
### 5.1.2 错误分析和故障排查技巧
在故障排查过程中,识别和分析错误信息是至关重要的。CANoe提供了错误追踪器(error tracer)用于记录和分析网络中的错误帧,可以帮助用户快速定位问题源头。使用步骤如下:
1. 打开“Error Tracer”窗口。
2. 开始捕获错误帧,并记录网络上的所有错误。
3. 对捕获的错误帧进行分析,寻找重复出现的错误或特定模式。
错误追踪器不仅能记录错误,还能帮助用户分析错误发生的条件和原因。
## 5.2 性能优化与故障模拟
性能测试和故障模拟是确保车辆网络稳定运行的重要步骤。在这一部分,我们将介绍如何利用CANoe进行性能测试和故障模拟。
### 5.2.1 性能测试和瓶颈分析
性能测试可以帮助工程师识别网络中的瓶颈。以下是进行性能测试的常用步骤:
1. 配置网络参数和消息负载,模拟实际工作条件。
2. 使用“Measurement Setup”设置数据捕获参数。
3. 运行测试,并监视网络负载和响应时间。
4. 分析结果,确定是否存在性能瓶颈。
性能测试结果通常包括网络带宽利用率、消息响应时间等关键指标。
### 5.2.2 故障注入和仿真测试
为了检验系统的稳定性和容错能力,故障注入是一个重要的测试环节。CANoe允许用户在仿真环境中注入故障,观察系统的反应:
1. 在CANoe中打开“Simulator”模块。
2. 选择要注入的故障类型,例如添加额外的消息或设置故障条件。
3. 运行仿真,并观察网络和车辆系统的反应。
4. 记录系统的故障处理机制和结果。
故障注入测试结果有助于评估系统的健壮性和可靠性。
## 5.3 综合案例分析与实战演练
通过实际案例,我们可以进一步理解和掌握CANoe在网络监控和故障诊断方面的高级技巧。
### 5.3.1 复杂网络环境下的监控案例
在一个具有多个ECU和多种网络协议的复杂网络中,监控需要细致入微。以下是一个监控案例的演示步骤:
1. 配置多个网络通道,连接到不同的ECU。
2. 设置过滤条件,以便只关注感兴趣的特定消息。
3. 运行监控,并实时记录网络活动。
### 5.3.2 故障诊断和解决方案制定
在遇到网络故障时,解决方案的制定需要基于准确的诊断。以下是如何诊断和解决网络故障的步骤:
1. 分析捕获到的错误帧,尝试识别故障模式。
2. 根据错误日志,定位问题的可能来源。
3. 配置故障模拟,验证故障原因。
4. 制定解决方案,并在仿真环境中测试其有效性。
### 5.3.3 实际案例中的数据处理和报告撰写
在完成网络监控和故障诊断后,处理数据并撰写报告是不可或缺的一步。以下是处理和报告撰写的基本步骤:
1. 使用CANoe的“Measurement”功能记录所有相关数据。
2. 利用“CAPL”脚本或导出数据到Excel进行数据处理。
3. 撰写报告,总结故障情况、诊断过程、解决方案及结果。
报告应该详尽清晰,方便团队成员和技术支持人员理解问题和解决方案。
以上是本章的内容,涵盖了网络监控和故障诊断的各个方面。下一章将介绍如何利用CANoe进行深入的系统测试和验证工作。
0
0
复制全文
相关推荐





