当前位置:   article > 正文

使用Python玩转CAN通讯_python can 消息发送

python can 消息发送

上一篇文章中介绍了如何使用NXP生产的S32K118单片机实现CAN通讯。本文将在这个基础上使用Python实现对上文所述开发板的控制

1. 所用软件插件介绍

Python可以通过集成“Python-CAN”插件实现常见USB转CAN设备的驱动。如:Kvaser,SLCAN,PCAN, Vector等。本文使用的USB转CAN工具是在某宝上淘的SLCAN接口硬件。本文将以此展开介绍。

为了使用Python-CAN插件,首先需要通过如下命令安装:

pip install python-can
  • 1

2. Python—can基本收发语法

2.1 定义总线接口

Python-can总线接口类型通过如下语句定义。

总线名=can.interface.bus(channel=端口号, bustype=接口类型,bitrate=波特率)
  • 1

其中:
端口号:为计算机上使用的USB端口号。可以通过“计算机管理”窗口中查找到:
端口号从上图中可以看到此处使用的USB端口为COM6.

接口类型:指的是使用何种USB转CAN口设备。Python-CAN中接口类型与对应硬件关系如下:
接口类型 由于此处我们使用的是SLCAN所以接口类型就用slcan。

波特率:为以每秒传输位为单位的CAN速率设置。此处选用500Kbps,对应500000。

2.2 定义发送报文

Python上发送的报文采用如下格式定义:

报文名=can.Message(arbitration_id=帧ID,data=发送数据,is_extended_id=False/True)
  • 1

其中is_extended_id表示是否使用了大于11位的扩展帧ID。本文中的ID都没有超过11位,因此选择False。

2.3 收发报文

Python-CAN收发报文十分简单。

  • 发送报文用:send
总线名.send(报文名)
  • 1
  • 接收报文用:recv
总线名.recv()
  • 1

3. 实例

3.1 CAN协议:

500Kbps 通信速率。
开发板接到 ID=2的帧开灯。 接到ID=4的帧关灯。
开发板上按下按键后向Python发送ID=1的内容为:0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8的帧。

3.2 程序

import can

#定义总线
cantype='slcan'
ComNo='COM6'
bus=can.interface.Bus(channel=ComNo,bustype=cantype,bitrate=500000)

CANOrder=0
CANOrder=input("请输入指令,1:开灯,2:关灯,3 接收报文,0:退出")
while (CANOrder != "0"):
    if (CANOrder == "1"):
        TurnOnMsg=can.Message(arbitration_id=0x2,data=[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],is_extended_id=False)
        bus.send(TurnOnMsg)
        print(TurnOnMsg)
        CANOrder = input("请输入指令,1:开灯,2:关灯,3 接收报文,0:退出")
    if (CANOrder =="2"):
        TurnOffMsg=can.Message(arbitration_id=0x4,data=[0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0],is_extended_id=False)
        bus.send(TurnOffMsg)
        print(TurnOffMsg)
        CANOrder = input("请输入指令,1:开灯,2:关灯,3 接收报文,0:退出")
    if (CANOrder == "3"):
        while True:
            print( (bus.recv()))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3. 执行结果

运行结果# 后记
本文于2024.1.27日首发于“车灯电子扫地僧”。 如果你喜欢我的文章,也可以“车灯电子扫地僧”搜索微信订阅号。更多文章等待您的发掘

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/591518
推荐阅读
相关标签
  

闽ICP备14008679号