问题标签 [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 回答
14810 浏览

can-bus - Canplayer 不会重播 candump 文件

我正在尝试使用 canplayer 重播一些 candump 文件,但没有成功。当我尝试运行 canplayer 时,它只是执行并返回,让我不知道发生了什么。

到目前为止,我已经尝试过:

设置 1

  • 设置vcan接口
  • 使用 cansend 和 cangen 向 vcan 接口发送数据,成功(通过 candump 验证)。
  • 运行 cangen 时从 vcan0 记录了一个 candump 文件。带有绝对时间戳 (-ta) 和不带绝对时间戳的记录文件。
  • 尝试使用 canplayer 重现文件。尝试使用几个参数,无济于事。canplayer 立即返回,没有任何投诉。如果我弄乱了它抱怨的文件或参数。

设置 2

  • 将 2 个 PEAK CAN USB 适配器设备连接到 PC。
  • 使用 120 欧姆端接电缆将适配器相互连接
  • 启动 cangen 指向 can0 并使用 candump 验证消息到达 can1
  • 从 can0 接口录制的 candump 文件。
  • 尝试使用canplayer重现文件,但没有成功。

我已经在两台运行 Ubuntu 12.04 的不同机器上尝试了这些测试,结果相同。

你知道这可能是什么原因吗?

0 投票
1 回答
3971 浏览

linux - CAN-utils和socket可以

我正在运行 Ubuntu 15.0 并拼命想让 can-utils 与各种(USB)设备一起运行,但一点运气都没有。

在设置 slcan 并运行 candump 或 cansniffer 时,我希望至少有一些东西,但不,根本没有传入数据。

我尝试使用的设备是 Ebay 电缆...

  • 蓝色 VAGCOM 401.9
  • 黑色 VAG K+CAN
  • MPPS 13(芯片调谐)

我已经拆开了 MPPS 电缆,它似乎有真正的硬件(不是中国克隆),比如:NXP SJA1000T、MCP2551,它还有另一个芯片标记为c8051f380(pdf 链接)

不幸的是,这些接口都没有显示 CAN 数据。can-utils 对我来说仍然是一个新工具,所以我可能(希望!)错过了一些重要的步骤,但如果不是,我真的不明白为什么这些都不起作用......根本。

最重要的是,我确实有 MCP2551 收发器、MCP2515 和一个 MCP2562FD 控制器,但我没有晶体或电容来组装我自己的接口,我更喜欢这样。我确实只是为了好玩,FTD232RL(sparkfun one)和 MCP2551 一起尝试,并且确定我在 OSX Coolterm 上获得了数据,但是是的……这并不是什么好玩的事情,因为我在链中没有任何控制。这是我拆开 MPPS 以查看它是否包含 16Mhz 晶体 + 盖帽的主要原因,我可以在自己的设置中使用和使用。但是当我看到这个设备中使用了哪些芯片时,我认为一定有某种可能性可以让 can-utils 使用它。

所以总结一下……有没有人测试过 MPPS13 电缆或任何其他中国电缆?由于 Linux 和内核等对我来说仍然有点先进,所以我真的找不到任何适合 can-utils 和所有这些需要设置的驱动程序的合适的设置。绝望之下,我试图运行我遇到的几乎所有终端命令,以期让某些东西起作用(我知道这很愚蠢,但绝望是压倒性的)。我也想在 rPI 上测试这一切,因为有大量页面可用于该主题......但当然我的 PI 已经退休了。

0 投票
0 回答
394 浏览

linux - Enumerate CAN adapters

Is there a way to enumerate all CAN devices on Linux?

It's easy to get a list of the available adapter names plus their indices using if_nameindex but I can't see an obvious way to use that to then iterate though those to find out which are can or not (apart from an ugly hack to see if 'can' is in the name).

I suppose I could create a socket using PF_CAN and then try and bind with each of the indices. I would expect only the CAN interfaces will return successfully but again it feels like a hack.

I've also had a look at the socket ioctls in sys/ioctl.h but I can't see anything there that would be useful. I thought maybe using SIOCGIFADDR would work and I'd be able to get the sa_family field but that doesn't work either.

0 投票
1 回答
1737 浏览

linux - 使用 SocketCAN 编写自定义 CAN 协议

我正在尝试为 SocketCAN 编写稍微修改的 CAN 协议。SocketCAN 文档对此有一个简短的部分:

https://www.kernel.org/doc/Documentation/networking/can.txt

问题是我找不到这里引用的一些文件。我对Linux内核不是很熟悉,所以我不知道我是不是找错地方了。我可以找到include/linux/can.h目录include/linux/can/,但那里没有core.h文件。此外,我找不到net/引用的目录。

其他信息:

  • 我能够发送和接收原始 CAN 帧,所以我相信我已经正确设置了 SocketCAN

  • 目录的内容(core.h应该在哪里):

    /li>
  • 我在 BeagleBone Black 上使用 Debian(我不确定我的系统的嵌入性是否有所不同)

如果有人可以帮助我指出我应该在哪里寻找这些文件,我将非常感激。

非常感谢!

0 投票
1 回答
837 浏览

sockets - RX溢出后SocketCAN停止读取,正常吗?

我正在使用集成 CAN 总线接口对嵌入式硬件进行测试。该驱动程序提供 Linux Socket API。

我试图看到限制:我有一个尽可能快地写入 CAN 帧的发送器和一个连续读取的接收器。

片刻之后,接收器收到一个错误帧,表明 RX 溢出。我对此没有任何问题,这是正常的和预期的。

但我的问题是为什么此时没有收到更多帧?(设置了 restart-ms 选项)

我预计会出现一些丢帧和其他 RX 缓冲区错误,但不是接收结束。

0 投票
2 回答
17191 浏览

linux - 被 candump (SocketCAN) ID 过滤功能搞糊涂了

简而言之,我希望 candump 只显示 ID 为 0x00200200 或 0x255 的帧。

所以我这样做:

但这给出了所有帧,并且每帧显示两次。即输出:

会是这样的:

除了过滤器的行为不像我预期的那样并通过 0x256 之外,它出现两次的事实表明这个帧实际上是由两个过滤器匹配的,这对我来说更没有意义。谁能解释为什么会发生这种情况,也许可以告诉我正确的方法?

0 投票
1 回答
3672 浏览

can-bus - Socket-CAN 虚拟总线

如何创建多个虚拟套接字并将它们链接在一起以创建虚拟总线?

我想模拟一个应用程序,其中许多节点通过 CAN 相互通信。

0 投票
3 回答
3462 浏览

node.js - Socketcan+ Express.js +Node.js 获取/发送 Can-Bus 消息

我安装了socketcan

在我的 Raspberry Pi 2 B 上链接没有任何错误。我可以在终端上使用带有 candump/cansend 的 Pican 适配器。所以效果很好。但我不明白如何使用 Socketcan。我想用can0。

这是来自 Socketcan 的帮助:

使用消息和信号:

但是我将这些命令app.jsindex.htmlbin/www文件放在哪个文件中?我试过的东西没有用。以及如何设置波特率/比特率?还是有替代方法,我可以用来记录/发送一些消息?

我刚开始使用 JavaScript / HTML5 / CSS。

0 投票
1 回答
978 浏览

c++ - 使用 libsocketcan 从用户空间启动/停止 CAN 板

我正在尝试使用来自用户空间的 SocketCAN 启动/停止 CAN 板或更新其波特率。我的测试是在 PeakSystem 和 IXXAT USB-to-CAN V1/V2 板上进行的。

我的第一次尝试是使用 visudo 并启用 NOPASSWD 以“ip link set ...”,然后在我的 C++ 代码中调用“sudo ip link set ...”。完整的 visudo 行是:

然后,我通过向 /bin/ip 添加功能来尝试使用 Linux 功能。这让我可以从我的 C++ 代码中调用“ip link set ...”,这样更好。添加功能命令:

但后来我发现libsocketcan比从 C++ 调用命令行要好得多。但是,当调用“can_set_bitrate”或“can_do_start”时,出现错误“RTNETLINK:不允许操作”。但是当我的程序以 root 身份启动时,一切正常。can_get_state 等其他函数在用户空间中运行良好(实际上,它们正在返回:4 -> CAN_STATE_STOPPED)。我试图向我的程序添加功能但没有成功“sudo setcap cap_net_raw,cap_net_admin+ep ./myprogram”。

如何允许我的程序在用户空间中使用 libsocketcan?

谢谢你的帮助!

0 投票
2 回答
20987 浏览

can-bus - 虚拟 CAN 总线模拟器

如果这似乎与另一个问题相似或似乎已经得到回答,我提前道歉。我觉得它非常详细,足以保证它自己的问题。

我正在尝试找到一个虚拟 CAN 总线模拟器(或某种轻松制作的方法),它将简单地生成 CAN 总线消息。我希望能够将原始 CAN 消息逐位发送到另一个设备(使用 GPIO),以便由另一个程序进行独立分析。

此外,如果有人知道会生成真实的车辆 CAN 总线消息(甚至只是真实 CAN 消息的数据库)的东西,那将有所帮助。

目前我正在研究 SocketCAN,但我不确定它是否会起作用。我感谢任何想法或建议。