python-can介绍

文章目录

  • 1、Python-CAN基本
  • 2、安装pyhton-can
  • 3、配置

写在前面:
########2021-06-23-上午########

  • 今天上午想试一下在电脑上跑一下官方文档的示例代码,但是没有成功
  • 然后,我就想是不是因为电脑没有can口,才导致失败的
  • 然后,我又在AGX控制器上跑示例代码,还是没有成功
  • 所以,我猜测,应该是和平台没关系的,可能是我某个东西没有配置好的原因。

1、Python-CAN基本

python-can 库为 Python 提供控制器局域网支持,为不同的硬件设备提供通用抽象,以及一套用于在 CAN 总线上发送和接收消息的实用程序。

python-can 可以在任何 Python 运行的地方运行; 从 CAN 的高功率计算机到 USB 设备,再到运行 linux 的低功率设备,例如 BeagleBone 或 RaspberryPi。

更具体地说,该库的一些示例用途:

  • 被动记录 CAN 总线上发生的情况。 例如,使用 OBD-II 端口监控商用车辆。
  • 测试通过 CAN 交互的硬件。 在现代汽车、摩托车、船只甚至轮椅中发现的模块已经使用这个库从 Python 中测试了组件。
  • 在回路中对新的硬件模块或软件算法进行原型设计。 轻松与现有总线交互。
  • 创建虚拟模块以原型 CAN 总线通信。

运行中的库的简要示例:连接到 CAN 总线,创建和发送消息:

#!/usr/bin/env python
# coding: utf-8

"""
This example shows how sending a single message works.
"""

from __future__ import print_function

import can

def send_one():

    # this uses the default configuration (for example from the config file)
    # see https://python-can.readthedocs.io/en/stable/configuration.html
    bus = can.interface.Bus()

    # Using specific buses works similar:
    # bus = can.interface.Bus(bustype='socketcan', channel='vcan0', bitrate=250000)
    # bus = can.interface.Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=250000)
    # bus = can.interface.Bus(bustype='ixxat', channel=0, bitrate=250000)
    # bus = can.interface.Bus(bustype='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("Message sent on {}".format(bus.channel_info))
    except can.CanError:
        print("Message NOT sent")

if __name__ == '__main__':
    send_one()

2、安装pyhton-can

安装python-can的指令:

pip install python-can

Linux 内核(2.6.25 或更新版本)具有 socketcan 的实现。 如果使用 Python 3.3 或更高版本调用,此版本的 python-can 将直接使用 socketcan,否则通过 ctypes 使用该接口。

3、配置

通常这个库与特定的 CAN 接口一起使用,这可以在代码中指定,从配置文件或环境变量中读取。

你可能感兴趣的:(python-can介绍)