问题标签 [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.
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
linux - vcan0接口linux通讯
Linux支持虚拟can接口。它是通过以下方式启用的:
在使用cam-utils
诸如camsniffer
和cansend
我可以看到罐头数据包;但仅在同一主机内。我试过 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 作为主机和来宾操作系统。
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() 函数之前锁定并在消息接收后解锁),但这并没有解决我的问题。
javascript - 未调用 Socketcan 注册侦听器
我在 RaspberryPi 上使用 Meteor 和 'socketcan' npm 包。为了定义我的 CAN 网络,我使用了一个皮划艇文件“canDefinition.kcd”。这是我在服务器文件夹中的启动 javascript 文件的样子:
我按照sebi2k1/node-can的说明进行操作。
现在的问题是,当所选的可以消息到达时,侦听器“ on Change”未调用。
什么已经在工作/我已经检查过:
- 通过过滤 id 接收特定的 CAN 消息(见下面的代码)
- 访问/读取 canDefiniton.kcd 数据库
有人帮忙吗?谢谢!
c++ - QT CAN BUS、SocketCAN无法读取CAN帧
我在 QT 中使用 readFrame() 方法读取 CAN 帧时遇到问题。
我的初始化代码:
发送数据的代码 - 一切正常
读取数据的代码
在调试期间我总是得到 frame = @0x7fffffffdf10, dataLength = 0, id = 0,
因此,即使我可以通过 candump 命令以及在 QT CANBUS 示例中清楚地看到传入的数据包,我也从未收到任何东西。
你能帮我吗?谢谢。
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 10xyz@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_usbdmesg
[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 答案:断管
任何类型的输入都会有所帮助。
linux - Linux Kernel 4.x 中的 CAN j1939 支持
有人在内核 4.x 系列上移植了 CAN J1939 堆栈吗?
我们已经根据链接“ http://elinux.org/J1939 ”将它移植到 3.10 内核中。现在我想将它移植到内核版本 4.1.15 中。我知道 4.x 内核网络层发生了一些变化,我当前的补丁显示了一些错误?有没有人已经将它移植到 4.x 内核中?或者从哪里可以获得新内核的补丁?请给我建议?
谢谢, 沙比尔
c++ - 获取 CAN 比特率
我想在 C++ 中读取我的 socketcan 套接字的当前配置的 CAN 比特率。
我可以看到比特率ip -det link show can0
:
比特率是通过 设置/etc/network/interfaces
的,但用户可以手动更改它。
libsocketcan 似乎只支持设置比特率,但不支持读取它。
产生上述输出的代码iproute2
使用 rtnetlink。
如何使用 libnetlink 读取相应的属性?还是有另一种读取当前比特率的方法?
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