Browse Source

重构气动手接口,统一不同功能

dk 1 năm trước cách đây
mục cha
commit
af381227ee

+ 12 - 41
backend/device/fubo_pneumatic_finger.py

@@ -25,15 +25,16 @@ def get_serial_ports():
 
 class FuboPneumaticFingerClient:
     """富伯客户端"""
-
-    FLEX_CMD = b"F"
-    EXTEND_CMD = b"E"
-    BALL_CMD = b"B"
-    CYLINDER_CMD = b"C"
-    DOUBLE_CMD = b"D"
-    TREBLE_CMD = b"T"
-    RELEASE_CMD = b"R"
-
+    
+    COMMAND_TABLE = {
+        'release': b"R",
+        'cylinder': b"C",
+        'ball': b"B",
+        'flex': b"F",
+        'double': b"D",
+        'treble': b"T",
+        'extend': b"E",
+    }
     def __init__(self, init_params=None):
         self.baud_rate = 9600
         self.data_bite = 8
@@ -71,40 +72,10 @@ class FuboPneumaticFingerClient:
             logger.warning(warning_info)
             return 0
     
-    def release(self):
-        self.ser.write(self.RELEASE_CMD)
-        return self.ser.read()
-
-    def extend(self):
-        self.ser.write(self.EXTEND_CMD)
-        return self.ser.read()
-
-    def reconnect(self):
-        self.close()
-        return self.connect()
-    
-    def start(self, model=None):
-        if (model == "flex") or (model is None):
-            self.ser.write(self.FLEX_CMD)
-        elif model == "ball":
-            self.ser.write(self.BALL_CMD)
-        elif model == "cylinder":
-            self.ser.write(self.CYLINDER_CMD)
-        elif model == "double":
-            self.ser.write(self.DOUBLE_CMD)
-        elif model == "treble":
-            self.ser.write(self.TREBLE_CMD)
+    def start(self, command):
+        self.ser.write(self.COMMAND_TABLE[command])
         return self.ser.read()
 
-    def start_round(self, model=None, time_interval=5):        
-        self.start(model)
-        time.sleep(time_interval)
-        self.extend()
-        return 1
-
-    def stop(self):
-        return 1
-
     def status(self):
         status = {"is_connected": self.is_connected}
         return status

+ 4 - 2
backend/settings/config.py

@@ -34,7 +34,8 @@ class Settings:
         'ball': 2,
         'flex': 3,
         'double': 4,
-        'treble': 5
+        'treble': 5,
+        'extend': 6
     }
     FINGERMODEL_IDS_INVERSE = {
         0: 'rest',
@@ -42,7 +43,8 @@ class Settings:
         2: 'ball',
         3: 'flex',
         4: 'double',
-        5: 'treble'
+        5: 'treble',
+        6: 'extend'
     }
     PROJECT_VERSION: str = '0.0.1'
     DATA_PATH = './data'

+ 1 - 9
backend/tests/test_peripheral_hand.py

@@ -16,22 +16,14 @@ class TestPeripheralHand(unittest.TestCase):
         self.assertTrue(client.is_connected)
         client.close()
 
-
     def test_client_close_success(self):
         client = FuboPneumaticFingerClient(init_params)
         client.close()
         self.assertFalse(client.is_connected)
 
-    def test_start_flex_and_extend_success(self):
-        client = FuboPneumaticFingerClient(init_params)
-        client.start_round(time_interval=7)
-        time.sleep(3)
-        client.close()
-
-
     def test_start_extend_success(self):
         client = FuboPneumaticFingerClient(init_params)
-        client.extend()
+        client.start('extend')
         time.sleep(3)
         client.close()