首页 > Python资料 博客日记
Python-can库的使用(1)——简介与安装
2024-07-09 06:00:05Python资料围观361次
🙆♂️我是纯良思安,爱技术、爱分享,更爱生活🙆♂️
💖喜欢的朋友可以关注一下,下次更新不迷路💖
文章目录
前言
python-can
是一个Python库,用于提供Controller Area Network (CAN)接口的支持,允许Python脚本与CAN网络进行交互。它是一个开源库,旨在使得与CAN设备和网络通信变得简单易行。CAN是一种广泛使用的、低成本、高可靠性的网络协议,常见于汽车电子、工业自动化以及其他需要电子设备之间进行可靠通信的领域。
1、简介
1.1 主要功能
-
发送和接收CAN消息:最基本的功能是能够在CAN网络上发送和接收数据包。
python-can
提供了简单的API来执行这些操作,无论是简单的消息传递还是更复杂的基于事件的消息处理。 -
多种硬件支持:
python-can
支持多种CAN接口硬件,包括但不限于SocketCAN(Linux上的原生CAN驱动)、PCAN、Vector CAN设备等。这意味着你可以使用相同的库代码与不同的硬件通信。 -
记录和回放CAN消息:
python-can
可以记录CAN总线上的通信,并将其保存到日志文件中(例如BLF、ASC、CSV格式)。这对于调试、分析通信问题或者测试非常有用。同样,它也支持从这些文件中回放消息到CAN网络。 -
高级消息过滤:
python-can
允许对传入的消息进行过滤,这样应用程序只需要处理感兴趣的消息。这对于减少不必要的处理和提高效率非常有帮助。 -
网络抽象和模拟:除了真实的硬件通信外,
python-can
还提供了网络抽象层,允许创建虚拟的CAN网络,以便于开发和测试,而不需要实际的硬件设备。 -
跨平台:尽管某些特定的硬件接口或功能可能依赖于操作系统,但
python-can
本身旨在跨平台运行,支持Linux、Windows、macOS等。 -
丰富的文档和社区支持:作为一个活跃的开源项目,
python-can
拥有详细的文档和一个活跃的社区,这对于解决问题和学习如何有效使用库非常有帮助。
1.2 官方库文档描述
官方python-can库文档链接如下:
python-can 4.3.1 documentation
根据文档描述:
python can库为python提供控制器局域网支持,为不同的硬件设备提供通用抽象,以及一套用于在can总线上发送和接收消息的实用程序。
python可以在任何python运行的地方运行;从具有商用CAN的高功率计算机到USB设备,再到运行linux的低功率设备,如BeagleBone或RaspberryPi。
- 被动记录 CAN 总线上发生的情况。 例如,使用 OBD-II 端口监控商用车辆。
- 测试通过 CAN 交互的硬件。 在现代汽车、摩托车、船只甚至轮椅中发现的模块已经使用这个库从 Python 中测试了组件。
- 在回路中对新的硬件模块或软件算法进行原型设计。 轻松与现有总线交互。
- 创建虚拟模块以原型 CAN 总线通信。
下面是一个简单的示例,用于使用python-can发送单帧报文到总线:
#!/usr/bin/env python
"""
This example shows how sending a single message works.
"""
import can
def send_one():
"""Sends a single message."""
# this uses the default configuration (for example from the config file)
# see https://python-can.readthedocs.io/en/stable/configuration.html
with can.Bus() as bus:
# Using specific buses works similar:
# bus = can.Bus(interface='socketcan', channel='vcan0', bitrate=250000)
# bus = can.Bus(interface='pcan', channel='PCAN_USBBUS1', bitrate=250000)
# bus = can.Bus(interface='ixxat', channel=0, bitrate=250000)
# bus = can.Bus(interface='vector', app_name='CANalyzer', channel=0, bitrate=250000)
# ...
msg = can.Message(
arbitration_id=0xC0FFEE, data=[0, 25, 0, 1, 3, 1, 4, 1], is_extended_id=True
)
try:
bus.send(msg)
print(f"Message sent on {bus.channel_info}")
except can.CanError:
print("Message NOT sent")
if __name__ == "__main__":
send_one()
2、安装
可以直接使用pip install进行安装:
$ pip install python-can
如果你希望与某些硬件连接,可能还必须安装平台依赖项。许多接口可以与python同时安装它们的依赖项,例如接口serial包括pyserial依赖项,该依赖项可以与serial extra一起安装:
$ pip install python-can[serial]
2.1、GNU/Linux 依赖项
合理地说,目前的Linux内核(2.6.25或更新版本)具有socketcan的实现。如果使用python 3.3或更高版本调用此版本的python can,将直接使用socketcan,否则该接口将通过ctypes使用。
2.2、Windows 依赖项
Kvaser
- 使用Kvaser CANLib SDK作为后端进行安装 python-can
- 安装Kvaser最新的Windows CANLib驱动程序:Kvaser’s latest Windows CANLib drivers.
- 测试Kvaser自己的工具是否正常工作,以确保驱动程序安装正确,硬件是否正常工作。
PCAN
下载并安装最新驱动程序:
- Windows (also supported on Cygwin)
- Linux (also works without, see also Linux installation)
- macOS
请注意,PCANBasic API时间戳从系统启动开始计算秒数。要将这些时间转换为epoch时间,将使用正常运行时间库。如果不可用,则以系统启动后的秒数返回时间。要安装正常运行时间库,请运行.pip install python-can[pcan]
如果安装了 Python for Windows Extensions库,则此库可以利用该库。它将用于获得新消息的通知,而不是使用CPU密集型轮询。
IXXAT
- 要使用IXXAT VCI V3或V4 SDK作为后端进行安装:python可以
- 安装IXXAT’s latest Windows VCI V3 SDK or VCI V4 SDK (Win10) drivers 驱动程序。
- 测试IXXAT自己的工具(即MiniMon)是否正常工作,以确保驱动程序安装正确,硬件是否正常工作。
NI-CAN
- 下载并安装National Instruments
- 需要注意的是,目前该驱动程序仅支持Windows上的32位Python
neoVI
Vector
要使用XL驱动程序库作为后端安装python-can
- 安装Vector硬件接口的最新驱动
- 安装XL驱动程序库XL Driver Library ,或复制
vxlapi.dll和
vxlapi64.dll
到您的工作目录中 - 使用Vector Hardware Configuration给你的应用程序分配通道
CANtact
CANtact支持Linux、Windows和macOS。要使用CANtact驱动程序作为后端安装python可-can:
python3 -m pip install "python-can[cantact]"
如果已经安装,则可以单独安装CANtact后端
pip install cantact
更多CANtact相关文档,可以查看 cantact.io
CanViewer
python-can支持运行python -m can.viewer显示一个简单的CAN viewer 终端应用程序。在Windows上,这取决于Windows curses库,该库可以通过以下方式安装:
python -m pip install "python-can[viewer]"
在开发模式下安装Python-can
此软件包的“开发”安装允许你在本地进行更改或从Git存储库中拉取更新并使用它们,而无需重新安装。下载或克隆源存储库,然后:GitHub - hardbyte/python-can: The can package provides controller area network support for Python developershttps://github.com/hardbyte/python-can
python setup.py develop
🎈如果文章对您有帮助,您可以“点赞、收藏、关注”,这也是我创作动力的源泉🎈
💘感谢支持💘
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程