问题标签 [j1939]
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.
c# - 将字符串转换为字节
我有一个 J1939 CAN 原始字符串,格式如下:
此字符串包含一些 CAN 消息,这些消息分为 3 个部分,例如
1) PGN 数据长度(以字节为单位)0B
2)PGN号(3字节长)0FEE99
3) PGN 数据CF002000CEF0200
目前,我正在使用子字符串来解析这 3 个部分,但我没有得到正确的值。我在想我可能犯了一个错误,因为我没有将字符串转换为字节数组。这是我的代码的一部分:
can-bus - 如何在 J1939 CAN 总线上声明地址?
我的主要目标是让我的控制单元没有 VIN,但为此我需要向控制器发送命令,并且在向控制器发送任何命令之前,我必须声明地址。
我在我的网络上发送了以下命令,但没有得到任何响应。
这是要求地址的正确方法还是我发送了不同的命令?
can-bus - 使用 canutils 转储 BAM(广播公告消息)
早上好,我是一名嵌入式 linux 开发人员,我正在尝试在基于 iMX6 的板上转储 J1939 CAN 语句。
我尝试使用命令将 RAW canbus 消息保存在文件中
candump can0 -L > /tmp/fms_canbus
并且一切都适用于非广播消息。
但是我无法接收 BROADCAST 消息 (BAM),文件上似乎没有记录 BAM 消息。
据我所知,为了读取 BAM 消息,应使用 SOCK_DGRAM、CAN_BCM 选项打开套接字,但似乎 canutils 包中没有 CLI 工具可以执行类似于
candump can0 -L > /tmp/fms_canbus
有没有人可以帮助我解决这个问题?我应该实现自定义工具还是有允许执行所需操作的标准工具?最好的问候乔瓦尼
matlab - 如何拦截J1939 CAN报文?
我正在使用 Simulink 构建 HIL/SIL 测试,该测试从车辆上测试车辆控制单元 (VCU)。此 VCU 通过 J1939 CAN 网络与配电模块 (PDM) 通信。PDM 处理来自开关和致动器的输入和输出,并将信息放在 CAN 总线上。VCU 然后知道 PDM 从连接的传感器看到什么。反过来,VCU 将有关 PDM 应如何控制连接的执行器的信息放在 CAN 总线上。
我的笔记本电脑通过 Vector 适配器和 Simulink 连接到同一条 CAN 总线。
为了测试 VCU,我需要模仿 PDM 并向 VCU 发送消息,就像我是 PDM 一样。然后 VCU 必须采取正确的行动并相应地控制真正的 PDM。
显然,如果我只是模仿 PDM,我的消息会干扰从真实 PDM 发送的消息。所以基本上,我需要 PDM 闭嘴,只听。我为 PDM 代言。但是,PDM 不能在只听模式下进行配置,所以我必须拦截它发送的所有消息,这样它们就永远不会到达 VCU。
我的想法是当 PDM 开始发送时我会检测(通过观察所有消息的仲裁字段),并在仲裁字段中拉低一点。它会识别出我的“信息”比它自己的优先级,并且它会停止传输。就好像 CAN 总线总是忙于给 PDM 腾出空间。这将关闭 PDM 而不会引发错误。但欢迎提出其他建议。
那么(如何)可以在 MATLAB/Simulink 或使用单独的 CAN 控制器中拦截 J1939 CAN 消息?
c - 如何在 J1939 协议中声明地址
您好,我正在尝试读取某些电池的剩余容量信息,该电池使用 J1939 协议发送一些信息。为此,我使用的是 PIC18F26K83,因此在我想向电池发送数据以表明我想要一些我需要获取地址的特定信息之前,我已经理解了。但是,当我尝试从 PGN 60928 声明地址时,传输永远不会发生。一切看起来都正确,但 TXREQ 位永远不会归零。代码的相关部分如下所示: PS:在硬件方面,一切都很好,我有 2 个节点,足以用于 CAN 总线,我在我的 Can transsiver Rx 和之间放置了 120 欧姆电阻TX等
所以我的问题是:为了实现 J1939 协议,是否有必要声明地址,即使它不会在真实车辆系统中使用,并且在声明地址之前是否有任何必要的步骤?只需设置can总线并将其置于正常模式并将名称数据传输到PGN 60928就足够了吗?
can-bus - J1939 在请求特定数据之前是否需要地址声明?地址声明和参数组声明的区别?
为了从一个使用 J1939 协议的节点请求特定数据,是否有必要在请求该数据之前声明地址?我们是否还需要在该过程之前请求 PGN?或者我们可以直接请求数据而不请求 PGN 或声明地址吗?谢谢。
ios - 如何从 SAE j1939 总线读取数据
在这里,我们正在尝试从 J1939 SAE 总线设备读取数据,但似乎无法通过 iOS 读取我们正在使用Core bluetooth
我们在 android 中完成的连接,并且在 android 中工作正常,但同一设备无法使用 iOS 读取,任何人都可以帮助我。
在这里我附上我的代码片段
连接Bluetooth
设备为 SEA J1939
蓝牙连接成功
从设备读取数据
j1939 - 错误的 DM1 多包
我使用 stm32 mcu 收集了 Scania G380 卡车的罐头数据。DM1 故障有问题。根据 j1939-73,当 dm1 数据长度超过 8 个字节时,它将由 TP.CM (pgn 0xecff) 宣布的 TP.DT (pgn 0xebff) 打包,但我面对这些数据,以一种奇怪的方式打包:
它似乎不遵循协议。
另一个奇怪的问题是 dm1 故障在单个数据包中重复广播,而不是在 TP.DT pgn 中打包。例如我有这个日志:
谁能帮帮我?
c++ - 将 J1939 消息转换为原始 CAN
我通过一个使用 IsoAgLib 作为框架的类接收 J1939 CAN 消息。在接收端,我有这些 J1939 消息需要通过使用 Qt 的“QCanBusDevice”和“QCBusFrame”传输到 CAN 网络。
我的问题是:如何将 J1939 协议中的消息转换为原始罐消息,反之亦然?