Python CAN isotp 套接字未接收数据但接收到 candump

Python CAN isotp socket is not receiving data but the candump is received

我正在尝试用笔记本电脑(设备 2)中的独木舟与 Pican3+Raspberry Pi 4(设备 1)进行通信。我在 raspberry pi 中使用 python can isotp 模块。我可以将数据从 raspberry pi 中的代码发送到 canoe,但无法接收从 Canoe 发送到 raspberryPi 到我在 python 代码中创建的 isotp.socket 的数据。但是数据是在raspberry pi端收到的,用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 的消息。我错过了什么吗? 附上canoe和raspberry的candump消息截图,请看

Screenshot of canoe in my laptop

Screenshot of candump in raspberry pi 4

代码没有问题,工作正常。问题出在另一端,我试图将笔记本电脑中 Canoe 的 CAN 帧发送到 PICAN。该帧不是按照 ISO TP 格式创建的,因为 raspberry pi linux 中的 iso tp 层无法处理它。一旦我按照 isotp 制定了 CAN 框架,就会按照代码接收和处理数据创建套接字。 有关 ISO TP 协议的更多信息,请查看 https://www.emotive.de/wiki/index.php?title=ISOTP