tao_z
2022-08-07 dd84d3ff28816a22a911bb26b435026b728676db
针对B41V修改
1 files added
3 files modified
412 ■■■■■ changed files
DBC/BJEV_B41V_20220411.dbc 349 ●●●●● patch | view | raw | blame | history
Shifter.py 39 ●●●● patch | view | raw | blame | history
USBCAN.py 2 ●●● patch | view | raw | blame | history
widgets/ShifterTool.py 22 ●●●● patch | view | raw | blame | history
DBC/BJEV_B41V_20220411.dbc
New file
@@ -0,0 +1,349 @@
VERSION ""
NS_ :
        NS_DESC_
        CM_
        BA_DEF_
        BA_
        VAL_
        CAT_DEF_
        CAT_
        FILTER
        BA_DEF_DEF_
        EV_DATA_
        ENVVAR_DATA_
        SGTYPE_
        SGTYPE_VAL_
        BA_DEF_SGTYPE_
        BA_SGTYPE_
        SIG_TYPE_REF_
        VAL_TABLE_
        SIG_GROUP_
        SIG_VALTYPE_
        SIGTYPE_VALTYPE_
        BO_TX_BU_
        BA_DEF_REL_
        BA_REL_
        BA_DEF_DEF_REL_
        BU_SG_REL_
        BU_EV_REL_
        BU_BO_REL_
        SG_MUL_VAL_
BS_:
BU_: EGSM GW EMS TCM
BO_ 640 EMS_5: 8 EMS
 SG_ EMS5_St_EngineCranking : 44|1@0+ (1,0) [0|1] "" GW,TCM,Vector__XXX,EGSM,Vector__XXX
BO_ 1248 TCM_5: 8 TCM
 SG_ TCM5_St_ShiftLeverPos_EGSM : 54|3@0+ (1,0) [0|7] "" EGSM
 SG_ TCM5_RollingCounter : 51|4@0+ (1,0) [0|15] "" GW,EMS,EGSM
 SG_ TCM5_Checksum : 63|8@0+ (1,0) [0|255] "" GW,EMS,EGSM
BO_ 1504 EGSM_1: 8 EGSM
 SG_ EGSM1_St_DrvRqShft : 7|4@0+ (1,0) [0|15] "" GW,TCM
 SG_ EGSM1_St_DrvRqShftInv : 3|4@0+ (1,0) [0|15] "" TCM
 SG_ EGSM1_St_DrvRqUnlock : 14|2@0+ (1,0) [0|3] "" GW,TCM
 SG_ EGSM1_St_DrvRqPark : 12|2@0+ (1,0) [0|3] "" GW,TCM
 SG_ EGSM1_St_StayInM : 9|2@0+ (1,0) [0|3] "" GW
 SG_ EGSM1_St_EShiftFault : 23|1@0+ (1,0) [0|1] "" GW,TCM
 SG_ EGSM1_St_ShiftPadReqUp : 27|2@0+ (1,0) [0|3] "" TCM
 SG_ EGSM1_St_ShiftPadReqDown : 25|2@0+ (1,0) [0|3] "" TCM
 SG_ EGSM1_RollingCounter : 51|4@0+ (1,0) [0|15] "" TCM
 SG_ EGSM1_Checksum : 63|8@0+ (1,0) [0|255] "" TCM
BO_ 1293 CGW_1: 8 GW
 SG_ CGW1_St_OTAmode : 0|1@0+ (1,0) [0|1] "" EMS,Vector__XXX,EGSM
BO_ 1568 CDC_IPC1: 8 GW
 SG_ IPC1_F_RheostatLevel : 4|2@0+ (1,0) [0|3] "" EGSM
 SG_ IPC1_F_OdometerParameter : 0|1@0+ (1,0) [0|1] "" EMS,TCM,Vector__XXX,EGSM,Vector__XXX
 SG_ IPC1_St_RheostatLevel : 15|3@0+ (1,0) [0|7] "" EGSM
 SG_ IPC1_N_OdoMeter : 23|32@0+ (0.01,0) [0|2000000] "km" EMS,TCM,Vector__XXX,EGSM,Vector__XXX,Vector__XXX
BO_ 1319 CDC_EHC_6: 8 GW
 SG_ EHC6_N_Year : 7|7@0+ (1,2000) [2000|2127] "" TCM,EGSM,Vector__XXX,Vector__XXX
 SG_ EHC6_N_Month : 0|4@0+ (1,0) [0|12] "" TCM,EGSM,Vector__XXX,Vector__XXX
 SG_ EHC6_N_Day : 12|5@0+ (1,0) [0|31] "" TCM,EGSM,Vector__XXX,Vector__XXX
 SG_ EHC6_N_Hour : 23|5@0+ (1,0) [0|24] "h" TCM,EGSM,Vector__XXX,Vector__XXX
 SG_ EHC6_N_Minute : 31|6@0+ (1,0) [0|60] "M" TCM,EGSM,Vector__XXX,Vector__XXX
 SG_ EHC6_N_Second : 25|6@0+ (1,0) [0|60] "S" TCM,EGSM,Vector__XXX,Vector__XXX
