问题标签 [can-bus]

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 回答
5447 浏览

c - CANopen/CAN 总线,我需要什么,包括协议(OD?),在 PC 终端和 CAN 设备模块之间进行通信

我有一个带 ECAN 的 dsPIC33,并希望建立一个协议(如果可能,使用SDO),以便在终端软件和 dsPIC33 之间进行通信,我可以在 dsPIC33 和支持 IC 中执行诊断。

我不知道需要什么,那么这样做的低成本方法是什么?我可以使用 CAN-to-USB 设备,但我不确定这是否可行。CANUSB 内部的哪种协议围绕基于 ASCII 的消息?

我可以使用什么硬件?它也可以用来监控CAN总线吗?我不希望像 Vector 或类似的重量级解决方案那样投资昂贵的设置。

0 投票
2 回答
6636 浏览

linux-kernel - 如何从内核模块访问(打开/读取/等)/dev 设备?

我收到了一个驱动程序(PCI 卡的 PCAN 驱动程序,使用 rtdm),它创建 /dev/pcan0 并且 /dev/pcan1 被编译为 netdev 驱动程序。

该驱动程序附带了许多功能,但它们都针对读取 CAN 消息的用户级程序。然而,我需要的是从内核模块中读取这些消息。PCAN 驱动程序不导出任何变量/函数,这意味着它不提供内核级 API 供我使用。

我简要查看了代码并从 /dev 设备读取并写入它不使用copy_from_useror copy_to_user。因此,我认为从我的内核模块打开 /dev/pcan0 并从中读取应该是安全的。

现在我的问题是,如何从内核模块打开/读取 /dev 设备?

PS我想从RTAI实时线程从CAN总线读取,你认为这会导致问题吗(例如每次读取都通过linux内核并因此破坏实时条件?)

0 投票
2 回答
1410 浏览

android - 我们如何在 iphone/android 中实现 CAN 应用层(CAL)协议

我需要连接一个支持 CANBus 的设备,因此为了与之通信,我需要遵循 CAL,所以任何人都可以帮助我在 iphone/android 中实现 CAN 应用层(CAL)协议。请帮助我没有办法解决它

0 投票
11 回答
33185 浏览

can-bus - 如果在汽车行驶时 CAN 控制器中发生总线关闭错误会发生什么?

我知道在 CAN 控制器中,如果错误计数达到某个阈值(例如 255),则会发生总线关闭,这意味着特定的 CAN 节点将从 CAN 网络中关闭。所以根本不会有任何交流。但是,如果在包含ECU(包括 CAN 控制器)的汽车行驶时发生上述情况怎么办?

CAN 控制器中是否有任何自动恢复机制来避免上述任何情况?

0 投票
2 回答
475 浏览

embedded - 是否可以将微控制器引脚从 Vector 直接连接到 CANcaseXL?

这样我就可以访问 CANoe 工具中的消息了……这只是为了测试我的应用程序;我的开发板上没有 CAN 收发器。

我认为有一些选择。

0 投票
3 回答
1979 浏览

microcontroller - 关于 CAN 总线

我正在使用 16 位 MCU PIC24HJ64GP504 来编写基于 CAN 的应用程序。基本上,这是我的板子和另一个节点之间的通信,它使用 CAN 以 1 Mbit/s 的速度不断地向我的板子发送数据。我正在将我的 PIC24 中的 ECAN 模块配置为以 1 Mbit/s 的速度工作。我编写代码的方式是,在前 10 毫秒内,ECAN 模块将接受来自另一端的所有消息,之后我重新配置 ECAN 模块以仅接受那些消息 ID 为 0x13 的消息。

现在问题来了……另一个节点和我的电路板同时通电。另一个节点在上电 40 毫秒左右后开始发送消息。但我无法在我的板上收到任何消息。现在,如果我先给我的电路板加电,给它一些时间用新的过滤器重新配置 ECAN 模块并稳定下来,然后给另一个节点加电,然后一切正常。

