pycharm已经下载并打开zlgcan二次开发库USBCANFD系列文件,在zlgcan.py文件基础上用python写一个接收can报文的函数,可以将收到的报文放进Excel文件里,报文信息ID,字节长度、报文收到时间、收到的报文帧数
时间: 2024-05-14 15:19:13 浏览: 188
好的,首先你需要安装 `openpyxl` 库,这个库可以帮助你操作 Excel 文件。你可以通过 `pip install openpyxl` 命令来安装。
接下来,你可以在 `zlgcan.py` 文件中添加一个函数来接收 CAN 报文并将其写入 Excel 文件中。以下是一个例子:
```python
import openpyxl
import datetime
from zlgcan import *
def receive_can_and_write_to_excel(file_name):
# 打开Excel文件
wb = openpyxl.Workbook()
sheet = wb.active
# 添加标题行
sheet['A1'] = 'ID'
sheet['B1'] = '字节长度'
sheet['C1'] = '报文收到时间'
sheet['D1'] = '收到的报文帧数'
# 打开CAN设备
can_dev = zlgcan_device_open(4, 0)
if can_dev == None:
print('打开设备失败')
return
# 设置CAN设备参数
zlgcan_device_set_filter(can_dev, 0, 0, 0, 0)
zlgcan_device_set_baud(can_dev, CAN_BAUD_500K)
# 接收CAN报文并写入Excel文件中
row_num = 2
while True:
msg = zlgcan_device_receive(can_dev, 1000)
if msg is not None:
# 获取报文信息
id = msg.id
data_len = msg.len
timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
frame_count = zlgcan_device_get_receive_count(can_dev)
# 将报文信息写入Excel文件中
sheet.cell(row=row_num, column=1, value=id)
sheet.cell(row=row_num, column=2, value=data_len)
sheet.cell(row=row_num, column=3, value=timestamp)
sheet.cell(row=row_num, column=4, value=frame_count)
row_num += 1
# 保存Excel文件
wb.save(file_name)
# 关闭CAN设备
zlgcan_device_close(can_dev)
```
在这个例子中,我们首先打开了一个新的 Excel 文件并添加了标题行。然后,我们打开了 CAN 设备并设置了相关参数。接下来,我们进入一个循环来不断接收 CAN 报文,获取报文信息,并将其写入 Excel 文件中。最后,我们关闭 CAN 设备并保存 Excel 文件。
你可以将上面的代码保存为一个 .py 文件,然后在终端中运行它,如:`python receive_can_and_write_to_excel.py test.xlsx`,其中,`test.xlsx` 为你想要保存的 Excel 文件名。
阅读全文