You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
import os
|
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
import can #需要安装python-can库 pip install python-can
|
|
|
|
|
from can import bus
|
|
|
|
|
|
|
|
|
|
speed=0
|
|
|
|
|
def sped():
|
|
|
|
|
global speed
|
|
|
|
|
bus.set_filters=[{"can_id": 0x4f2, "can_mask": 0xFFFF, "extended": False}]
|
|
|
|
|
#连接can1
|
|
|
|
|
|
|
|
|
|
can1 = can.interface.Bus(channel = 'can0', bustype = 'socketcan',can_filters=bus.set_filters) #python-can 4.0需要用这个
|
|
|
|
|
# can1 = can.interface.Bus(channel = 'can0', bustype = 'socketcan') #python-can 4.0需要用这个
|
|
|
|
|
#一直循环接收数据
|
|
|
|
|
a = 1
|
|
|
|
|
while a == 1 :
|
|
|
|
|
msg = can1.recv(3.0) #recv()中定义超时接收时间
|
|
|
|
|
# print(msg)
|
|
|
|
|
b = str(msg).replace(' ', '')
|
|
|
|
|
c = b.find('ID')
|
|
|
|
|
d = b.find('DL')
|
|
|
|
|
e = b[c + 3:c + 7] # id
|
|
|
|
|
# print(b, '\n')
|
|
|
|
|
if e == '04f2':
|
|
|
|
|
# print('成功接收到速度报文:04f2 接收时间为:',datetime.datetime.now())
|
|
|
|
|
speed16 = b[d + 6:d + 10]
|
|
|
|
|
# print('接收到的速度16进制为:', speed16) # 速度
|
|
|
|
|
speed10 = int(speed16, 16)
|
|
|
|
|
speed = speed10 * 0.01
|
|
|
|
|
# print('接收到的速度10进制为:', speed10)
|
|
|
|
|
# print('接收到的表显速度为:%skm/h' % speed, '\n')
|
|
|
|
|
# file = open('speed.txt', 'a')
|
|
|
|
|
# file.write(str(speed))
|
|
|
|
|
# file.write('\n')
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
print('未接收到速度报文')
|
|
|
|
|
|
|
|
|
|
#关闭can
|
|
|
|
|
# os.system('sudo ifconfig can1 down')
|