From dd84d3ff28816a22a911bb26b435026b728676db Mon Sep 17 00:00:00 2001
From: tao_z <tzj0429@163.com>
Date: Sun, 07 Aug 2022 21:42:44 +0800
Subject: [PATCH] 针对B41V修改

---
 widgets/ShifterTool.py     |   22 +-
 Shifter.py                 |   39 ++--
 USBCAN.py                  |    2 
 DBC/BJEV_B41V_20220411.dbc |  349 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 381 insertions(+), 31 deletions(-)

diff --git a/DBC/BJEV_B41V_20220411.dbc b/DBC/BJEV_B41V_20220411.dbc
new file mode 100644
index 0000000..3dfb036
--- /dev/null
+++ b/DBC/BJEV_B41V_20220411.dbc
@@ -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" ;
diff --git a/Shifter.py b/Shifter.py
index 48472d0..00d08d9 100644
--- a/Shifter.py
+++ b/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
diff --git a/USBCAN.py b/USBCAN.py
index 42ee2d2..45bfe07 100644
--- a/USBCAN.py
+++ b/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,
diff --git a/widgets/ShifterTool.py b/widgets/ShifterTool.py
index d357388..0fb5bd0 100644
--- a/widgets/ShifterTool.py
+++ b/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('>>> 请求下载驱动文件')

--
Gitblit v1.8.0