首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在J1939 CAN总线上获取地址?

如何在J1939 CAN总线上获取地址?
EN

Stack Overflow用户
提问于 2017-01-20 01:25:10
回答 1查看 4.7K关注 0票数 0

我的主要目标是获得我的控制单元的VIN,但为此我需要向控制器发送命令,并且在向控制器发送任何命令之前,我必须声明地址。

我已经在我的网络上发送了下面的命令,但没有得到任何响应。

代码语言:javascript
复制
Msg.id.pdu_bit.edp = 0;
Msg.id.pdu_bit.dp = 0;
Msg.id.pdu_bit.pf = 234;
Msg.id.pdu_bit.ps = 255;
Msg.id.pdu_bit.sa = 249;
Msg.id.pdu_bit.pri = 6;

Msg.buf[0] = 0x00; //LSB First
Msg.buf[1] = 0xEE; // pgn for claim address
Msg.buf[2] = 0x00;

Msg.len = 3;

这是申请地址的正确方式,还是我必须发送不同的命令??

EN

回答 1

Stack Overflow用户

发布于 2017-06-13 00:42:04

看起来您对PGN 60928 (地址声明)和PGN 59904 (请求PGN)有一些混淆

代码语言:javascript
复制
Msg.id.pdu_bit.pf = 234;

需要的是

代码语言:javascript
复制
Msg.id.pdu_bit.pf = 238;

地址声明的PGN是60928,因此您的J1939报头中的PF字段需要是238 (0xEE)。您的数据将是特定于应用程序的,尽管其数据长度应为8。有关此数据格式的详细信息,请参阅J1939 Spec幻灯片41。

或者,如果您使用PGN 59904,即当您的数据长度为3(除非您有更多特定于应用程序的信息),并且您的数据是您想要请求的PGN时。

您不必请求地址声明PGN,您只需发送地址声明,并将源地址设置为您想要声明的地址。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41747989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档