找回密码
 会员注册
查看: 35|回复: 0

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

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
73243
发表于 2024-9-4 15:09:14 | 显示全部楼层 |阅读模式
🙆‍♂️我是纯良思安,爱技术、爱分享,更爱生活🙆‍♂️💖喜欢的朋友可以关注一下,下次更新不迷路💖文章目录1、简介1.1主要功能1.2官方库文档描述2、安装2.1、GNU/Linux依赖项2.2、Windows依赖项KvaserPCANIXXATNI-CANneoVIVectorCANtactCanViewer在开发模式下安装Python-can前言  python-can是一个Python库,用于提供ControllerAreaNetwork(CAN)接口的支持,允许Python脚本与CAN网络进行交互。它是一个开源库,旨在使得与CAN设备和网络通信变得简单易行。CAN是一种广泛使用的、低成本、高可靠性的网络协议,常见于汽车电子、工业自动化以及其他需要电子设备之间进行可靠通信的领域。1、简介1.1主要功能发送和接收CAN消息:最基本的功能是能够在CAN网络上发送和接收数据包。python-can提供了简单的API来执行这些操作,无论是简单的消息传递还是更复杂的基于事件的消息处理。多种硬件支持:python-can支持多种CAN接口硬件,包括但不限于SocketCAN(Linux上的原生CAN驱动)、PCAN、VectorCAN设备等。这意味着你可以使用相同的库代码与不同的硬件通信。记录和回放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-can4.3.1documentation根据文档描述:pythoncan库为python提供控制器局域网支持,为不同的硬件设备提供通用抽象,以及一套用于在can总线上发送和接收消息的实用程序。python可以在任何python运行的地方运行;从具有商用CAN的高功率计算机到USB设备,再到运行linux的低功率设备,如BeagleBone或RaspberryPi。被动记录CAN总线上发生的情况。例如,使用OBD-II端口监控商用车辆。测试通过CAN交互的硬件。在现代汽车、摩托车、船只甚至轮椅中发现的模块已经使用这个库从Python中测试了组件。在回路中对新的硬件模块或软件算法进行原型设计。轻松与现有总线交互。创建虚拟模块以原型CAN总线通信。下面是一个简单的示例,用于使用python-can发送单帧报文到总线:#!/usr/bin/envpython"""Thisexampleshowshowsendingasinglemessageworks."""importcandefsend_one():"""Sendsasinglemessage."""#thisusesthedefaultconfiguration(forexamplefromtheconfigfile)#seehttps://python-can.readthedocs.io/en/stable/configuration.htmlwithcan.Bus()asbus:#Usingspecificbusesworkssimilar:#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"Messagesenton{bus.channel_info}")exceptcan.CanError:print("MessageNOTsent")if__name__=="__main__":send_one()2、安装可以直接使用pipinstall进行安装:$pipinstallpython-can如果你希望与某些硬件连接,可能还必须安装平台依赖项。许多接口可以与python同时安装它们的依赖项,例如接口serial包括pyserial依赖项,该依赖项可以与serialextra一起安装:$pipinstallpython-can[serial]2.1、GNU/Linux依赖项合理地说,目前的Linux内核(2.6.25或更新版本)具有socketcan的实现。如果使用python3.3或更高版本调用此版本的pythoncan,将直接使用socketcan,否则该接口将通过ctypes使用。2.2、Windows依赖项Kvaser使用KvaserCANLibSDK作为后端进行安装python-can安装Kvaser最新的WindowsCANLib驱动程序:Kvaser’slatestWindowsCANLibdrivers.测试Kvaser自己的工具是否正常工作,以确保驱动程序安装正确,硬件是否正常工作。PCAN下载并安装最新驱动程序: Windows (alsosupportedon Cygwin)Linux (alsoworkswithout,seealso Linuxinstallation)macOS请注意,PCANBasicAPI时间戳从系统启动开始计算秒数。要将这些时间转换为epoch时间,将使用正常运行时间库。如果不可用,则以系统启动后的秒数返回时间。要安装正常运行时间库,请运行.pip install python-can[pcan]如果安装了 ythonforWindowsExtensions库,则此库可以利用该库。它将用于获得新消息的通知,而不是使用CPU密集型轮询。IXXAT要使用IXXATVCIV3或V4SDK作为后端进行安装:python可以安装IXXAT’slatestWindowsVCIV3SDKorVCIV4SDK(Win10)drivers 驱动程序。测试IXXAT自己的工具(即MiniMon)是否正常工作,以确保驱动程序安装正确,硬件是否正常工作。NI-CAN 下载并安装NationalInstruments需要注意的是,目前该驱动程序仅支持Windows上的32位PythonneoVI查看IntrepidControlSystemsneoVI. Vector要使用XL驱动程序库作为后端安装python-can 安装Vector硬件接口的最新驱动 安装XL驱动程序库XLDriverLibrary ,或复制vxlapi.dll和vxlapi64.dll到您的工作目录中使用VectorHardwareConfiguration给你的应用程序分配通道CANtactCANtact支持Linux、Windows和macOS。要使用CANtact驱动程序作为后端安装python可-can:python3-mpipinstall"python-can[cantact]"如果已经安装,则可以单独安装CANtact后端pipinstallcantact更多CANtact相关文档,可以查看 cantact.ioCanViewerpython-can支持运行python -m can.viewer显示一个简单的CANviewer终端应用程序。在Windows上,这取决于Windowscurses库,该库可以通过以下方式安装:python-mpipinstall"python-can[viewer]"在开发模式下安装Python-can此软件包的“开发”安装允许你在本地进行更改或从Git存储库中拉取更新并使用它们,而无需重新安装。下载或克隆源存储库,然后:GitHub-hardbyte/python-can:ThecanpackageprovidescontrollerareanetworksupportforPythondevelopershttps://github.com/hardbyte/python-canpythonsetup.pydevelop🎈如果文章对您有帮助,您可以“点赞、收藏、关注”,这也是我创作动力的源泉🎈💘感谢支持💘
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-12 20:40 , Processed in 0.936334 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表