c++ - 如何在 linux 上创建虚拟 CAN 端口? (C++)

标签 c++ linux port virtual can-bus

我想创建一个程序来模拟 CAN 端口,以便为另一个大型应用程序进行测试。程序应通过此虚拟 CAN 发送先前记录的数据。有没有人有这方面的经验?

我正在考虑建立虚拟 COM,并通过它发送包装在 CAN 帧中的数据。它可以工作吗?我如何在 linux 上建立虚拟 COM?找到这个帖子 Virtual Serial Port for Linux 但遗憾的是我不明白如何将它实现到程序的源代码中(初级linux用户和linux下的程序员)。

很想阅读您的经验和建议。

最佳答案

您需要 SocketCAN驱动程序,可在现代 Linux 发行版(如 Ubuntu 等)上使用。SocketCAN 提供了一个虚拟 CAN 端口驱动程序:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

现在您可以通过 vcan0 设备发送和接收 CAN 帧。维基百科文章提供了关于如何使用 SocketCAN 的简单代码示例。

您还需要 can-utils用于测试目的。

您可以在 eLinux.org 上找到有关 SocketCAN 及其用法的更多信息。

关于c++ - 如何在 linux 上创建虚拟 CAN 端口? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21022749/

相关文章:

python - 如何强制库(pybind11)包含Python3中的<Python.h>?

c++ - 使用 OpenCV 进行多色物体检测

c++ - 为什么逻辑 AND/OR 的左操作数不依赖于父评估?

正则表达式查找连续的单词

java - 如何从 Java 中的端口提供 HTTP 内容

c# - 为服务器应用程序使用 3 个端口是否明智?

c++ - 删除一个 vector 中包含在另一个 vector 中的所有元素的优雅方法?

php curl 循环在 Linux shell 中意外停止。 linux for循环有字数限制吗?

linux - 从 bash 脚本中发送到后台的进程中检索退出代码

MySQL无法连接远程服务器