Python-can库的使用(1)——简介与安装

本文介绍了python-can库,一个用于Python编程的CAN接口支持库,它提供了发送和接收CAN消息、硬件兼容性、记录回放、高级过滤和网络抽象等功能。文章详细讲解了安装步骤,涉及不同操作系统的依赖项,以及开发模式下的使用方法。
摘要由CSDN通过智能技术生成

🙆‍♂️我是纯良思安,爱技术、爱分享,更爱生活🙆‍♂️

💖喜欢的朋友可以关注一下,下次更新不迷路💖


文章目录

1、简介

1.1 主要功能

1.2 官方库文档描述

2、安装

2.1、GNU/Linux 依赖项

2.2、Windows 依赖项

Kvaser

PCAN

IXXAT

NI-CAN

neoVI

Vector

CANtact

CanViewer

在开发模式下安装Python-can


前言

  python-can是一个Python库,用于提供Controller Area Network (CAN)接口的支持,允许Python脚本与CAN网络进行交互。它是一个开源库,旨在使得与CAN设备和网络通信变得简单易行。CAN是一种广泛使用的、低成本、高可靠性的网络协议,常见于汽车电子、工业自动化以及其他需要电子设备之间进行可靠通信的领域。

1、简介

1.1 主要功能

  1. 发送和接收CAN消息:最基本的功能是能够在CAN网络上发送和接收数据包。python-can提供了简单的API来执行这些操作,无论是简单的消息传递还是更复杂的基于事件的消息处理。

  2. 多种硬件支持python-can支持多种CAN接口硬件,包括但不限于SocketCAN(Linux上的原生CAN驱动)、PCAN、Vector CAN设备等。这意味着你可以使用相同的库代码与不同的硬件通信。

  3. 记录和回放CAN消息python-can可以记录CAN总线上的通信,并将其保存到日志文件中(例如BLF、ASC、CSV格式)。这对于调试、分析通信问题或者测试非常有用。同样,它也支持从这些文件中回放消息到CAN网络。

  4. 高级消息过滤python-can允许对传入的消息进行过滤,这样应用程序只需要处理感兴趣的消息。这对于减少不必要的处理和提高效率非常有帮助。

  5. 网络抽象和模拟:除了真实的硬件通信外,python-can还提供了网络抽象层,允许创建虚拟的CAN网络,以便于开发和测试,而不需要实际的硬件设备。

  6. 跨平台:尽管某些特定的硬件接口或功能可能依赖于操作系统,但python-can本身旨在跨平台运行,支持Linux、Windows、macOS等。

  7. 丰富的文档和社区支持:作为一个活跃的开源项目,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

下载并安装最新驱动程序: 

请注意,PCANBasic API时间戳从系统启动开始计算秒数。要将这些时间转换为epoch时间,将使用正常运行时间库。如果不可用,则以系统启动后的秒数返回时间。要安装正常运行时间库,请运行.pip install python-can[pcan]

如果安装了 Python for Windows Extensions库,则此库可以利用该库。它将用于获得新消息的通知,而不是使用CPU密集型轮询。

IXXAT

NI-CAN

  •  下载并安装National Instruments
  • 需要注意的是,目前该驱动程序仅支持Windows上的32位Python

neoVI

Vector

要使用XL驱动程序库作为后端安装python-can 

  1. 安装Vector硬件接口的最新驱动 
  2. 安装XL驱动程序库XL Driver Library ,或复制vxlapi.dllvxlapi64.dll到您的工作目录中
  3. 使用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 developersicon-default.png?t=N7T8https://github.com/hardbyte/python-can

python setup.py develop


🎈如果文章对您有帮助,您可以“点赞、收藏、关注”,这也是我创作动力的源泉🎈
💘感谢支持💘

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值