From 698b17133dd304fe293f495aa3b96c4274ccdd50 Mon Sep 17 00:00:00 2001
From: tao_z <tzj0429@163.com>
Date: Wed, 22 Jun 2022 23:03:00 +0800
Subject: [PATCH] 新增换挡逻辑功能

---
 widgets/ShifterTool.py |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/widgets/ShifterTool.py b/widgets/ShifterTool.py
index 361fa4e..e9aa7f1 100644
--- a/widgets/ShifterTool.py
+++ b/widgets/ShifterTool.py
@@ -236,11 +236,13 @@
         self.sendQueue = Queue()  # can layer send queue
         self.CANtoIsoTPQueue = Queue()  # CAN --> isotp
         self.shifter = ShifterClass()
+        self.Vehicle = VehicleClass()
         self.devicedescription = HardwreDevice()
         self.windows = QtWidgets.QMainWindow()
         self.UI = Ui_MainWindow()
         self.UI.setupUi(window)
         self._dev_info = None
+        self.dbc = cantools.database.load_file("DBC/SX7H.dbc")
         self.can_thread = threading.Thread(target=self.can_thread)
         self.TestPresentTimer = QtCore.QTimer()
         self.TestPresentTimer.timeout.connect(self.creat_testpresentReq)
@@ -566,6 +568,17 @@
         msg.channel = 0
         msg.data = [0x02, 0x3e, 0x80, 0, 0, 0, 0, 0]
         msg.is_extended_id = False
+        msg.is_remote_frame = False
+        self._usbcan.send(msg)
+
+    def send_VehiclePosition(self, data=[]):
+        msg = Message()
+        msg.arbitration_id = 0x10
+        msg.dlc = 8
+        msg.channel = 0
+        msg.data = data
+        msg.is_extended_id = False
+        msg.is_remote_frame = False
         self._usbcan.send(msg)
 
     def open_close(self):
@@ -642,6 +655,38 @@
         self.UI.pushButton_41.setStyleSheet(
             Style_dic[self.shifter.UnlockButton])
         self.UI.pushButton_40.setStyleSheet(Style_dic[self.shifter.Pbutton])
+        #X2
+        self.UI.pushButton_37.setStyleSheet(
+            Style_dic[self.shifter.position == 2])
+        #X1
+        self.UI.pushButton_38.setStyleSheet(
+            Style_dic[self.shifter.position == 3])
+        #Z
+        self.UI.pushButton_30.setStyleSheet(
+            Style_dic[self.shifter.position == 0])
+        #Y1
+        self.UI.pushButton_33.setStyleSheet(
+            Style_dic[self.shifter.position == 4])
+        #Y2
+        self.UI.pushButton_34.setStyleSheet(
+            Style_dic[self.shifter.position == 5])
+        #M
+        self.UI.pushButton_39.setStyleSheet(
+            Style_dic[self.shifter.position == 0xe])
+        #M+
+        self.UI.pushButton_35.setStyleSheet(
+            Style_dic[self.shifter.position == 0xd])
+        #M-
+        self.UI.pushButton_36.setStyleSheet(
+            Style_dic[self.shifter.position == 0xc])
+        self.UI.pushButton_42.setStyleSheet(
+            ColorStyle_dic[self.Vehicle.ShiftLeverPos == "P"])
+        self.UI.pushButton_43.setStyleSheet(
+            ColorStyle_dic[self.Vehicle.ShiftLeverPos == "D"])
+        self.UI.pushButton_44.setStyleSheet(
+            ColorStyle_dic[self.Vehicle.ShiftLeverPos == "N"])
+        self.UI.pushButton_45.setStyleSheet(
+            ColorStyle_dic[self.Vehicle.ShiftLeverPos == "R"])
 
     def _updateRootList(self):
         _dataSize = self.msgQueue.qsize()
@@ -652,11 +697,14 @@
         for i in range(_dataSize):
             receiveNum += 1
             msg = self.msgQueue.get()
-            # self.shifter.FramUnpack(msg.arbitration_id, msg.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

--
Gitblit v1.8.0