tao_z
2022-08-07 dd84d3ff28816a22a911bb26b435026b728676db
Shifter.py
@@ -1,4 +1,3 @@
from email.message import Message
from ShifterDefine import *
import struct
from udsoncan import DidCodec
@@ -6,7 +5,7 @@
import configparser
import cantools
ProjectDBC = cantools.database.load_file("DBC/SX7H.dbc")
ProjectDBC = cantools.database.load_file("DBC/BJEV_B41V_20220411.dbc")
class AsciiCodec(DidCodec):
@@ -193,30 +192,25 @@
            self.canid.phy_txId = 0x77A
            self.canid.phy_rxId = 0x742
            self.canid.fun_rxId = 0x7df
            self.canid.normalid = 0x420
        self.SA1_message = ProjectDBC.get_message_by_name('SA1')
            self.canid.normalid = 0x5E0
        self.SA1_message = ProjectDBC.get_message_by_name('EGSM_1')
    def FramUnpack(self, id=0x420, frame=[]):
    def FramUnpack(self, id=0x5E0, frame=[]):
        input_signal = ProjectDBC.decode_message(id, frame)
        # part_str = str(input_signal['SA1_Status_ParkButtonReq'])
        # print(type(part_str))
        # if input_signal['SA1_Status_ParkButtonReq'] == 'No request':
        #     print('yes')
        # print(SA1_Status_ParkButtonReq_dic[part_str])
        self.Pbutton = SA1_Status_ParkButtonReq_dic[str(
            input_signal['SA1_Status_ParkButtonReq'])]
            input_signal['EGSM1_St_DrvRqPark'])]
        self.UnlockButton = SA1_Status_UnlockButtonReq_dic[str(
            input_signal['SA1_Status_UnlockButtonReq'])]
            input_signal['EGSM1_St_DrvRqUnlock'])]
        self.position = SA1_Status_GearShftPosReq_dic[str(
            input_signal['SA1_Status_GearShftPosReq'])]
            input_signal['EGSM1_St_DrvRqShft'])]
    def PackFrame(self, dic):
        data = self.SA1_message.encode({
            'SA1_Status_PRNDL':
            0,
            'SA1_Status_GearShftPosReq':
            'EGSM1_St_DrvRqShft':
            SA1_Status_GearShftPosReq_dic[self.position],
            'SA1_Status_ParkButtonReq':
            'EGSM1_St_DrvRqPark':
            SA1_Status_ParkButtonReq_dic[self.Pbutton],
            "SA1_ShifterManualSignal":
            0,
@@ -228,7 +222,7 @@
            0,
            "SA1_Live_counter":
            1,
            "SA1_Status_UnlockButtonReq":
            "EGSM1_St_DrvRqUnlock":
            SA1_Status_UnlockButtonReq_dic[self.UnlockButton],
            "SA1_Status_EcoShifterModeReq":
            0,
@@ -249,10 +243,16 @@
        self.ShiftLeverPos = 'P'
        self.pre_ShiftLeverPos = 'P'
        self.max_pos = 'Shifter position Zero'
        self.IC1_message = ProjectDBC.get_message_by_name('IC1')
        self.TCU2_message = ProjectDBC.get_message_by_name('TCU2')
        self.ABS1_message = ProjectDBC.get_message_by_name('ABS1')
        self.Engine2_message = ProjectDBC.get_message_by_name('Engine2')
        self.BCM1_message = ProjectDBC.get_message_by_name('BCM_1')
        self.BCM_9_message = ProjectDBC.get_message_by_name('BDC_BCM_9')
        self.EHC6_message = ProjectDBC.get_message_by_name('CDC_EHC_6')
        self.CAPE1_message = ProjectDBC.get_message_by_name('BDC_CAPE_1')
        self.IPC1_message = ProjectDBC.get_message_by_name('CDC_IPC1')
        self.CGW_1_message = ProjectDBC.get_message_by_name('CGW_1')
        self.EMS_5_message = ProjectDBC.get_message_by_name('EMS_5')
        self.TBOX_1_message = ProjectDBC.get_message_by_name('TBOX_1')
        self.TCM_5_message = ProjectDBC.get_message_by_name('TCM_5')
    def pack_IC1(self, odm):
        self.Odm = odm
@@ -293,6 +293,9 @@
            reqpos = TCU2_ShiterLevel_dic['M']
            self.pre_ShiftLeverPos = "P"
            self.max_pos = 'Shifter position Zero'
        elif shift.position is SA1_Status_GearShftPosReq_dic[
                'Shifter not initialized']:
            pass
        else:
            if shift.position is not SA1_Status_GearShftPosReq_dic[
                    'Shifter position Zero']:
@@ -304,5 +307,6 @@
                self.pre_ShiftLeverPos = [
                    k for k, v in TCU2_ShiterLevel_dic.items() if v == reqpos
                ][0]
        data = self.pack_TCU2(reqpos)
        return data