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

news2024/12/23 13:42:45

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接口的,需要通过几部操作让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端口。

在这里插入图片描述

  • 此时可利用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的分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASSY 11994R13PLC模块

可编程性: PLC模块可以通过编程进行定制,以执行特定的控制逻辑和功能。这种可编程性使其非常灵活,可以适应各种应用。 输入/输出(I/O): PLC模块通常具有数字输入和输出,以接收和发送信号。某些…

喜报|星瑞格荣获“2022-2023年度国产数据库应用优秀解决方案”奖项

近日,赛迪网为表彰数字赛道上的先行者,联合《数字经济》杂志社和北京科创互联,共同组织以“树立行业标杆,引领服务创新”为中心的“2022-2023年度产业数字服务案例及创新成果征集活动”。该活动旨在鼓励各行业数字化应用技术创新树…

【ag-grid-vue】列定义(Updating Column Definitions)

列定义一节解释了如何配置列。可以在初始设置列之后更改列的配置。本节介绍如何更新列定义。 添加和删除列 可以通过更新提供给网格的列定义列表来添加和删除列。当设置新列时,网格将与当前列进行比较,并计算出哪些列是旧的(要删除)、哪些列是新的(创建…

增加samba用户提示Failed to add entry for user

这个问题我在CSDN上搜到了很多文章,而且都差不多,一开始并没有解决我的问题,不太理解怎么做,经过多次尝试,最后解决了。记录一下具体操作步骤。 第一个是要配置/etc/samba/smb.conf 文件,在文件最后&#x…

技术漫谈第10期 | “百模大战”:向着行业更深处

自21世纪初以来,人工智能(AI)已经从科幻小说中的概念成长为现实生活中的重要工具。从符号推理到弱人工智能再到大规模深度学习模型,人工智能已经进入大模型时代的新阶段,是科技竞争的制高点,即将改变千行百…

手把手教你安装Git,萌新迈向专业的必备一步

手把手教你安装Git,萌新迈向专业的必备一步 一、版本控制系统是什么?1. 倒霉的小明2. 版本控制系统3. 常见的版本控制系统 二、GitLab 与 GitHub1. GitLab2. GitHub 三、Git安装1. 下载2. 安装3. 验证 四、初学使用1. 本地仓库2. 远程仓库-Github3. 远程…

关于安防视频汇聚平台EasyCVR视频平台的分析以及应用用途

为了保证对园区环境风险进行有效识别,传统视频监控存在视频结构化利用率低的问题,在实际使用过程中,安全管理人员工作效率低下,依靠人工肉眼查看灵活度低,风险漏报概率高,出现异常情况跟踪不及时&#xff0…

post为什么会发送两次请求

今天看掘金的文章,京东面试问了这个问题,我也处于好奇,想了解这块的内容所以做了以下的来了解: 请求是一对请求,有一次请求是预请求(预检请求),它的请求方式是options 火狐浏览器可…

long型的时间戳自动转化为字符串

1、自定义序列化类 import com.fasterxml.jackson.databind.annotation.JacksonStdImpl; import com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase;JacksonStdImpl public class ToDateStringSerializer extends ToStringSerializerBase {public ToDateStringS…

AP9234 9W升压恒流型 DCDC多串LED恒流驱动 2串3串 LED灯串

描述 AP9234是一款由基准电压源、振荡电路、误差放大电路、相位补偿电路、电流限制电路等构成的CMOS升压型DC/DC LED驱动。由于内置了低导通电阻的增强型N沟道功率MOSFET,因此适用于需要高效率、高输出电流的应用电路。另外,可通过在VSENSE端子连接电流…

SpringBoot扩展接口总结

SpringBoot 扩展接口 1、可扩展接口启动调用概述2、可扩展的点逐个说明2.1、ApplicationContextInitializer2.2、BeanDefinitionRegistryPostProcessor2.3、BeanFactoryPostProcessor2.4、InstantiationAwareBeanPostProcessor2.5、SmartInstantiationAwareBeanPostProcessor2.…

【Docker 】Docker 客户端,容器使用,启动容器,启动已停止运行的容器,停止一个容器,进入容器

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

刘强东的低价武器再上膛

电商的光辉正撒向中国的每一个角落。 河北南部的一个村子,74岁的陈奶奶站在大门口,正等待着小哥送货上门,孤身在家的她平时吃的油盐酱醋,喝的奶粉豆浆,都由女儿崔丽丽在网上买。由于京东是村子里唯二可以上门的快递&a…

C++学习|CUDA安装和配置

CUDA安装和配置 Windows下安装CUDAVS项目配置CUDA Windows下安装CUDA 第一步:先看自己NIVIDIA显卡适合什么版本的CUDA。打开电脑的“NIVIDIA控制面板”->系统信息->组件。会看到我的显卡驱动最高支持的CUDA版本是11.4.56。 第二步:去CUDA官网&…

电脑固定资产管理系统

为了更好地管理固定资产,系统管理员划分了相应的用户使用权限。各级管理者在系统中拥有不同的权限,这些权限能够帮助他们更好地查看和管理其管辖的固定资产。 从基层管理者到高级管理者,每一级别的管理者都能够获得相应的授权和管理权…

将Spring boot 项目部署到tomcat服务艰难

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z X Y Z

SVN 集中式版本管理平台

1. SVN 命令行工具下载地址 https://www.visualsvn.com/downloads/ 2. 下载SVN 命令行工具后,解压后就可以了,不需要安装的 3. 将bin 文件添加到系统环境变量中,不知道怎么打开系统环境变量的自己问度娘 4. 添加到系统环境变量中,…

Scala入门,idea关联Scala

Scala 介绍 Scala是一种多规范的编程语言,它结合了面向对象编程(OOP)和函数式编程(FP)的特征,Scala的名字源于”Scalable language“,意为”可伸缩语言“。2003年开发的,并在JVM&a…

计算机网络高频面试题解(三)

23. 流量控制 24. 粘包、拆包问题 25. TCP如何解决粘包、拆包问题 26. UDP如何实现TCP可靠传输 27. IP协议 28. IP的两大功能 29. 为什么IP要采用面向无连接? 30. IP地址(IPv4地址) 31. IP地址的分类 32. 广播地址

Linux防火墙,可以防护什么?和常用的命令和各种日常使用(个人笔记)

文章目录 防火墙开启默认是否可以ping通http涉及端口的服务(默认无法连接)参考文档 防火墙开启默认是否可以ping通 可以的,并不会防护icmp类型的访问,但是会拦截http类型的访问查看ipifconfig查看防火墙状态 systemctl status fi…