BO_ 1184 BCM_1: 8 GW
 SG_ BCM1_Cmd_PositionLamp : 15|1@0+ (1,0) [0|1] "" EGSM
BO_ 1383 BDC_BCM_9: 8 GW
 SG_ BCM9_St_OTAmode : 44|1@0+ (1,0) [0|1] "" EMS,Vector__XXX,EGSM
BO_ 1392 BDC_CAPE_1: 8 GW
 SG_ CAPE1_F_PowerMode : 7|2@0+ (1,0) [0|2] "" EMS,TCM,Vector__XXX,EGSM,Vector__XXX
 SG_ CAPE1_St_PowerMode : 5|3@0+ (1,0) [0|7] "" EMS,TCM,Vector__XXX,EGSM,Vector__XXX
 SG_ CAPE1_RollingCounter : 55|8@0+ (1,0) [0|255] "" EMS,TCM,EGSM
 SG_ CAPE1_CRC : 63|8@0+ (1,0) [0|255] "" EMS,TCM,EGSM
BO_ 1321 TBOX_1: 8 GW
 SG_ TBOX1_St_OTAmode : 35|1@0+ (1,0) [0|1] "" EMS,Vector__XXX,EGSM
CM_ "Version:V0.1,Date:2022/4/8,Author:ANGUANGSHENG,Review:,Approval:,Description:(EGSM)1.³õ°æ;
 ";
