安装PCAN驱动
在ubuntu中安装pcan可参考:
Ubuntu 20.04.2 LTS 安装Pcan驱动和pcanview
安装库文件
python.exe -m pip install --upgrade pip
或
pip install --upgrade pip
pip install python-can
或
python -m pip install "python-can[viewer]"
参考代码如下:
import can
from can.interfaces.pcan import PcanBus
import time
# 初始化PCAN通道
channel = "PCAN_USBBUS1" # 通道名称根据实际情况设置
bus = PcanBus(channel=channel, bitrate=250000, is_extended_id=False)
# msg = can.Message(arbitration_id=0x500, data=[00, 10, 20, 13, 14, 15, 16, 0x7F], is_extended_id=False)
msg = can.Message(arbitration_id=0x500, is_extended_id=False, dlc=8)
msg.data = [0, 0, 0, 0, 0, 0, 0, 0]
msg.data[0] = 0x10
msg.data[1] = 0x20
msg.data[2] = 0x1A
msg.data[3] = 0x10
msg.data[4] = 0x10
msg.data[5] = 0x10
msg.data[6] = 0x10
#msg.data[7] = 0xff
#bus.send_periodic(msgs=msg, period=0.3) # 发送周期
count = 0
# 发送CAN消息
try:
while True:
count += 1
msg.data[7] = count
bus.send(msg)
print("发送的ID为 {} 数据为 {}".format(msg.arbitration_id, msg.data))
time.sleep(0.1) #设置发送周期 100ms
except can.CanError:
print("通讯错误,消息未发送")
finally:
# 确保总线能够被正确关闭
bus.shutdown()
python语法补充:
在空列表中python不能够直接通过索引赋值
以下是错的data = [] data[0] = 0x1A data[1] = 0x1B print(data)
空列表向列表中添加元素,应该使用
append()
方法或者通过索引赋值的方式data = [] data.append(0x1A) data.append(0x1B) print(data)
在非空列表中python能够直接通过索引赋值
data = [0,0] data[0] = 0x1A data[1] = 0x1B print(data)