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

.net - CANopen API COBID

我正在尝试与 USB-to-CAN 设备通信。我正在使用 Canopen.net API,我并没有完全理解它下面的所有类,但从我读到的内容,我知道 cCob 是我需要使用的类。我设法连接到设备,创建了一个 cCob 实例(使用 CreateCOB 方法)并发送数据。

我现在面临的问题是 COBID 限制。我不知道为什么,但似乎 API 不允许我使用大的 COB-ID(32 位)。m_ErrorCode 是:“kCobAlreadyExist”(它不应该来自我所知道的)。

也许我弄错了,我应该将 SDO 类与对象字典一起使用,所以我希望有一个正确通信方式的完整基本示例。

0 投票
1 回答
1825 浏览

linux - 如何解决这个错误——在编译 socketcan 实用程序时

我已经从 SVN 下载了 can 实用程序。因为默认情况下可以实用程序不在内核中。

我正在使用的内核是:--

然后我重新编译了实用程序。这是找不到isotp.h的错误:---

0 投票
1 回答
2295 浏览

linux - Linux CAN总线传输超时

设想

有一个基于 Linux 的设备连接到 CAN 总线。设备定期发送 CAN 报文。该消息携带的数据的性质类似于测量而不是命令,即只有最近的一个实际上是有效的,如果某些消息丢失了,只要最近的一个成功接收就没有问题。

然后,有问题的设备与 CAN 总线断开连接的时间比后续消息传输之间的间隔长得多。设备逻辑仍在尝试传输消息,但由于总线断开,CAN 控制器无法传输任何消息,因此消息正在累积在 TX 队列中。

一段时间后,CAN 总线连接恢复,所有积累的消息都被一一踢到总线上。


问题

  1. 当 CAN 总线连接恢复时,将从 TX 队列中传输未定义数量的过时消息。
  2. 当 CAN 总线连接仍然不可用但 TX 队列已满时,一些最近的消息(即唯一有效的消息)的传输将被丢弃。
  3. 一旦 CAN 总线连接恢复,在刷新 TX 队列时会出现短期流量突发。如果使用了时间触发总线调度(在我的情况下),这可以改变时间触发总线调度。

问题

我的应用程序使用 SocketCAN 驱动程序,所以基本上这个问题应该适用于 SocketCAN,但如果有的话,也会考虑其他选项。

我看到了两种可能的解决方案:定义消息传输超时(如果在某个预定义的时间内没有传输消息,它将自动丢弃),或者手动中止过时消息的传输(尽管我怀疑使用套接字根本不可能API)。

由于第一个选项对我来说似乎是最真实的,所以问题是:

  1. Linux下如何定义CAN接口的TX超时?
  2. 除了 TX 超时之外,是否存在其他选项来解决上述问题?
0 投票
1 回答
37 浏览

java - 能否使用 Java EE 中的资源适配器实现 EIA232 通信?

这个问题可能已经出现在 SO 上,在这种情况下,请原谅我无法找到它。我打算重写一个桌面应用程序,其通信层当前实现调用 CAN 设备驱动程序的 .dll 文件中的方法(函数)。

但是,该应用程序将使用 JCA 重写为 Java 企业应用程序。是否可以将通信层包装在 JCA 资源适配器中,以便它仍然可以通过 .ear 内部的 .dll 文件与设备通信,或者我需要为此实现独立的 Java SE 服务?

更新:看起来我确实需要将通信层包装在可以从业务逻辑层调用的独立 Java SE 服务中。好消息是不需要资源适配器。

0 投票
0 回答
82 浏览

embedded - 从 VectorCanCase 接收多个消息队列

当通过 chanel 0x74D 发送特定的 CAN 消息时,长度在 l=8 中指定,并且响应必须包含几个 Ca,msg,不幸的是我只收到第一个,请注意所有收到的 msg 都在 chanel 0x76D 中。我使用 C# 代码,这里附上一个我已经回答但没有回应的问题

https://stackoverflow.com/questions/19933398/how-can-i-specify-data-lenght-received-by-cancasexl-from-vector

关于如何做到这一点的任何想法?

0 投票
1 回答
5057 浏览

c# - c# .Net 4.5 线程间通信

我正在构建一个可以实时监控一些 MCU 硬件(传感器读数等)的应用程序。对于通信,我使用的是 CAN 总线。

基本上我现在有2个线程。一个是运行 GUI 的主线程,另一个是管理/监控设备之间的通信。所以显而易见的是,我需要将数据从通信线程传递到 gui 线程。但是,正确的方法应该是什么?我知道当子线程完成工作时如何将数据传回调用线程,但在这种情况下,通信线程一直在运行。

当然,通信逻辑由一个单独的类(CANManager)表示。

我有自己的一些想法,但是我想知道应该如何做到这一点的“正确”方式是什么。

提前致谢 :)

0 投票
1 回答
145 浏览

linux - 从套接字轮询/推送

我想为socket可以写一个android系统服务器。我目前正在设计这个,想知道是否有任何方法可以在不调用 read() 的情况下获取 Linux/POSIX 套接字上的数据并随时轮询结果。

0 投票
2 回答
36594 浏览

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

我想创建一个模拟 CAN 端口的程序,以用于另一个大型应用程序的测试目的。程序应通过此虚拟 CAN 发送先前记录的数据。任何人都有这样的经验吗?

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

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

0 投票
1 回答
2024 浏览

can-bus - 如何排除 CAN 总线通信故障

我正在尝试将 ICP CON i-7565(USB<->CAN 接口)连接到定制设备(支持 CAN2.0B,证明可以与 PCL-841 卡一起使用)虽然我认为我已经配置了 BAUD 和接受代码/掩码正确地,我可以看到 CAN 没有来自设备的消息(ICP 提供了一个工具,可以让我发送和接收 CAN 消息)。

我是 CAN 总线的新手,所以我很感激有关如何识别问题的任何帮助。

I-7565 对我来说可能是错误的接口,我可能配置错误,或者它只是坏了。或者我只是因为我的无知而做错了什么。我认为没有人可以帮助我解决我的具体问题,所以我宁愿询问有关如何识别和分析 CAN 总线问题的一般信息。例如,在 TCP/IP 中,你会调用 ping,你会重新检查你的 ip 和网关设置等。你对 CAN 通信做了什么?

附加信息:

操作系统:Win7 64bit 连接器:DB-9 标准接线 (2,3,7)

0 投票
4 回答
14493 浏览

c - SocketCAN连续读写

我正在编写一个程序,它不断地向 CAN 总线发送“Hello”并通过 SocketCAN 从总线读取数据。我希望这两个步骤是独立的。这意味着即使总线上没有数据,程序仍然会发送“Hello”。但是用通常的 CAN 读取是不可能的,因为这个函数会停止程序运行并等待数据。

有没有办法让它非阻塞或只等待几毫秒的数据?