赞
踩
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
"""Prints a message to screen"""
if (frame.flags & canlib.canMSG_ERROR_FRAME != 0):
print("\*\*\*ERROR FRAME RECEIVED\*\*\*")
else:
print("{id:0>8X} {dlc} {data} {timestamp}".format(
id=frame.id,
dlc=frame.dlc,
data=' '.join('%02x' % i for i in frame.data),
timestamp=frame.timestamp
))
if name == ‘__main__’:
# Initialization
channel_number = 0
# Specific CANlib channel number may be specified as first argument if len(sys.argv) == 2: channel_number = int(sys.argv[1]) chdata = canlib.ChannelData(channel_number) print("%d. %s (%s / %s)" % (channel_number, chdata.channel_name, chdata.card_upc_no, chdata.card_serial_no)) # Open CAN channel, virtual channels are considered ok to use ch = canlib.openChannel(channel_number, canlib.canOPEN_ACCEPT_VIRTUAL) print("Setting bitrate to 500 kb/s") ch.setBusParams(canlib.canBITRATE_500K) ch.busOn() # Start listening for messages finished = False print(" ID DLC DATA Timestamp") while not finished: try: frame = ch.read(timeout=50) print_frame(frame) except(canlib.canNoMsg) as ex: pass except (canlib.canError) as ex: print(ex) finished = True # Channel teardown ch.busOff() ch.close()
#### 2.1.2发送数据代码
import sys
from canlib import canlib, Frame
channel_number = 1
if len(sys.argv) == 2:
channel_number = int(sys.argv[1])
print(“Opening channel %d” % (channel_number))
chd = canlib.ChannelData(channel_number)
print("%d. %s (%s / %s) " % (channel_number,
chd.channel_name,
chd.card_upc_no,
chd.card_serial_no))
if chd.custom_name != ‘’:
print("Customized Channel Name: %s " % (chd.custom_name))
ch = canlib.openChannel(channel_number, canlib.canOPEN_ACCEPT_VIRTUAL)
print(“Setting bitrate to 500 kb/s”)
ch.setBusParams(canlib.canBITRATE_500K)
print(“Going on bus”)
ch.busOn()
print(“Sending a message”)
frame = Frame(id_=123,
data=[1, 2, 3, 4, 5, 6, 7, 8],
dlc=8,
flags=0)
ch.write(frame)
print(“Going off bus”)
ch.busOff()
print(“Closing channel”)
ch.close()
注:发送数据代码是发送这样的一帧数据:
id是123,长度为8的CAN帧
PS:这里面的信息可以自行修改,符合CAN帧的规则就行
frame = Frame(id_=123,
data=[1, 2, 3, 4, 5, 6, 7, 8],
dlc=8,
flags=0)
### 2.2验证发送数据 验证是否发送成功,只需要看到有没有接收到数据就行了,本文通过Kvaser提供的软件来测试是否接收到数据。 当然也可以通过上文提到的接收数据的代码,这个在后文会提到。 #### 2.2.1使用Kvaser Can King接收数据 打开CAnKing软件(此软件在1.2节已经提供安装包) * 设置CAN通道为0 * 设置波特率为500K * 点击按钮`Go On Bus`  现在CAN的0通道便打开了,在右侧Output框可以显示发送以及接收到的数据 #### 2.2.2使用Python发送数据 运行2.1.2的Python文件  可以看到运行一次代码,Kvaser Can King便会接收一帧数据 ### 2.3验证接收数据 #### 2.3.1使用Kvaser Can King发送数据 与2.2.1同样打开CAnKing软件 * 设置CAN通道为0 * 设置波特率为500K * 点击按钮`Go On Bus`  现在CAN的0通道便打开了,在右侧Output框可以显示发送以及接收到的数据 按照下图打开`Universal`按钮  点击后便会打开Message对话框,按照图示输入信息  电机Send便会发送CAN帧 #### 2.3.2使用Python发接收数据   **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新** **[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)** 零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新** **[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。