CM_ SG_ 1504 EGSM1_St_DrvRqShft "¼ÝʻԱ»»µ²Î»ÖÃÐźż°»»µ²Æ÷¹ÊÕÏÐźÅ";
CM_ SG_ 1504 EGSM1_St_DrvRqShftInv "¼ÝʻԱ»»µ²Î»ÖÃÐźż°»»µ²Æ÷¹ÊÕÏÐźÅÕý·´²¹Âë";
CM_ SG_ 1504 EGSM1_St_DrvRqUnlock "½âËø°´¼üÐźÅ";
CM_ SG_ 1504 EGSM1_St_DrvRqPark "Pµ²°´¼üÐźÅ";
CM_ SG_ 1504 EGSM1_St_StayInM "EGSM½«Mµ²Î»Öþ¯±¨ÌáʾÐźŷ¢Ë͸øIPC £¬ÇëÇóÒÔÎÄ×Ö¼°·äÃùÒôÌáʾ¼ÝÊ»Õß½«»»µ²¸Ë»Ö¸´µ½Õý³£Î»Öá£";
CM_ SG_ 1504 EGSM1_St_EShiftFault "»»µ²ÏµÍ³¹ÊÕÏÌáʾ";
CM_ SG_ 1504 EGSM1_St_ShiftPadReqUp "»»µ²²¦Æ¬Éýµµ£¨Ô¤Áô¹¦ÄÜ£©";
CM_ SG_ 1504 EGSM1_St_ShiftPadReqDown "»»µ²²¦Æ¬½µµµ£¨Ô¤Áô¹¦ÄÜ£©";
CM_ SG_ 1504 EGSM1_RollingCounter "RollingCounter¼ÆÊý";
CM_ SG_ 1504 EGSM1_Checksum "ChecksumУÑéÂë";
CM_ SG_ 1568 IPC1_F_RheostatLevel "±³¹âµ÷½ÚÐźÅ";
CM_ SG_ 1568 IPC1_St_RheostatLevel "±³¹âµ÷½ÚÐźÅ";
CM_ SG_ 1568 IPC1_N_OdoMeter "E=N*0.01";
BA_DEF_ BO_  "NmMessage" ENUM "No","Yes";
BA_DEF_ BO_  "DiagState" ENUM  "No","Yes";
BA_DEF_ BO_  "DiagRequest" ENUM  "No","Yes";
BA_DEF_ BO_  "DiagResponse" ENUM  "No","Yes";
BA_DEF_ BO_  "GenMsgSendType" ENUM  "cyclic","NoMsgSendType","IfActive","Event","CA","CE";
BA_DEF_ BO_  "GenMsgCycleTime" INT 0 0;
BA_DEF_ SG_  "GenSigSendType" ENUM  "cyclic","OnChange","OnWrite","IfActive","OnChangeWithRepetition","OnWriteWithRepetition","IfActiveWithRepetition","NoSigSendType","OnChangeAndIfActive", "OnChangeAndIfActiveWithRepetition","CA","CE","Event";
BA_DEF_ SG_  "GenSigStartValue" INT 0 0;
BA_DEF_ SG_  "GenSigInactiveValue" INT 0 0;
BA_DEF_ BO_  "GenMsgCycleTimeFast" INT 0 0;
BA_DEF_ BO_  "GenMsgNrOfRepetition" INT 0 0;
BA_DEF_ BO_  "GenMsgDelayTime" INT 0 0;
BA_DEF_  "DBName" STRING ;
BA_DEF_  "BusBaudate" INT 0 10000;
BA_DEF_ BU_  "NodeLayerModules" STRING ;
BA_DEF_ SG_  "GenSigTimeoutValue" INT 0 1000000000;
BA_DEF_ BO_  "GenMsgCycleTimeActive" INT 0 0;
BA_DEF_ BU_  "ILUsed" ENUM  "No","Yes";
BA_DEF_ BU_  "DiagStationAddress" HEX 0 255;
BA_DEF_ BU_  "NmNode" ENUM  "Not","Yes";
BA_DEF_ BU_  "NmStationAddress" HEX 0 65535;
BA_DEF_ BU_  "NmCAN" INT 0 2;
BA_DEF_  "Manufacturer" STRING ;
BA_DEF_  "NmType" STRING ;
BA_DEF_  "NmBaseAddress" HEX 0 2047;
BA_DEF_  "NmMessageCount" INT 0 255;
BA_DEF_ BO_  "_Cdb_Sc_CTm_FAW_v3_0" INT 0 0;
BA_DEF_ BO_  "_Cdb_Sc_CTm_FAW_v2_3" INT 0 0;
BA_DEF_ BO_  "_Cdb_Sc_CTm_FAW_v3_1" INT 0 0;
BA_DEF_ BO_  "_Cdb_Sc_CTm_FAW_v2_2" INT 0 0;
BA_DEF_ BO_  "_Cdb_Sc_CTm_FAW_v2_1" INT 0 0;
BA_DEF_ BO_  "GenMsgILSupport" ENUM  "No","Yes";
BA_DEF_ BO_  "GenMsgStartDelayTime" INT 0 65535;
BA_DEF_  "BusType" STRING ;
BA_DEF_ SG_ "sigDespEng" STRING;
BA_DEF_ SG_ "sigSecLevel" STRING;
BA_DEF_ SG_ "sigConfig" STRING;
BA_DEF_ SG_ "sigExplanation" STRING;
BA_DEF_DEF_  "NmMessage" "No";
BA_DEF_DEF_  "DiagState" "No";
BA_DEF_DEF_  "DiagRequest" "No";
BA_DEF_DEF_  "DiagResponse" "No";
BA_DEF_DEF_  "GenMsgSendType" "cyclic";
BA_DEF_DEF_  "GenMsgCycleTime" 0;
BA_DEF_DEF_  "GenSigSendType" "cyclic";
BA_DEF_DEF_  "GenSigStartValue" 0;
BA_DEF_DEF_  "GenSigInactiveValue" 0;
BA_DEF_DEF_  "GenMsgCycleTimeFast" 0;
BA_DEF_DEF_  "GenMsgNrOfRepetition" 0;
BA_DEF_DEF_  "GenMsgDelayTime" 0;
BA_DEF_DEF_  "DBName" "";
BA_DEF_DEF_  "BusBaudate" 500;
BA_DEF_DEF_  "NodeLayerModules" "CANoeILNLVector.dll";
BA_DEF_DEF_  "GenSigTimeoutValue" 0;
BA_DEF_DEF_  "GenMsgCycleTimeActive" 0;
BA_DEF_DEF_  "ILUsed" "No";
BA_DEF_DEF_  "DiagStationAddress" 0;
BA_DEF_DEF_  "NmNode" "Not";
BA_DEF_DEF_  "NmStationAddress" 0;
BA_DEF_DEF_  "NmCAN" 0;
BA_DEF_DEF_  "Manufacturer" "";
BA_DEF_DEF_  "NmType" "";
BA_DEF_DEF_  "NmBaseAddress" 1024;
BA_DEF_DEF_  "NmMessageCount" 128;
BA_DEF_DEF_  "_Cdb_Sc_CTm_FAW_v3_0" 0;
BA_DEF_DEF_  "_Cdb_Sc_CTm_FAW_v2_3" 0;
BA_DEF_DEF_  "_Cdb_Sc_CTm_FAW_v3_1" 0;
BA_DEF_DEF_  "_Cdb_Sc_CTm_FAW_v2_2" 0;
BA_DEF_DEF_  "_Cdb_Sc_CTm_FAW_v2_1" 0;
BA_DEF_DEF_  "GenMsgILSupport" "No";
BA_DEF_DEF_  "GenMsgStartDelayTime" 0;
BA_DEF_DEF_  "BusType" "CAN";
BA_DEF_DEF_ "sigDespEng" "" ;
BA_DEF_DEF_ "sigSecLevel" "QM" ;
BA_DEF_DEF_ "sigConfig" "" ;
BA_DEF_DEF_ "sigExplanation" "" ;
BA_ "DBName" "BJEV_B41V(EP)_PBUS_Matrix_CAN_V1.0_20220411";
BA_ "BusBaudate" 500;
BA_ "GenMsgCycleTime" BO_ 640 10;
BA_ "sigDespEng"  SG_ 640 EMS5_St_EngineCranking "whenthestarterpullstheenginearound£¬itcomesfromthevariableCoEng_st";
BA_ "sigSecLevel"  SG_ 640 EMS5_St_EngineCranking "";
BA_ "sigConfig"  SG_ 640 EMS5_St_EngineCranking "";
BA_ "sigExplanation"  SG_ 640 EMS5_St_EngineCranking "";
BA_ "GenMsgCycleTime" BO_ 1248 20;
BA_ "GenSigStartValue" SG_ 1248 TCM5_St_ShiftLeverPos_EGSM 7;
BA_ "sigDespEng"  SG_ 1248 TCM5_St_ShiftLeverPos_EGSM "Actuationofdisplay:Transmissionposition,Driverinformation,Transmissiondata,etc.InvalidValue(Hex)ÎÞЧֵ:7";
BA_ "sigSecLevel"  SG_ 1248 TCM5_St_ShiftLeverPos_EGSM "";
BA_ "sigConfig"  SG_ 1248 TCM5_St_ShiftLeverPos_EGSM "";
BA_ "sigExplanation"  SG_ 1248 TCM5_St_ShiftLeverPos_EGSM "";
BA_ "sigDespEng"  SG_ 1248 TCM5_RollingCounter "MessagecounterforeachmessagetransmittedThetransmittershallupdatethevalueoftheMessageCountersignaleverytimeaframeistransmitted(evenifnootherdataintheframehaschangedvalue).Thecountervalueshallbeupdatedinthesequence0,1,2,3......15,0,1,2,3......15,etc.Uponstartup,theinitialvalueoftheMessageCountersignalshallbe0.N=E";
BA_ "sigSecLevel"  SG_ 1248 TCM5_RollingCounter "";
BA_ "sigConfig"  SG_ 1248 TCM5_RollingCounter "";
BA_ "sigExplanation"  SG_ 1248 TCM5_RollingCounter "";
BA_ "sigDespEng"  SG_ 1248 TCM5_Checksum "ChecksumoftheTCM5statusChecksum=(byte0+byte1+¡­+byte6£©andFF";
BA_ "sigSecLevel"  SG_ 1248 TCM5_Checksum "";
BA_ "sigConfig"  SG_ 1248 TCM5_Checksum "";
BA_ "sigExplanation"  SG_ 1248 TCM5_Checksum "";
BA_ "GenMsgCycleTime" BO_ 1504 10;
BA_ "GenSigStartValue" SG_ 1504 EGSM1_St_DrvRqShft 14;
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_DrvRqShft "Driverrequestedgearshiftposition";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_DrvRqShft "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_DrvRqShft "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_DrvRqShft "ÏòTCM´«µÝµ²¸ËλÖÃÐÅÏ¢ÒÔ¼°Ë«»ô¶û´«¸ÐÆ÷¹ÊÕÏ¡£";
BA_ "GenSigStartValue" SG_ 1504 EGSM1_St_DrvRqShftInv 1;
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_DrvRqShftInv "Driverrequestedgearshiftpositioninverse";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_DrvRqShftInv "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_DrvRqShftInv "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_DrvRqShftInv "ÓëEGSM1_St_DRV_RQ_SHFTÐźţ¬ÐγÉÕý·´²¹Â룬ÐźÅÓëEGSM1_St_DRV_RQ_SHFT±£³Öͬ²½£¬ÌáÉý¹¦Äܰ²È«µÈ¼¶¡£";
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_DrvRqUnlock "DriverRequestUnlockButton";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_DrvRqUnlock "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_DrvRqUnlock "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_DrvRqUnlock "ÏòTCM´«µÝ½âËø°´¼üÐźš£";
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_DrvRqPark "DriverRequestParkButton";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_DrvRqPark "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_DrvRqPark "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_DrvRqPark "ÏòTCM´«µÝP°´¼üÐźš£";
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_StayInM "MpositionwaringforIPC.ThisisasignalforEGSMInMwhenTCUisnotinD";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_StayInM "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_StayInM "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_StayInM "1£©Éϵç״̬ÇÒTCUÔÚP,R,Nµ²£¬µ«»»µ²¸ËÔÚM£¬M+£¬M-λÖã»2£©Ïµç״̬»»µ²¸ËÔÚM£¬M+£¬M-λÖÃ;µ±³öÏÖÒÔÉÏÇé¿öÖ®Ò»EGSM½«ÌáʾÐźŷ¢Ë͸øIPC£¬ÇëÇóÒÔÎÄ×Ö¼°·äÃùÒôÌáʾ¼ÝÊ»Õß½«»»µ²¸Ë»Ö¸´µ½Õý³£Î»Öá£";
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_EShiftFault "thissignalindicateE-shiftfaultwhichrepresentE-shiftcannotreflecttherealdriverdemandbecauseofanyreason.";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_EShiftFault "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_EShiftFault "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_EShiftFault "»»µ²ÏµÍ³¹ÊÕÏÌáʾ";
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_ShiftPadReqUp "ATShiftPadTippressed,andrequestUpshift.";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_ShiftPadReqUp "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_ShiftPadReqUp "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_ShiftPadReqUp "»»µ²²¦Æ¬Éýµµ£¨Ô¤Áô¹¦ÄÜ£©";
BA_ "sigDespEng"  SG_ 1504 EGSM1_St_ShiftPadReqDown "ATShiftPadTippressed,andrequestDownshift.";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_St_ShiftPadReqDown "";
BA_ "sigConfig"  SG_ 1504 EGSM1_St_ShiftPadReqDown "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_St_ShiftPadReqDown "»»µ²²¦Æ¬½µµµ£¨Ô¤Áô¹¦ÄÜ£©";
BA_ "sigDespEng"  SG_ 1504 EGSM1_RollingCounter "MessagecounterforeachmessagetransmittedThetransmittershallupdatethevalueoftheMessageCountersignaleverytimeaframeistransmitted(evenifnootherdataintheframehaschangedvalue).Thecountervalueshallbeupdatedinthesequence0,1,2,3......15,0,1,2,3......15,etc.Uponstartup,theinitialvalueoftheMessageCountersignalshallbe0.N=E";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_RollingCounter "";
BA_ "sigConfig"  SG_ 1504 EGSM1_RollingCounter "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_RollingCounter "";
BA_ "sigDespEng"  SG_ 1504 EGSM1_Checksum "ChecksumoftheEGSM1statusChecksum=(byte0+byte1+¡­+byte6£©andFF";
BA_ "sigSecLevel"  SG_ 1504 EGSM1_Checksum "";
BA_ "sigConfig"  SG_ 1504 EGSM1_Checksum "";
BA_ "sigExplanation"  SG_ 1504 EGSM1_Checksum "";
BA_ "GenMsgCycleTime" BO_ 1293 100;
BA_ "sigDespEng"  SG_ 1293 CGW1_St_OTAmode "CGWÇëÇó½Úµã½øÈëOTAģʽ";
BA_ "sigSecLevel"  SG_ 1293 CGW1_St_OTAmode "";
BA_ "sigConfig"  SG_ 1293 CGW1_St_OTAmode "";
BA_ "sigExplanation"  SG_ 1293 CGW1_St_OTAmode "";
BA_ "GenMsgCycleTime" BO_ 1568 100;
BA_ "sigDespEng"  SG_ 1568 IPC1_F_RheostatLevel "ThevaildindicationofRheostatLevel";
BA_ "sigSecLevel"  SG_ 1568 IPC1_F_RheostatLevel "";
BA_ "sigConfig"  SG_ 1568 IPC1_F_RheostatLevel "";
BA_ "sigExplanation"  SG_ 1568 IPC1_F_RheostatLevel "";
BA_ "sigDespEng"  SG_ 1568 IPC1_F_OdometerParameter "Thevaildindicationofodometer£¬odometerresetandodometeroffsetinEEROM";
BA_ "sigSecLevel"  SG_ 1568 IPC1_F_OdometerParameter "";
BA_ "sigConfig"  SG_ 1568 IPC1_F_OdometerParameter "";
BA_ "sigExplanation"  SG_ 1568 IPC1_F_OdometerParameter "";
BA_ "sigDespEng"  SG_ 1568 IPC1_St_RheostatLevel "ThevalueofRheostatLevel";
BA_ "sigSecLevel"  SG_ 1568 IPC1_St_RheostatLevel "";
BA_ "sigConfig"  SG_ 1568 IPC1_St_RheostatLevel "";
BA_ "sigExplanation"  SG_ 1568 IPC1_St_RheostatLevel "";
BA_ "sigDespEng"  SG_ 1568 IPC1_N_OdoMeter "Thevalueofodometer";
BA_ "sigSecLevel"  SG_ 1568 IPC1_N_OdoMeter "";
BA_ "sigConfig"  SG_ 1568 IPC1_N_OdoMeter "";
BA_ "sigExplanation"  SG_ 1568 IPC1_N_OdoMeter "";
BA_ "GenMsgCycleTime" BO_ 1319 1000;
BA_ "sigDespEng"  SG_ 1319 EHC6_N_Year "year";
BA_ "sigSecLevel"  SG_ 1319 EHC6_N_Year "";
BA_ "sigConfig"  SG_ 1319 EHC6_N_Year "";
BA_ "sigExplanation"  SG_ 1319 EHC6_N_Year "";
BA_ "sigDespEng"  SG_ 1319 EHC6_N_Month "Month";
BA_ "sigSecLevel"  SG_ 1319 EHC6_N_Month "";
BA_ "sigConfig"  SG_ 1319 EHC6_N_Month "";
BA_ "sigExplanation"  SG_ 1319 EHC6_N_Month "";
BA_ "sigDespEng"  SG_ 1319 EHC6_N_Day "Day";
BA_ "sigSecLevel"  SG_ 1319 EHC6_N_Day "";
BA_ "sigConfig"  SG_ 1319 EHC6_N_Day "";
BA_ "sigExplanation"  SG_ 1319 EHC6_N_Day "";
BA_ "sigDespEng"  SG_ 1319 EHC6_N_Hour "Hour";
BA_ "sigSecLevel"  SG_ 1319 EHC6_N_Hour "";
BA_ "sigConfig"  SG_ 1319 EHC6_N_Hour "";
BA_ "sigExplanation"  SG_ 1319 EHC6_N_Hour "";
BA_ "sigDespEng"  SG_ 1319 EHC6_N_Minute "Minute";
BA_ "sigSecLevel"  SG_ 1319 EHC6_N_Minute "";
BA_ "sigConfig"  SG_ 1319 EHC6_N_Minute "";
BA_ "sigExplanation"  SG_ 1319 EHC6_N_Minute "";
BA_ "sigDespEng"  SG_ 1319 EHC6_N_Second "Second";
BA_ "sigSecLevel"  SG_ 1319 EHC6_N_Second "";
BA_ "sigConfig"  SG_ 1319 EHC6_N_Second "";
BA_ "sigExplanation"  SG_ 1319 EHC6_N_Second "";
BA_ "GenMsgCycleTime" BO_ 1184 50;
BA_ "sigDespEng"  SG_ 1184 BCM1_Cmd_PositionLamp "TheCommandofPositionLamp,BCMjudgeallstationsthatneedlightthepositonlamponandsendthiscommandinCANbus.LightthepositionlamponintheIPC";
BA_ "sigSecLevel"  SG_ 1184 BCM1_Cmd_PositionLamp "";
BA_ "sigConfig"  SG_ 1184 BCM1_Cmd_PositionLamp "";
BA_ "sigExplanation"  SG_ 1184 BCM1_Cmd_PositionLamp "";
BA_ "GenMsgCycleTime" BO_ 1383 100;
BA_ "sigDespEng"  SG_ 1383 BCM9_St_OTAmode "OTAmodeidicator";
BA_ "sigSecLevel"  SG_ 1383 BCM9_St_OTAmode "";
BA_ "sigConfig"  SG_ 1383 BCM9_St_OTAmode "";
BA_ "sigExplanation"  SG_ 1383 BCM9_St_OTAmode "";
BA_ "GenMsgCycleTime" BO_ 1392 50;
BA_ "sigDespEng"  SG_ 1392 CAPE1_F_PowerMode "VehiclepowermodevalidityThissignalindicatesifpowermodesignalisvalidornot";
BA_ "sigSecLevel"  SG_ 1392 CAPE1_F_PowerMode "";
BA_ "sigConfig"  SG_ 1392 CAPE1_F_PowerMode "";
BA_ "sigExplanation"  SG_ 1392 CAPE1_F_PowerMode "";
BA_ "sigDespEng"  SG_ 1392 CAPE1_St_PowerMode "VehiclepowermodeThissignalindicatestheinnerpowermodeofPDM";
BA_ "sigSecLevel"  SG_ 1392 CAPE1_St_PowerMode "";
BA_ "sigConfig"  SG_ 1392 CAPE1_St_PowerMode "";
BA_ "sigExplanation"  SG_ 1392 CAPE1_St_PowerMode "";
BA_ "sigDespEng"  SG_ 1392 CAPE1_RollingCounter "Thecountervalueshallbeupdatedinthesequence0,1,2,3......255,0,1,2,3......255,etc.Uponstartup,theinitialvalueoftheMessageCountersignalshallbe0.£¨E=N£©";
BA_ "sigSecLevel"  SG_ 1392 CAPE1_RollingCounter "";
BA_ "sigConfig"  SG_ 1392 CAPE1_RollingCounter "";
BA_ "sigExplanation"  SG_ 1392 CAPE1_RollingCounter "";
BA_ "sigDespEng"  SG_ 1392 CAPE1_CRC "CRC8";
BA_ "sigSecLevel"  SG_ 1392 CAPE1_CRC "";
BA_ "sigConfig"  SG_ 1392 CAPE1_CRC "";
BA_ "sigExplanation"  SG_ 1392 CAPE1_CRC "";
BA_ "GenMsgCycleTime" BO_ 1321 100;
BA_ "sigDespEng"  SG_ 1321 TBOX1_St_OTAmode "TBOXÇëÇó½Úµã½øÈëOTAģʽ¡£Ä¿µÄΪ£ºOTAģʽ¹ý³ÌÖУ¬ÐèÒªÒÖÖÆÓû§¿É²Ù×÷µÄ¹¦ÄÜ£¬±ÜÃâ³µÁ¾½øÈë²»°²È«×´Ì¬£¬Í¬Ê±½µµÍÄܺÄ.";
BA_ "sigSecLevel"  SG_ 1321 TBOX1_St_OTAmode "";
BA_ "sigConfig"  SG_ 1321 TBOX1_St_OTAmode "";
BA_ "sigExplanation"  SG_ 1321 TBOX1_St_OTAmode "";
VAL_ 1504 EGSM1_St_DrvRqShft 15 "Signal not available£¨double fault shift sensor£©" 14 "Shifter not initialized" 13 "Reserved" 12 "Reserved" 11 "Reserved" 10 "Reserved" 9 "Reserved" 8 "Reserved" 7 "L_Backward 1" 6 "L_Forward 1" 5 "L_Zero" 4 "Backward 2" 3 "Backward 1" 2 "Forward 1" 1 "Forward 2" 0 "Zero" ;
VAL_ 1504 EGSM1_St_DrvRqShftInv 15 "Zero" 14 "Forward 2" 13 "Forward 1" 12 "Backward 1" 11 "Backward 2" 10 "L_Zero" 9 "L_Forward 1" 8 "L_Backward 1" 1 "Shifter not initialized" 0 "Signal not available£¨double fault shift sensor£©" ;
VAL_ 1504 EGSM1_St_DrvRqUnlock 3 "reserved" 2 "reserved" 1 "Driver request unlock button" 0 "No request" ;
VAL_ 1504 EGSM1_St_DrvRqPark 3 "reserved" 2 "Park button fault" 1 "driver request park button" 0 "no request" ;
VAL_ 1504 EGSM1_St_StayInM 3 "Reserved" 2 "Display ¡®Please move the shift lever to Auto Lane¡¯ and always ring" 1 "Display ¡®Please move the shift lever to Auto Lane¡¯ and only ring twice" 0 "No request" ;
VAL_ 1504 EGSM1_St_EShiftFault 1 "E-shift fault" 0 "E-shift Normal" ;
VAL_ 1504 EGSM1_St_ShiftPadReqUp 3 "Fault" 2 "Reserved" 1 "Active - Up Shift" 0 "Inactive - No request" ;
VAL_ 1504 EGSM1_St_ShiftPadReqDown 3 "Fault" 2 "Reserved" 1 "Active - Down Shift" 0 "Inactive - No request" ;
VAL_ 640 EMS5_St_EngineCranking 1 "Active" 0 "Inactive" ;
VAL_ 1248 TCM5_St_ShiftLeverPos_EGSM 7 "Invalid value" 6 "Blank" 5 "S(RESERVED)" 4 "M" 3 "D" 2 "N" 1 "R" 0 "P" ;
VAL_ 1293 CGW1_St_OTAmode 1 "in OTA mode" 0 "not in OTA mode" ;
VAL_ 1568 IPC1_F_RheostatLevel 3 "Value unreliable" 2 "Value above upper limit" 1 "Value below lower limit" 0 "Value OK" ;
VAL_ 1568 IPC1_F_OdometerParameter 1 "Value unreliable" 0 "Value OK" ;
VAL_ 1568 IPC1_St_RheostatLevel 7 "Reserved" 6 "Reserved" 5 "level6" 4 "level5" 3 "level4" 2 "level3" 1 "level2" 0 "level1" ;
VAL_ 1184 BCM1_Cmd_PositionLamp 1 "ON" 0 "OFF" ;
VAL_ 1383 BCM9_St_OTAmode 1 "In OTA mode" 0 "Not in OTA mode" ;
VAL_ 1392 CAPE1_F_PowerMode 2 "Valid" 1 "Invalid" 0 "Not available" ;
VAL_ 1392 CAPE1_St_PowerMode 5 "CRANK OFF(RESERVE)" 4 "CRANK" 3 "CRANK PENDING(RESERVE)" 2 "RUN" 1 "ACC" 0 "OFF" ;
VAL_ 1321 TBOX1_St_OTAmode 1 "in OTA mode" 0 "not in OTA mode" ;
Shifter.py
@@ -5,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):
@@ -192,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,
@@ -227,7 +222,7 @@
            0,
            "SA1_Live_counter":
            1,
            "SA1_Status_UnlockButtonReq":
            "EGSM1_St_DrvRqUnlock":
            SA1_Status_UnlockButtonReq_dic[self.UnlockButton],
            "SA1_Status_EcoShifterModeReq":
            0,
