can-bus相关内容

音频可以通过FD送入耳机

我正在尝试使用12位分辨率的ADC录制音频,获取样本缓冲区并通过CAN FD将其发送到另一个设备,该设备获取该音频的样本并创建.wav并播放它。问题是,我看到麦克风的数据通过CAN FD发送到另一台设备,但我无法将这些数据正确地转换为.wav文件,并通过麦克风听到我说的话。我只听到哔声。 我正在创建新的.wav每4个CAN FD消息,以便进行某种实时通信并减少延迟,但我认为这是不可能的,或者 ..
发布时间:2022-04-10 17:44:03 其他开发

套接字可以选择()和写入()不阻止

我正在使用SocketCAN在嵌入式设备(SOC/ARM CORE/Linux)上测试CAN接口,我希望使用高效的代码尽快发送数据进行测试。 我可以将CAN设备(“can0”)作为BSD套接字打开,并使用“WRITE”发送帧。这一切都运行良好。 我的桌面生成帧的速度明显快于CAN传输速率(我使用的是500000 bps)。为了高效地发送,我尝试在套接字文件描述符上使用“SELECT”来 ..
发布时间:2022-04-10 13:10:37 其他开发

在 Python 中通过 UDP 发送 CAN 帧

我在两台 Linux 机器之间建立了 UDP 套接字连接,可以轻松发送例如 b“Hello, World!".但是现在我需要发送下面的 CAN 帧 from 可以导入消息send_msg = 消息(数据=[1, 2, 3, 4, 5]) 所以如果我打印 send_msg 它会显示: 时间戳:0.000000 ID:00000000 X DLC:5 01 02 03 04 05 我想在接收端 ..
发布时间:2022-01-22 17:01:13 服务器开发

如何使用 python 将 .blf 数据从 CAN 转换为 .csv

我有来自 Vector 软件的 blf 格式的 CAN-Data.为了进一步调查,我想使用 python 将其转换为 csv 格式. 我目前的进展: 导入可以文件名 = "test.blf"log = can.BLFReader(文件名) 我不知道那是不是正确的方法.我现在无法将“日志"保存到 csv 文件. 这可能帮助 解决方案 原答案: 该对象的列表可以解决问题 i ..
发布时间:2021-09-11 19:39:32 Python

在 Web 视图上显示来自 telnet 接口的高速数据的最佳方式?

我想在 Web 视图上显示来自 telnet 界面的数据.我有一个守护进程正在运行,它读取 CAN 总线数据并在 telnet 端口上每秒生成大约 500 行 ~40 个字符.这是一些以 100 Hz 运行的消息,而大多数其他消息以 10 或 5 Hz 运行,因此总而言之,它大约是 500/秒.我想获取每个数据包中的最新值并将其显示在网页上.网页在本地加载(不是通过 HTTP),守护进程可能在不同 ..
发布时间:2021-09-08 18:52:26 其他开发

同步不同的消息

我认为这是一个通用的软件范式问题,所以它与嵌入式软件没有太大关系. 我在不同的时间段收到了 3 条消息,这三条消息是Odo,速度,GPS.每个都有 20 毫秒、1 秒和 1 秒的时间片. 我的问题是只有当这三个消息都已被获取时,我将如何同步并获得完整的消息. 我目前的方法是拥有三个循环队列,并放置三个布尔变量并检查它们是否全部同步,但是如果例如具有 20 毫秒时间片的 odo 被 ..
发布时间:2021-08-30 19:28:56 其他开发

了解 CAN 过滤器

我无法理解 stm32f4-discovery 的 CAN 过滤器配置. CAN_FilterInitStructure.CAN_FilterNumber = 0;CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterSc ..
发布时间:2021-08-30 19:28:39 其他开发

在Python中通过UDP发送CAN帧

我在两台Linux机器之间建立了UDP套接字连接,并且可以轻松发送例如 b"Hello,World!" .但现在我需要发送以下 CAN 帧 from可以导入消息send_msg =消息(数据= [1、2、3、4、5]) 因此,如果我打印 send_msg ,则会显示: 时间戳:0.000000 ID:00000000 X DLC:5 01 02 03 04 05 我想将此打印在接收端 ..
发布时间:2021-05-29 22:31:32 服务器开发

套接字如何获取发送失败状态?

