CAN接口:Ubuntu系统下CAN接口使用python调用过程

CAN接口:Ubuntu系统下CAN接口使用python调用过程

介绍在Ubuntu系统中通过python程序使用CAN接口。

1. 使用平台

NVIDIA小型边缘设备NX,(Orin NX和Xavier NX都可以),系统采用Ubuntu,(18.04版本和20.04版本都可以),目的是通过python程序调用CAN接口接收数据。

2. 准备工作

  • 首先使用命令查看是否有CAN接口
ifconfig -a

CAN接口:Ubuntu系统下CAN接口使用python调用过程_第1张图片

说明现在是没有办法使用CAN接口的,需要通过几部操作让CAN接口显示出来。

  • 在~/下添加 .canrc文件,创建一次即可
    指令:sudo vi ~/.canrc
    在里面填写如下信息
[default]
interface = socketcan
channel = can0

然后创建脚本cantest.sh,在脚本中添加以下内容,该脚本在每次开机时需要启动,然后才可以显示CAN端口。

sudo busybox devmem 0x0c303000 32 0x0000C400
sudo busybox devmem 0x0c303008 32 0x0000C458
sudo busybox devmem 0x0C303010 32 0x0000C400
sudo busybox devmem 0x0c303018 32 0x0000C458

sudo modprobe can
sudo modprobe can_raw
sudo modprobe can_dev
sudo modprobe mttcan

再次运行指令,ifconfig -a可以看到出现CAN端口。

CAN接口:Ubuntu系统下CAN接口使用python调用过程_第2张图片

  • 此时可利用candump进行CAN端口的测试过程。同时CAN接口的操作过程在终端中可以通过类似操作网口的方式操作。
ip link set can0 down   
ip link set can0 type can bitrate 250000 loopback off
ip link set can0 up

上面的代码分别为设置关闭CAN0,设置CAN0参数250k波特率,设置打开CAN0

2. python 所需库

  • canlib
    通过指令
pip install canlib

安装,然后在程序中通过import canlib导入。
相关的使用文档

  • can
    通过指令
pip install python-can

安装,然后在程序中通过import can导入。
相关的使用文档和文档,这都是官方的文档,讲述的比较全面。

在头一次使用的过程中,在运行python程序会出现无法找到libcanlib.so文件的情况,需要首先现在linuxcan文件,然后对文件进行解压,在解压后的目录中打开终端运行,不方便寻找的可以利用下面的下载地址进行下载。

sudo make
sudo make install

此过程会安装上相应的库文件,这时再次运行自己的python程序就不会出现找不到libcanlib.so文件的情况。

3. 注意事项

在python中使用CAN接口的过程中有需要注意的两点。

  • 使用CAN,而不使用canlib,
    这两个库是存在差别的,python-can是Linux下的通用CAN库,
    canlib库是支持很多的USBCAN和虚拟CAN的库,这个和安装Linuxcan是对应的,但是在安装的过程中,通过打印信息可以看到,把SocketCAN加入进了黑名单,所以不能通过canlib调用socketCAN接口,使用过程中会出现在终端中用candump测试没有问题,但是python程序找不到CAN通道。
  • 多使用candump指令在终端中进行测试。
  • 关于socketCAN和Linuxcan的区别在Kvaser的一篇文章中有说明,可以参考。

4. LinuxCAN下载地址

可以利用下面的百度网盘进行下载。
链接:https://pan.baidu.com/s/1AAkmfpfcb4_sx8RdoC0vLg
提取码:lf1v
–来自百度网盘超级会员V5的分享

你可能感兴趣的:(问题经验分享,ubuntu,python,linux,CAN接口,canlib)