我是在虚拟机中用VSCode配置anaconda环境,并利用anaconda创建的虚拟环境(python38:是python3.8版本)
1、首先进入python虚拟环境(pyhton38)
- 首先进入python虚拟环境(pyhton38)
pip list 查看目前的虚拟环境python38安装的库
2. 创建一个文件夹pyCanopen,
下面的操作都在这个文件夹下执行。
mkdir pyCanopen
3. 安装virtualenv库,并创建python项目环境
这个库可以为各项目提供一个独立的虚拟运行环境,互不干扰。
pip install virtualenv
//创建python项目的虚拟环境,命名为venv
virtualenv venv
激活项目环境
source venv/bin/activate
4. 安装canopen库
pip install canopen
查看安装的库
5. 创建一个虚拟can设备,叫vcan0
$ sudo modprobe vcan //加载vcan模块
$ sudo ip link add dev vcan0 type vcan //添加vcan0网卡
$ sudo ip link set up vcan0 //开启vcan0
查看vcan0
ifconfig -a
sudo ip link set dev can0 down //关闭can0
sudo ip link del dev can0 //删除can0
6. CAN 通信测试工具 canutils
6.1. 安装can-utils can-utils工具有5个独立的程序:
- canconfig:
用于配置CAN总线接口的参数,主要是波特率和模式; - candump:
从CAN总线接口接收到的所有数据重新发送到CAN总线接口; - canecho:
把CAN总线接口接收到的所有数据重新发送到CAN总线接口; - cansend:
往指定的CAN总线接口发送指定的数据; - cansequence:
往指定的CAN总线接口自动重复递增数字,也可以指定接收模式并校验检查接收的递增数字。
sudo apt-get install can-utils
//监控van0
candump -t d vcan0
7. 写一个test代码
其中用到的CANopenSocket.eds,可以找下下载下来,放到代码同一目录中。
import time
import canopen
running = True
if __name__ == '__main__':
network = canopen.Network()
network.connect(bustype = 'socketcan', channel = 'vcan0')
node = network.create_node(6, 'CANopenSocket.eds')
node.nmt.send_command(0)
node.nmt.state = 'PRE-OPERATIONAL'
node.nmt.start_heartbeat=(1000)
while running:
print("hello")
pass
|