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

Linux 发送和接收CAN消息的简单消费者-生产者示例不接收消息,linux,multithreading,python-multithreading,can-bus,python-can,Linux,Multithreading,Python Multithreading,Can Bus,Python Can,我只是尝试在linux和python can模块下使用虚拟can设备vcan0来熟悉can总线上的编程和调试 我设计了一个具有两个线程的外观简单的程序,其中一个线程应该生成can消息,而另一个线程应该使用这些消息。不幸的是,消费者线程没有消费一条消息,对此我有点莫名其妙 导入可以 导入时间 导入线程 总线=can.interface.bus(bustype='socketcan',channel='vcan0') def生产者(): 对于范围(10)内的i: msgProduced=can.Me

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

我设计了一个具有两个线程的外观简单的程序,其中一个线程应该生成can消息,而另一个线程应该使用这些消息。不幸的是,消费者线程没有消费一条消息,对此我有点莫名其妙

导入可以
导入时间
导入线程
总线=can.interface.bus(bustype='socketcan',channel='vcan0')
def生产者():
对于范围(10)内的i:
msgProduced=can.Message(0,20,数据=[0,1,2,3])
总线发送(msgProduced)
def consumer():
对于范围(10)内的i:
msgRecv=bus.recv(超时=0.1)
打印(msgRecv)
producerThread=threading.Thread(target=producer)
consumerThread=threading.Thread(目标=consumer)
producerThread.start()
consumerThread.start()
producerThread.join()
consumerThread.join()
总线关闭()
安装虚拟can设备驱动程序后,设置vcan0接口很容易:

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

默认情况下,SocketCAN总线发送的CAN帧不会被该总线接收。要实现此功能,请在创建总线时将
receive_own_messages
参数设置为
True
。看