@@ -248,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
USBCAN.py
@@ -423,7 +423,7 @@
    def Receive(self, len=10, timeout=None):
        raw_message = (VCI_CAN_OBJ * len)()
        timeout = -1 if timeout is None else c_int(timeout * 1000)
        timeout = -1 if timeout is None else c_int(timeout)
        msg = list()
        rtn = USBCAN_DLL.VCI_Receive(self.device,
                                     self.device_index, self.channel,
widgets/ShifterTool.py
@@ -346,7 +346,7 @@
                                     output_key_temp & 0xFF)
            # output_key_temp = ((((temp_key >> 4) ^ temp_key)
            #                     << 3) ^ temp_key) & 0xFFFFFFFF
        elif level == 0x09:
        elif level == 0x11:
            output_key_temp = 0x70237577
            output_key = struct.pack('BBBB', (output_key_temp >> 24) & 0xFF,
                                     (output_key_temp >> 16) & 0xFF,
@@ -551,7 +551,7 @@
                        self.needdisconnect.value = 0
                        self._isOpen.value = 0
                else:
                    msg, num = self._usbcan.Receive(len=1)
                    msg, num = self._usbcan.Receive(len=10, timeout=10)
                    if not num == 0:
                        for i in range(num):
                            if msg[i].arbitration_id == self.shifter.canid.phy_txId:
@@ -606,7 +606,7 @@
        if self._isOpen.value == 0:
            if self._usbcan is None:
                self.update_HardwareDevice()
                can_filters = [{'can_id': 0x420, 'can_mask': 0xFFFFFFFF}]
                can_filters = [{'can_id': 0x5E0, 'can_mask': 0xFFFFFFFF}]
                bitrate = list(
                    TIMING_DICT.keys())[self.devicedescription.baudrate]
@@ -721,14 +721,14 @@
        for i in range(_dataSize):
            receiveNum += 1
            msg = self.msgQueue.get()
            if msg.arbitration_id == 0x420:
                self.shifter.FramUnpack(msg.arbitration_id, msg.data)
                resp_data = self.Vehicle.ShiftLogic(self.shifter)
                self.send_VehiclePosition(resp_data)
            # if msg.arbitration_id == 0x420:
            #     self.shifter.FramUnpack(msg.arbitration_id, msg.data)
            #     resp_data = self.Vehicle.ShiftLogic(self.shifter)
            #     self.send_VehiclePosition(resp_data)
            formateddata.append(self._formatMsgData(
                receiveNum, msg, True))  # return a data list
        self._insertDataSmooth(data=formateddata, datasize=_dataSize)
        self.dispShiftstatus()
        # self.dispShiftstatus()
    def _insertDataSmooth(self, data, datasize):
        # row = 6-datasize
@@ -786,7 +786,7 @@
                "background-color:rgb(255, 85, 127)")
    def SecurityUnlockLevel_2(self):
        data = self.udsclient.unlock_security_access(9)
        data = self.udsclient.unlock_security_access(0x11)
        if data.positive:
            self.UI.pushButton_32.setStyleSheet(
                "background-color:rgb(255, 85, 127)")
@@ -1006,7 +1006,7 @@
            response = self.udsclient.change_session(3)
            if response.positive:
                self.disp_string('>>> 解锁安全访问')
                response = self.udsclient.unlock_security_access(9)
                response = self.udsclient.unlock_security_access(0x11)
            if response.positive:
                # 检查编程条件
@@ -1041,7 +1041,7 @@
        if response.positive:
            # 安全访问
            self.disp_string('>>> 安全访问')
            response = self.udsclient.unlock_security_access(9)
            response = self.udsclient.unlock_security_access(0x11)
        # print(response)
        if response.positive:
            self.disp_string('>>> 请求下载驱动文件')