python - Python CAN isotp 套接字未接收数据,但接收到了 candump
问题描述
我正在尝试将 Pican3+Raspberry Pi 4(设备 1)与我的笔记本电脑(设备 2)中的独木舟进行通信。我在树莓派中使用 python can isotp 模块。我能够将我的树莓派代码中的数据发送到独木舟,但无法接收从独木舟发送到树莓派到我在 python 代码中创建的 isotp.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 和标准罐框架。据我了解,套接字已绑定以从 can0 通道接收 ID 为 701 的消息。我错过了什么吗?附上canoe和raspberry的candump的消息截图,请看。
解决方案
代码中没有问题,并且工作正常。问题出在另一端,我试图将 CAN 帧从笔记本电脑中的 Canoe 发送到 PICAN。该帧不是按照 ISO TP 格式创建的,因为 raspberry pi linux 中的 iso tp 层无法处理它。一旦我按照 isotp 制定了 CAN 帧,在代码中创建的套接字就会接收和处理数据。有关 ISO TP 协议的更多信息,请查看https://www.emotive.de/wiki/index.php?title=ISOTP
推荐阅读
- amazon-web-services - 实时获取预签名 URL 的带宽使用情况?
- java - getResourceAsStream() 在 Eclipse 中工作正常,但在 jar 中失败
- reactjs - 引导程序不适用于 React
- python - Python 套接字 OSError
- c - 为什么在许多驱动程序上,函数的返回值是用变量处理的?
- python - 如何在熊猫中添加具有特定列计算的行
- sql - 获取状态更改的最小值和最大值
- java - Eclipse 内容辅助不显示方法描述
- docker - 如何访问 docker-compose 中的所有 nginx 日志?
- c# - Xamarin - 将用户名从登录绑定到工具栏项