From 80cd2027b36af5866a7a82005afc367859e73b47 Mon Sep 17 00:00:00 2001 From: tao_z <tzj0429@163.com> Date: Sat, 18 Jun 2022 17:16:17 +0800 Subject: [PATCH] 更新DTC测试功能 --- Shifter.py | 76 +++++++++++++++++++++++++++++-------- 1 files changed, 59 insertions(+), 17 deletions(-) diff --git a/Shifter.py b/Shifter.py index fb8f852..56dbb40 100644 --- a/Shifter.py +++ b/Shifter.py @@ -1,17 +1,16 @@ - from ShifterDefine import * import struct from udsoncan import DidCodec import configparser +from dbc import * class AsciiCodec(DidCodec): def __init__(self, string_len=None): if string_len is None: - raise ValueError( - "You must provide a length to the AsciiCodec") + raise ValueError("You must provide a length to the AsciiCodec") self.string_len = string_len def encode(self, string_ascii): @@ -36,6 +35,7 @@ class PartNumberCodec(DidCodec): + def __init__(self, byte_len=None): if byte_len is None: raise ValueError( @@ -68,6 +68,7 @@ class PartNumberVersionCodec(DidCodec): + def __init__(self, byte_len=None): if byte_len is None: raise ValueError( @@ -115,7 +116,7 @@ data = bytearray() for i in range(self.byte_len): - part = string_ascii[2 * i: 2 * i + 2] + part = string_ascii[2 * i:2 * i + 2] data.append(int(part, 16)) return data @@ -131,28 +132,52 @@ return self.byte_len +UnlockButton_dic = {"Unlock Button No Request": 0, "Unlock Button Request": 1} + + class ShifterClass(): + def __init__(self): self.position = ShifterPosition(0) self.Pbutton = 0 self.UnlockButton = 0 self.Voltage = 0 self.canid = ShifterCANID() + self.did_config = { + 0x2100: PartNumberCodec(1), + 0x2101: PartNumberCodec(1), + 0x2103: AsciiCodec(8), + 0x2104: AsciiCodec(4), + 0x2105: AsciiCodec(16), + 0x2106: PartNumberCodec(1), + 0xF187: AsciiCodec(16), + 0x2108: AsciiCodec(18), + 0xF18A: AsciiCodec(10), + 0x210B: BCDCodec(4), + 0xF18C: AsciiCodec(14), 0xF190: AsciiCodec(17), - 0xF1B1: AsciiCodec(9), - 0xF1B2: AsciiCodec(16), - - 0xF1D0: PartNumberCodec(4), - 0xF1D1: PartNumberVersionCodec(2), - 0xF1D2: PartNumberCodec(4), - 0xF1D3: PartNumberVersionCodec(2), - 0xF0DF: PartNumberVersionCodec(1), - - 0xF187: AsciiCodec(21), - 0xF195: AsciiCodec(16), - 0xF198: BCDCodec(8), - 0xF199: BCDCodec(4), + 0xF193: AsciiCodec(26), + 0xF195: AsciiCodec(28), + 0x2110: AsciiCodec(8), + 0x2111: AsciiCodec(16), + 0x2112: BCDCodec(4), + 0x2113: BCDCodec(4), + 0x2116: PartNumberCodec(2), + 0x2118: PartNumberCodec(1), + 0x2119: PartNumberCodec(1), + 0x211A: PartNumberCodec(1), + 0x211B: PartNumberCodec(1), + 0x211c: PartNumberCodec(2), + 0xF197: AsciiCodec(8), + 0xF15a: AsciiCodec(10), + 0xF15B: AsciiCodec(10), + 0xDF00: PartNumberCodec(1), + 0xDF01: PartNumberCodec(2), + 0xDF02: PartNumberCodec(1), + 0xDF03: PartNumberCodec(3), + 0xDF04: PartNumberCodec(3), + 0x1000: PartNumberCodec(2), } try: config = configparser.ConfigParser() @@ -166,3 +191,20 @@ self.canid.phy_rxId = 0x742 self.canid.fun_rxId = 0x7df self.canid.normalid = 0x420 + self.dbc = DBC("DBC/DFLZM.dbc") + + def FramUnpack(self, id=0x420, frame=[]): + data = [] + data.append(' '.join( + ['{:0>2x}'.format(a).upper() for a in list(frame)])) + # print(data) + unpackframe = self.dbc.analyzer(msgid=0x420, data=str(data[0])) + # print(unpackframe[5]['value']['raw']) + self.Pbutton = unpackframe[5]['value']['raw'] + print(unpackframe[5]["name"], unpackframe[5]['value']['raw']) + # print(unpackframe[6]['value']['raw']) + self.UnlockButton = unpackframe[4]['value']['raw'] + print(unpackframe[4]["name"], unpackframe[4]['value']['raw']) + # print(unpackframe[4]['value']['raw']) + self.position = unpackframe[7]['value']['raw'] + print(unpackframe[7]["name"], unpackframe[7]['value']['raw']) -- Gitblit v1.8.0