发送和接收CAN消息的简单消费者生产者示例不接收消息

问题描述

我只是想在Linux和python-can模块下使用虚拟can设备vcan0来熟悉CAN总线上的编程和调试。

我设计了一个具有两个线程的简单程序,其中一个线程应该产生can消息,而另一个线程应该消耗。不幸的是,使用者线程没有消耗任何一条消息,我对此感到有些困惑。

import can
import time
import threading

bus=can.interface.Bus(bustype='socketcan',channel='vcan0')

def producer():
    for i in range(10):
       msgProduced=can.Message(0.,20,data=[0,1,2,3])
       bus.send(msgProduced)
 
def consumer():
    for i in range(10):
       msgRecv=bus.recv(timeout=0.1)
       print(msgRecv)

producerThread=threading.Thread(target=producer)
consumerThread=threading.Thread(target=consumer)
producerThread.start()
consumerThread.start()
producerThread.join()
consumerThread.join()

bus.shutdown()

安装虚拟can设备驱动程序后,设置vcan0接口很容易:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)