众所周知,在CAN总线通信协议中,发送方知道数据是否已成功发送.我发送如下的socketcan数据. ret =写(套接字,帧,sizeof(结构can_frame)); 但是,即使断开CAN通信电缆,ret的返回值仍然是16(= sizeof(struct can_frame)).我查询了信息,发现问题是由于所使用的网络堆栈的tx_queue引起的通过socketcan.多次调用writ ..

使用CAPL在常量循环中运行Blf文件以进行仿真

我想使用CANalyzer中的Replay块运行.blf文件.我想在一个恒定的循环中运行此文件以进行仿真.是否可以使用CAPL,或者即使没有CAPL,也有人可以指导我如何进行此操作. 解决方案 您不需要CAPL即可循环播放日志文件. 右键单击“重播"块 在“常规"标签中,启用"重复输出发送模式" ..
发布时间:2020-07-30 18:43:26 其他开发

如何编写一个CanOpen堆栈?

我对此也有类似的问题. 如何对简单的CANopen层进行编程. 我阅读了答案,但我必须自己编写一个CANopen层,但我无法获得商业层.那么编写CANopen堆栈是否有任何基础知识(或者我不确定其中的区别)?我什至不知道从哪里开始. 如果需要,这里是一些信息: 我的主设备是带有QNX的小猎犬黑.我认为QNX有一个通用的CAN库,但不是特定于CANopen的.我的奴隶是一个军事化的无刷电机控 ..
发布时间:2020-07-19 19:16:32 C/C++开发

如何对简单的CANopen层进行编程

我们有一个机器人项目,其中电机控制器使用 CANopen 进行通信.我需要使用主微控制器与这些电机控制器进行通信.问题是我需要在该微控制器中开发一个CANopen层,但是我只知道如何在低电平(CAN)上发送和接收. 我对CANopen知之甚少(PDO,SDO,心跳,对象字典等).我试图阅读CiA规范,但这非常复杂.如果有人可以指出正确的方向或给我一个好的教程来编写简单的CANopen层,我将 ..
发布时间:2020-07-19 19:16:30 其他开发

使用ELM327接收CAN消息时的流控制消息

我正在尝试制作一个在Windows下运行并与ELM327设备通信的软件.我创建了第一个版本,然后进入SMART ForTwo(SMART 451)车辆,并设法与组合仪表连接(发送CAN ID为782,接收CAN ID为783).但是,我对流程控制有很大的疑问.这是日志: TX:ATI RX:ELM327 v1.5a TX:ATE0 RX:ATE0 OK TX:ATSP6 RX:好 ..
发布时间:2020-07-01 23:50:05 其他开发

是否可以通过.dbc文件请求所有所需的ODB II PID?

我要做的是通过Vector db Editor ++中创建的.dbc文件请求所有所需的PID。 我对CAN通信了解得足够多,能够使用1个或2个PID进行此操作,因为DLC每个CAN消息最多允许8个字节的数据。我也熟悉有关PID https的资源的资源。 ://en.wikipedia.org/wiki/OBD-II_PIDs#CAN_.2811-bit.29_bus_format 我无 ..
发布时间:2020-06-07 19:14:04 其他开发

使用CAPL和CANalyzer在按钮按下时发送定期CAN信号

我正在尝试将一组CAN帧发送到CAN总线。我正在使用CAPL进行编程,并使用CANalyzer8.5进行模拟,并使用Panel Designer创建一个按钮。我的要求是首先使用PANEL Designer创建一个按钮。只有按下按钮,它才应开始向总线上定期发送CAN帧。我对如何实现它有些困惑。到目前为止,我已经设法使用CAPL编写了两个单独的程序。第一个程序在启动时定期发送数据。当按下按钮时,第二个 ..
发布时间:2020-06-07 19:14:01 其他开发

使用CAPL在CANoe中通过ISO-TP(传输协议)传输数据

将CAPL与CANoe结合使用,可以通过CAN上的ISO-TP传输大量数据。是否有例程可以处理嵌入在CAPL中的数据分段,还是我需要编写自己的解释? 解决方案 看看 OSEK_TP CANoe演示。它显示了如何通过ISO-TP(传输协议,ISO 15765-2 )传输和接收数据。 有关实现的详细信息,请参见 nodeA.can 文件和OSEL_TP API参考。 示例: 创建 ..
发布时间:2020-06-07 19:13:45 其他开发