问题标签 [socketcan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
399 浏览

c++ - 使用 CMAKE 和 arm 工具链交叉编译 CAN 项目,但在查找 AF_CAN PF_CAN 时遇到问题

我正在使用 CMAKE 对嵌入式 arm 设备进行交叉编译,并且在定义 PF_CAN 和 AF_CAN 时遇到了一些问题。我被建议使用

但它不包含定义,并且无法真正判断它是否间接指向它。

这是我当前的程序(超级简单)

这是我运行 make 时的输出:

HelloWorld.cpp:45:错误:未在此范围内声明“PF_CAN” HelloWorld.cpp:45:错误:未在此范围内声明“PF_CAN”

0 投票
2 回答
19222 浏览

beagleboneblack - 写:没有可用的缓冲区空间 socket-can/linux-can

我正在运行一个带有两个 CAN 通道的程序(使用 TowerTech CAN Cape TT3201)。

两个通道是 can0 (500k) 和 can1 (125k)。can0 通道运行良好,但 can1 运行 write:No buffer space available 错误。

我正在使用 ValueCAN3/VehicleSpy 来检查消息。

这是在我运行程序之前。can0 和 can1 似乎都在发送,但只有 can0 出现在 VehicleSpy 中。

在此处输入图像描述

这是在我尝试运行程序之后

在此处输入图像描述

当我的程序正在运行时:我收到所有要在 can1 上发送的消息的错误

然而,有时整个程序可以完美运行(如果模块重新启动或一些随机实例)。

我该如何解决?

在做了一些挖掘之后,我发现了这个

事实证明 can1 由于某种原因已停止

但是当我尝试时:

0 投票
0 回答
104 浏览

ubuntu - vcan0 在 ubuntu 16.10 中导致 ip 冲突

我刚刚创建了一台 ubuntu 16.10 机器并尝试创建一个 vcan 网络:

一旦我进入这个,虽然我失去了我的互联网连接。

永远不会回来。我什至没有启动 vcan0 接口。只需加载标准 vcan 模块 有什么想法可以开始调试吗?

0 投票
0 回答
1742 浏览

raspberry-pi3 - 当环回关闭时,CAN 总线变为 ERROR PASSIVE 状态

我已经将 PiCAN2 板与运行最新 Jessie 的树莓派连接起来​​。当我尝试使用 can-utils 通过这个 PiCAN2 向我的 PC 发送一些 CAN 消息(PC 通过 USB 到 DB9 CAN 接口连接到 PiCAN2 板)时,一旦我带上 CAN,它就会进入 ERROR-PASSIVE 状态界面向上。但是,当我启用环回模式时,我可以使用树莓派本身的两个不同终端窗口发送和接收消息。我使用启用了环回模式 sudo /sbin/ip link set can0 type can bitrate 500000 loopback on.

有人可以告诉我更多有关环回模式的信息吗?我想确保我的 PiCAN2 硬件设置正确。是否可以确认我的 CAN 板配置正确,因为我可以使用环回模式发送/接收消息?或者这并不一定意味着它是正确的?

我还想知道为什么我得到 ERROR PASSIVE 模式 - 它是否表明 PiCAN2 配置不正确,或者这是否意味着我的 USB 到 DB9 CAN 接口有问题?我是这个领域的新手,任何帮助都会很好。谢谢你。

0 投票
1 回答
563 浏览

sockets - socketcan如何处理仲裁?

我非常了解 CAN 协议的工作原理——当两个节点尝试同时使用网络时,较低的 id 可以帧获得优先权,而另一个节点检测到这一点并停止。

使用 socketcan 时,这似乎被抽象掉了——我们像任何文件描述符一样简单地写入和读取。我可能误解了一些东西,但我已经浏览了大部分文档(http://lxr.free-electrons.com/source/Documentation/networking/can.txt),我认为它的描述并没有明确。

write() 会阻塞直到我们的帧是最低 id 帧,还是 socket 可以缓冲帧直到网络准备好?如果是这样,当这种情况发生时是否通知用户或者我们是否为此使用环回?

0 投票
0 回答
185 浏览

can-bus - 使用 canutils 转储 BAM(广播公告消息)

早上好,我是一名嵌入式 linux 开发人员,我正在尝试在基于 iMX6 的板上转储 J1939 CAN 语句。

我尝试使用命令将 RAW canbus 消息保存在文件中

candump can0 -L > /tmp/fms_canbus

并且一切都适用于非广播消息

但是我无法接收 BROADCAST 消息 (BAM),文件上似乎没有记录 BAM 消息。

据我所知,为了读取 BAM 消息,应使用 SOCK_DGRAM、CAN_BCM 选项打开套接字,但似乎 canutils 包中没有 CLI 工具可以执行类似于

candump can0 -L > /tmp/fms_canbus

有没有人可以帮助我解决这个问题?我应该实现自定义工具还是有允许执行所需操作的标准工具?最好的问候乔瓦尼

0 投票
1 回答
334 浏览

linux - Tiny-CAN I-XL socketCAN扩展格式

我的问题如下。我在 Linux 上使用 Tiny-CAN I-XL CAN-USB 适配器和 socketCAN。我通过执行以下操作配置 CAN 适配器:

sudo slcan_attach /dev/ttyUSB0 -w

sudo ip link set can0 type can bitrate 100000 restart-ms 500

sudo ifconfig can0 up

与第二个适配器(can1)相同的过程,并通过两个终端中的 candump 显示。

可以通过以下方式发送标准消息:

可以发送 can0 123#11.22.33.44.55.66.77.88

但是使用扩展格式不起作用:

可以发送can0 12345678#11.22.33.44.55.66.77.88

我错过了什么?我是否忘记进行特定设置?

我认为 CAN-id 的第 31 位应该是 1,如 can.h 中所述以打开 EFF。因此,像这样的消息:

可以发送can0 81111123#11.22.33.44.55.66.77.88

应该管用。但事实并非如此。

有任何想法吗?

0 投票
0 回答
633 浏览

javascript - 通过可视化在网页上显示来自 can bus 的实时数据

我想使用像 BananaPi 这样的 linux 设备,它带有与 socketcan 兼容的 can 控制器来连接到汽车 can-bus 并在网页上实时显示其数据,该网页应该托管在 Pi 上。数据应以十六进制值列出并通过图表(不同的信号,例如当前速度)可视化。

经过一些研究,我发现了 node-can,我可以设法将 can-messages 显示为网页上的列表。但我注意到,当总线负载很大时(我在 1 毫秒的时间内发送罐头消息),消息会出现相当大的延迟(约 2 秒)。如果我使用以下简约示例,则会发生相同的延迟:

我在这个话题上绝对是新手,但我认为,nodejs 不是实现这个项目的最佳选择吗?

还有其他(更好的)方法来实现这样的系统吗?

我可以想象一个像 C 后端这样的东西,例如基于 candump(这个程序在相同的总线负载下不会发生延迟),以及一个用 javascript、html 和 css 实现的前端。但我不知道如何将这些不同的单个程序组合在一起。你能给我一个关键字,以便我有一个进一步研究的起点(websocket?!)?

我还考虑在 sql 数据库中编写罐头框架并从数据库中获取它们以用于网页 GUI,但我不知道它是否/如何工作以及这是否足够快......

提前致谢!

0 投票
2 回答
1367 浏览

ubuntu - 使用 candump (SocketCAN) 时没有活动的虚拟罐消息

我正在玩 can-utils 包,尝试运行虚拟罐设备。除了没有活动消息外,一切似乎都运行良好。Candump 和 cansniffer 有效,因为我手动发送消息并显示。

难道我做错了什么?

这是我运行的命令:

我正在使用 Ubuntu 16,内核 4.11.0

0 投票
1 回答
2514 浏览

linux - SocketCAN 的 canfd_frame 中的“flags”字段是什么?

SocketCAN 中的非 FD(“传统”)CAN 帧具有以下格式:

帧ID、长度和数据都有明确的位置,加上一些我们不用担心的填充。但是,对于 CAN-FD 帧,有一个额外的字段:

flags字段看起来很有用,但我没有找到关于它实际包含什么的文档。它是内部的(即由内核设置)?可能的标志是什么,它们是什么意思?

谢谢!