我正试图在我的笔记本电脑(设备2)中与独木舟通信Pican3+Raspberry Pi 4(设备1)。我在Raspberry Pi中使用python can isotp模块。我能够从树莓派中的代码发送数据到独木舟,但无法接收从独木舟到树莓派到isotp的数据。我在python代码中创建的socket。但数据是在树莓派端接收到的,用candump验证。下面是使用的代码:
import isotp
s = isotp.socket()
s.bind("can0", isotp.Address(rxid=0x701, txid=0x708))
s.send(b'a')
while True:
da = s.recv()
if da is not None:
print('here')
print(da)
从canoe发送的消息具有消息ID 701和标准can帧。在我的理解中,套接字被绑定以接收来自can0通道的ID 701的消息。我错过什么了吗?在独木舟和树莓的candump中组成的信息的截图已附上,请查看。
笔记本上独木舟的截图
树莓派4的candump截图
代码中没有问题,并且工作正常。问题是在另一端,我试图发送CAN帧从独木舟在我的笔记本电脑到PICAN。帧不是按照ISO TP格式创建的,因为树莓派linux中的ISO TP层无法处理它。一旦我按照isotp制定了CAN帧,套接字就像在代码中创建的那样接收和处理数据。有关ISOTP协议的更多信息,请查看https://www.emotive.de/wiki/index.php?title=ISOTP