Vector - CAPL - CANoe硬件配置函数 - 05

目录

resetCan -- 重置CAN控制器

代码示例

ResetCanEx -- 重置CAN控制器的特定CAN通道

代码示例

ScanBaudrateActive -- 特定通道设置波特率

ScanBaudratePassive -- 开始扫描并检测给定通道上的波特率


resetCan -- 重置CAN控制器

功能:重置CAN控制器,可用于在 BUSOFF 后重置 CAN 控制器或激活配置更改。 由于该功能的执行需要一些时间,并且 CAN 控制器会短暂地与总线断开连接,因此执行此操作时可能会丢失消息。

注意:使用该函数,可以重置 CAN1 和 CAN2; 如果只使用一个特定的 CAN 通道,resetCan 会因错误而停止并且 CAN 通道保持离线状态。 在这种情况下,必须使用 ResetCanEx 函数,函数 resetCanEx 可用于所有通道。

代码示例

//BUSOFF 后控制器复位
on key 'r' 
{
    resetCan();
}

ResetCanEx -- 重置CAN控制器的特定CAN通道

功能:将一个特定CAN 控制器的 CAN 通道重置 ; 可用于在 BUSOFF 后重置 CAN 控制器或激活配置更改。 由于该功能的执行需要一定的时间,并且 CAN 控制器与总线断开连接的时间很短,因此在此期间的报文可能会丢失。

channel:CAN通道

代码示例

// BUSOFF 后,通道 2 上的控制器被重置
on key 'r' 
{ 
    resetCanEx(2);
}

ScanBaudrateActive -- 特定通道设置波特率

功能:该函数确定给定通道的波特率, 函数的结果被写入write窗口

说明:波特率扫描器检查不同的波特率并尝试通过给定的通道发送消息。 如果消息发送成功并确定了波特率,则该功能完成。 如果存在错误的波特率,则其他电源接受器无法接收到消息。 作为发送器的 CANoe 没有收到确认并发送一个错误帧。 在这种情况下,将检查波特率范围的下一个波特率。

channel:CAN通道(1, 2, 3, ...   32)

messageID:扫描仪将发送以检测波特率的消息 ID。 消息的 DLC 始终为 8。

firstBaudrate / lastBaudrate:要扫描的波特率范围。如果两个值都设置为零,则扫描器会检查最常用的波特率:33.333、50.0、83.333、100.0、125.0、250.0、500.0、1000.0 [千波特]
如果两个值相同但不为零,则扫描器将波特率乘以给定因子(值范围 0.25-5.0)。 该因子以 0.25 的步长变化。如果两个值不同,则扫描范围内所有可能的波特率值。范围内的增量步长为 1.5%。

timeout:发送消息时扫描器等待的时间段 [ms]。

返回值:        

        0:如果扫描功能成功启动,则返回 0

        !=0:否则返回值为非零

注意:

        波特率扫描器的 CAN.INI 文件设置:

[BaudrateScanner]
Dlc=8
DisplayBaudrateList=0

        Dlc:扫描仪发送的消息的 DLC,默认值:8

        DisplayBaudrateList:如果此值设置为 0,则波特率扫描器在找到第一个波特率后停止。如果该值不为零,则扫描器会检查所有波特率并在末尾显示一个值列表。

        默认值:0

实际网络上应用的波特率应在不存在通信的情况下确定。 在这种情况下,CANoe 是网络上的参与者 - 在线节点。

ScanBaudratePassive -- 开始扫描并检测给定通道上的波特率

功能:开始扫描并检测给定通道上的波特率。

说明:波特率扫描器检查不同的波特率并尝试在通道上接收消息。 函数开始扫描并检测给定通道上的波特率。 函数的结果被写入写入窗口。

如果存在错误的波特率,CANoe 无法接收消息并发送一个错误帧,可以使用参数 bAcknowledge 将其放在总线上。

channel:CAN通道(1, 2, 3, ...   32)

messageID:扫描仪将发送以检测波特率的消息 ID。 消息的 DLC 始终为 8。

firstBaudrate / lastBaudrate:要扫描的波特率范围。如果两个值都设置为零,则扫描器会检查最常用的波特率:33.333、50.0、83.333、100.0、125.0、250.0、500.0、1000.0 [千波特]
如果两个值相同但不为零,则扫描器将波特率乘以给定因子(值范围 0.25-5.0)。 该因子以 0.25 的步长变化。如果两个值不同,则扫描范围内所有可能的波特率值。范围内的增量步长为 1.5%。

timeout:发送消息时扫描器等待的时间段 [ms]。

bAcknowledge:

确认模式开启 (1)/关闭 (0)。

如果存在错误的波特率,CANoe 无法接收消息并发送一个错误帧,可以使用参数 bAcknowledge 将其放在总线上。

该参数用于 CANoe - 作为被动接收器 - 可以通过发送错误帧间接参与网络通信。

该参数不会更改硬件配置对话框的确认设置。 该参数仅在函数运行时有效

返回值:

        0:如果扫描功能成功启动,则返回 0

        !=0:否则返回值为非零

注意:

        波特率扫描器的 CAN.INI 文件设置:

[BaudrateScanner]
Dlc=8
DisplayBaudrateList=0

        Dlc:扫描仪发送的消息的 DLC,默认值:8

        DisplayBaudrateList:如果此值设置为 0,则波特率扫描器在找到第一个波特率后停止。如果该值不为零,则扫描器会检查所有波特率并在末尾显示一个值列表。

        应根据存在的通信确定实际网络上应用的波特率。 在这种情况下,CANoe 是网络上的被动参与者 - 接收器 - 它通过 Y 型电缆连接到网络。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Linux系统中,可以使用C语言中的函数来获取串口的波特率。首先需要包含相关的头文件,例如"termios.h"。 在C语言中,可以定义一个结构体来保存串口的属性信息,其中包含了波特率的设置。结构体的定义如下: ``` struct termiosopts { speed_t speed; // 串口波特率 // 其他的属性信息 }; ``` 接下来,可以编写一个函数来获取当前串口的波特率,函数定义如下: ``` #include <termios.h> int get_baud_rate(int fd) { struct termiosopts options; int status; // 获取当前串口的属性信息 status = tcgetattr(fd, &options); if (status != 0) { // 获取失败 return -1; } // 获取波特率 speed_t baud_rate = cfgetospeed(&options); return baud_rate; } ``` 其中,参数`fd`是串口文件描述符,通过该参数传递指定的串口。函数内部使用`tcgetattr`函数获取当前串口的属性信息,并通过`cfgetospeed`函数获取波特率。 最后,可以在主函数中调用`get_baud_rate`函数来获取波特率。例如: ``` #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> int main() { int fd; int baud_rate; // 打开串口 fd = open("/dev/ttyS0", O_RDONLY); if (fd == -1) { perror("Error opening serial port"); return 1; } baud_rate = get_baud_rate(fd); if (baud_rate == -1) { perror("Error getting baud rate"); close(fd); return 1; } printf("Baud rate: %d\n", baud_rate); // 关闭串口 close(fd); return 0; } ``` 在示例中,打开了一个串口设备文件"/dev/ttyS0",然后调用`get_baud_rate`函数获取波特率,并将结果打印输出。 请注意,以上代码仅供参考,实际应用中还需要进行错误处理和适配不同的串口设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载网络测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值