我正在使用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)
默认情况下,CAN套接字不接收它们自己发送的帧。反正也没什么意义。有两种情况是合理的:
您所拥有的代码,但是总线上连接的另一个设备/进程将对您发送的消息做出反应,因此
dev.recv()
接收该反应。有两个进程,一个做
dev.send()
,另一个做dev.recv()
。后者应该首先启动,因此它已经在侦听帧的发送时间(进程确实看到了从运行它们的同一设备发送的帧,而不是它们自己发送的帧)。相关问题 更多 >
编程相关推荐