现在最奇怪的部分...如果我在我的板子和另一个节点之间连接了一个 CAN 总线分析器,即使我同时给两个节点加电,一切正常...不需要先给我的板加电. 我已经用来自不同制造商的三种不同的总线分析仪进行了尝试,并得到了相同的结果。

在我看来,在重新配置 ECAN 模块期间,需要一些时间来安定下来。并且随着总线分析器在总线中的引入,这段时间不知何故被缩短了,这样一切都可以完美运行。但我不确定问题到底是什么。

0 投票
2 回答
2014 浏览

xmlhttprequest - 在 Web 视图上显示来自 telnet 界面的高速数据的最佳方式?

我想在 Web 视图上显示来自 telnet 界面的数据。我有一个守护进程正在运行,它读取 CAN 总线数据并在 telnet 端口上每秒生成约 500 行约 40 个字符。这是一些以 100 Hz 运行的消息,而大多数其他消息以 10 或 5 Hz 运行,因此总而言之约为 500 条/秒。我想获取每个数据包中的最新值并将其显示在网页上。网页在本地加载(不是通过 HTTP),并且守护程序可能位于不同的主机上,因此存在跨域通信。

这是我尝试过但没有做的事情:

  1. 使用 XMLHttpRequest。我可以打开连接并读取数据,但是当我收到 onprogress 事件时,我无法清除先前值的 responseText 字段。我无法解析 responseText 的最新值,因为它增长得非常快。我也会遇到内存问题,所以这是不行的。
  2. WebSockets 和 Socket.IO:两者都没有成功连接到 telnet 接口,因为它首先期望 HTTP 然后转换为直接套接字。

所以我的问题是,我怎样才能最好地做到这一点?我看到了一些选项,但我确信还有更多:

  1. 在我尝试附加的 canlogserver 守护程序中添加 HTTP 到套接字转换。如何?(它是开源 C,所以我可以添加它)
  2. 编写一个 PHP 接口,该接口通过 telnet 连接到守护进程,并可以通过 HTTP 将数据泵回 Web 视图。多次访问 IP 堆栈时,这似乎效率极低。<
  3. JS 客户端代码上还有什么其他内容可以规避我的缓冲区问题并从 telnet 服务器读取消息、显示数据然后转储缓冲区吗?我需要确保在打开套接字后收到所有消息,因此打开、关闭、重新打开将不起作用,因为这意味着消息会丢失。

谢谢,

蒂姆

0 投票
2 回答
4441 浏览

c++ - boost::asio 通过 SocketCAN

我正在考虑使用Boost AsioSocket CAN读取数据。在linux/can.h中没有什么花哨的东西,设备应该像环回接口一样工作,并与原始套接字一起使用。

查看basic_raw_socket界面似乎我可以使用 basic_raw_socket::assign来分配使用创建的本机套接字

这是我到目前为止所拥有的

这就是我在我的应用程序中使用它的方式

我不太明白的是如何绑定 s到本地端点?不涉及 IP 或端口。

除了端点之外,还有什么其他应该实现的吗?

0 投票
3 回答
10172 浏览

ipc - CAN会发生什么?

我有一个面试。面试官问我:

如果两个节点发送两条具有相同标识符(0x100)但数据不同的消息,谁将赢得仲裁?巴士上会显示哪条信息?

如果节点 1 获胜,那么节点 2 的消息呢?节点 2 的消息何时发送?

0 投票
2 回答
797 浏览

modelica - Modelica 和 CANBus(通用、CANO​​pen 和/或 J1939)

我有使用 Simulink 和 CANbus 接口进行仿真和代码生成的经验……但我真的很喜欢开源。很长一段时间以来,Octave 已经成为 MATLAB 的替代品(在我的使用水平上),但我最近才发现了 Modelica。除了 Extessy 的 Exite 的断开链接之外,我还没有找到关于 CANbus 的任何模块集的任何信息(Modelica 倾向于使用什么术语?)。

任何人都可以提供有关将 Modelica 与 CANbus 一起使用的个人经验或信息参考吗?我知道我可以编写自己的块集,但这似乎是其他人已经做过的事情。