问题标签 [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 投票
1 回答
754 浏览

python - 如何在龙卷风中使用多个 ioloop 并在 ioloop(s) 之间共享数据?

我有一个 Beaglebone Black 连接到 CAN 总线设备:电池。

在 Beaglebone Black 上作为 GUI 运行的龙卷风网络。

CAN总线读取循环不断从CAN总线读取数据以更新电池实例的状态

但是我怎样才能让两个 IOLOOP 一起工作并共享 Battery 实例呢?

在此处输入图像描述

龙卷风网:

CAN总线读取循环,代码:

0 投票
2 回答
5616 浏览

linux - CAN FD 支持 SocketCAN 上的虚拟 CAN (vcan)

我使用 SocketCAN 尤其是 Virtual CAN vcan 已经有一段时间了。但是,到目前为止,我从未使用过 CAN FD(灵活数据速率)。

好吧,我今天早上使用 can-utils 进行了尝试:

但是,我得到了响应“CAN 接口不支持 CAN FD”。vcan 接口已使用以下终端命令创建:

有人知道 vcan 是否支持 CAN FD 吗?如果是,如何设置支持 CAN FD 的 vcan 接口?

系统配置:VirtualBox 上的 Ubuntu 14.04.1。

提前致谢, MAW

0 投票
1 回答
4567 浏览

linux - vcan0接口linux通讯

Linux支持虚拟can接口。它是通过以下方式启用的:

在使用cam-utils诸如camsniffercansend

我可以看到罐头数据包;但仅在同一主机内。我试过 Ubuntu VirtualBox 机器。来宾和主机操作系统都使用主机专用适配器互连vboxnet0

还尝试了 SocketCAN socket(PF_CAN, SOCK_RAW, CAN_RAW),但无法在其他机器上接收(在同一台机器上工作)尝试使用广播管理器socket(PF_CAN, SOCK_DGRAM, CAN_BCM)执行时stderr说“不支持操作”

简而言之,可以在 Linux 主机之间发送和接收 CAN 数据包吗?它的虚拟机(vboxnet0)或物理连接(以太网)无关紧要。

注意:我分别使用 Ubuntu 16.04 和 12.04 作为主机和来宾操作系统。

0 投票
0 回答
1025 浏览

performance - c:socketCAN 连接:read() 不够快

socketCAN 连接:read() 不够快

你好,

我使用 socket() 连接进行 CAN 通信。

我使用 2 个线程:一个周期性 1ms RT 线程发送数据,一个线程读取传入消息。读取函数如下所示:

套接字配置为阻塞模式,因此读取功能保持打开状态,直到消息到达。当前的实现正在运行,但是当我测量读取消息和读取功能的下一个等待状态之间的时间(请参阅设置/重置 GPIO 注释)时,时间在 30 us(平均值)和 > 200 us 之间变化。大于 200us 的值意味着(CAN 的波特率为 1000 kBit/s)在 read() 处理前一个消息时无法识别包。read() 函数必须在 134 us 内准备好。

我怎样才能加速我的实施?我尝试使用两个用互斥锁分隔的线程(在 read() 函数之前锁定并在消息接收后解锁),但这并没有解决我的问题。

0 投票
1 回答
169 浏览

javascript - 未调用 Socketcan 注册侦听器

我在 RaspberryPi 上使用 Meteor 和 'socketcan' npm 包。为了定义我的 CAN 网络,我使用了一个皮划艇文件“canDefinition.kcd”。这是我在服务器文件夹中的启动 javascript 文件的样子:

我按照sebi2k1/node-can的说明进行操作。

现在的问题是,当所选的可以消息到达时,侦听器“ on Change”未调用。

什么已经在工作/我已经检查过:

  • 通过过滤 id 接收特定的 CAN 消息(见下面的代码)
  • 访问/读取 canDefiniton.kcd 数据库

有人帮忙吗?谢谢!

0 投票
0 回答
2440 浏览

c++ - QT CAN BUS、SocketCAN无法读取CAN帧

我在 QT 中使用 readFrame() 方法读取 CAN 帧时遇到问题。

我的初始化代码:

发送数据的代码 - 一切正常

读取数据的代码

在调试期间我总是得到 frame = @0x7fffffffdf10, dataLength = 0, id = 0,

因此,即使我可以通过 candump 命令以及在 QT CANBUS 示例中清楚地看到传入的数据包,我也从未收到任何东西。

你能帮我吗?谢谢。

0 投票
1 回答
968 浏览

can-bus - Can Bus 设置比特率错误 | RTNETLINK 断管

我正在尝试设置与一个节点的罐连接。我正在使用 IXXAT USB 到可以适配器 http://www.netbiter.com/images/librariesprovider8/product-images/pc-can-interfaces/interfaces-usb-to-can-2-compact-subd.png?sfvrsn= 2

并使用以下套接字可以驱动,但在设置比特率时会出错

" http://www.ixxat.com/support/file-and-documents-download/drivers/socketcan-driver

以下是可能有助于了解问题所在的命令的结果。

ip链接显示

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 00:07:32:38:ab:49 brd ff:ff:ff:ff:ff:ff
3: eth1: mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 link/ ether 00:07:32:38:ab:4a brd ff:ff:ff:ff:ff:ff
5: can0: mtu 16 qdisc noop state DOWN 模式 DEFAULT group default qlen 10

xyz@abc:~/socketcan_1-1-92-0_20150508$ lsmod | grep 可以

can_raw 20480 0
can 32768 1 can_raw
can_dev 20480 2 ixx_pci,ixx_usb

dmesg

[592.860214]usb 1-1:产品:USB-to-CAN V2
[592.860218]usb 1-1:制造商:IXXAT
[592.860222]usb 1-1:序列号:HW442744
[592.869494]ixx_usb 1-1:1.0 can0:附加到 USB-to-CAN_V2 通道 0(设备 HW442744)
[742.106278]usb 1-1:发送命令失败:-32
[742.106366]ixx_usb 1-1:1.0 can0:无法设置比特率(错误 -32)
[813.182948] usb 1-1:发送命令失败:-32
[813.183036] ixx_usb 1-1:1.0 can0:无法设置比特率(错误-32)

设置比特率

xyz@Abc:~/socketcan_1-1-92-0_20150508$ sudo ip link set can0 type can bitrate 1000000
RTNETLINK 答案:断管




任何类型的输入都会有所帮助。

0 投票
1 回答
2419 浏览

linux - Linux Kernel 4.x 中的 CAN j1939 支持

有人在内核 4.x 系列上移植了 CAN J1939 堆栈吗?

我们已经根据链接“ http://elinux.org/J1939 ”将它移植到 3.10 内核中。现在我想将它移植到内核版本 4.1.15 中。我知道 4.x 内核网络层发生了一些变化,我当前的补丁显示了一些错误?有没有人已经将它移植到 4.x 内核中?或者从哪里可以获得新内核的补丁?请给我建议?

谢谢, 沙比尔

0 投票
2 回答
5612 浏览

c++ - 获取 CAN 比特率

我想在 C++ 中读取我的 socketcan 套接字的当前配置的 CAN 比特率。

我可以看到比特率ip -det link show can0

比特率是通过 设置/etc/network/interfaces的,但用户可以手动更改它。

libsocketcan 似乎只支持设置比特率,但不支持读取它。

产生上述输出代码iproute2使用 rtnetlink。

如何使用 libnetlink 读取相应的属性?还是有另一种读取当前比特率的方法?

0 投票
2 回答
1621 浏览

linux - imx 上的 Linux 2.6:无法使用 candump 记录发送的 CAN 帧

我有一个在 imx CPU 上运行的自定义构建 linux 2.6。CAN与外部节点的通信就像一个魅力,但是当我在终端中使用“candump can0”时(当我使用usb-CAN加密狗在我的主机上运行相同的应用程序时,我从我的应用程序发送到节点的帧不会被打印出来)不会出现此问题)。

当发送扩展 CAN 帧时,它们会使用 candump 显示。

我知道过滤发送的消息可能很方便,但我应该可以选择。

欢迎提供任何线索。我在想可能是驱动程序中的一些过滤导致了这种情况。

FlexCAN 驱动程序具有以下配置文件:

中止 br_propseg dump_rx_mb loopback state 唤醒 bcc br_pseg1 dump_xmit_mb maxmb std_msg xmit_maxmb 比特率 br_pseg2 ext_msg
modals 子系统 boff_rec br_rjw fifo power tsyn br_clksrc 驱动程序监听 smp uevent br_presdiv
dump_reg local_priority srx_dis wak_src