我正在使用CANtact工具包来发送和接收罐框架,我使用了以下代码,该代码由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)
答案 0 :(得分:0)
默认情况下,CAN套接字不接收它们自己发送的帧。无论如何,这毫无意义。有两种情况有意义:
所具有的代码,但是连接到总线上的另一个设备/进程将对您发送的消息进行反应,因此dev.recv()
会收到该响应。
具有两个过程,一个过程执行dev.send()
,另一个过程执行dev.recv()
。后者应该首先开始,因此发送帧时它已经在侦听(进程确实看到了从运行它们的同一设备发送的帧,而不是从它们自己发送的帧发送的消息。)