如何接收使用鸭式库的python发送的CAN帧?

2024-09-23 22:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用CANtact工具包发送和接收can帧,我使用的代码是由CANtact工具包的创始人Eric Evenchick编写的。所有的代码行都执行得没有任何错误,但是当我给出frame=dev.recv()时,光标移到下一行,并且没有显示任何结果我在哪里可以找到结果或者我犯了任何错误? 我附上了我的终端截图。你知道吗

from canard import can
from canard.hw import socketcan
dev = socketcan.SocketCanDev("slcan0") #slcan0 refers to the CANtact kit i have connected
dev.start()
frame = can.Frame(id=0x100)
frame.dlc = 8
frame.data = [1,2,3,4,5,6,7,8]
dev.send(frame)
frame = dev.recv()
print(frame)

screenshot of the program executed in python3using two devices


Tags: 代码fromdevimport工具包错误framecan
1条回答
网友
1楼 · 发布于 2024-09-23 22:25:30

默认情况下,CAN套接字不接收它们自己发送的帧。反正也没什么意义。有两种情况是合理的:

  • 您所拥有的代码,但是总线上连接的另一个设备/进程将对您发送的消息做出反应,因此dev.recv()接收该反应。

  • 有两个进程,一个做dev.send(),另一个做dev.recv()。后者应该首先启动,因此它已经在侦听帧的发送时间(进程确实看到了从运行它们的同一设备发送的帧,而不是它们自己发送的帧)。

相关问题 更多 >