From 0d2617e54eb331142d5b4fbdc3536dccad026b9d Mon Sep 17 00:00:00 2001
From: Generic Bliss account for Control Software <blissadm@lbm05ctrl.esrf.fr>
Date: Fri, 10 Jan 2025 11:22:59 +0100
Subject: [PATCH] add qr code functionality

---
 .../sample_changer_ds/TomoSampleChanger.py    | 43 ++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/samplechanger/sample_changer_ds/TomoSampleChanger.py b/src/samplechanger/sample_changer_ds/TomoSampleChanger.py
index 5399eca..546ff13 100644
--- a/src/samplechanger/sample_changer_ds/TomoSampleChanger.py
+++ b/src/samplechanger/sample_changer_ds/TomoSampleChanger.py
@@ -413,6 +413,8 @@ class TomoSampleChanger(Device):
         self.attr_ParkingPosition_read  = False
         self.attr_SafetyChainOK_read    = False
         self.attr_RobotSpeed_read    = "None"
+        self.attr_QRCode_read    = False
+        self.attr_QRCodeValue_read = "None"
         # init flags for state and status
         self.init_done      = False
         self.init_error     = None
@@ -475,7 +477,8 @@ class TomoSampleChanger(Device):
             robot.cs8LibraryName = 'id19tomo'
         elif self.robot_controller == "bm05":
             from StaubPy.bm05Controller2 import BM05Controller2
-            robot = BM05Controller2(controllerAssociated=self.robot_host, logOnController=False)
+            #robot = BM05Controller2(controllerAssociated=self.robot_host, logOnController=False)
+            robot = BM05Controller2(controllerAssociated=self.robot_host, logOnController=False, qrcodeReaderIP="172.29.132.125",qrcodeScanEachLoading=True)
             robot.cs8LibraryName = 'bm05tomo'
         elif self.robot_controller == "sim":
             import mock
@@ -602,6 +605,44 @@ class TomoSampleChanger(Device):
         # PROTECTED REGION ID(TomoSampleChanger.set_speed) ENABLED START #
         self.robot.accelForLargeMovesMultiplicator = speed
         # PROTECTED REGION END #    //  TomoSampleChanger.set_speed
+
+    scan_qr_code = attribute(
+        label="Scan QR Code",
+        dtype=bool,
+        fget="get_scan_qr_code", fset="set_scan_qr_code",
+        doc="sample changer qr code reader")
+
+    def get_scan_qr_code(self):
+        # PROTECTED REGION ID(TomoSampleChanger.get_scan_qr_code) ENABLED START #
+        if self.is_moving == False:
+            self.attr_QRCode_read = self.robot.qrcodeScanEachLoading
+        return self.attr_QRCode_read
+        # PROTECTED REGION END #    //  TomoSampleChanger.get_scan_qr_code
+
+    def set_scan_qr_code(self, scan_qr_code):
+        # PROTECTED REGION ID(TomoSampleChanger.set_scan_qr_code) ENABLED START #
+        self.robot.qrcodeScanEachLoading = scan_qr_code
+        # PROTECTED REGION END #    //  TomoSampleChanger.set_scan_qr_code
+
+
+    qr_code = attribute(
+        label="QR Code",
+        dtype=bool,
+        fget="get_qr_code",
+        doc="sample changer qr code value")
+
+    def get_qr_code(self):
+        # PROTECTED REGION ID(TomoSampleChanger.get_scan_qr_code) ENABLED START #
+        if self.robot.qrcodeScanEachLoading:
+            if self.is_moving == False:
+                if self.robot.lastqrCodeReaded != "QRCODE_NOT_READABLE":
+                    self.attr_QRCodeValue_read = self.robot.lastqrCodeReaded
+                elif self.robot.lastqrCodeReaded2 != "QRCODE_NOT_READABLE":
+                    self.attr_QRCodeValue_read = self.robot.lastqrCodeReaded2
+                elif self.robot.lastqrCodeReaded3 != "QRCODE_NOT_READABLE":
+                    self.attr_QRCodeValue_read = self.robot.lastqrCodeReaded3
+        return self.attr_QRCodeValue_read
+        # PROTECTED REGION END #    //  TomoSampleChanger.get_scan_qr_code
     # --------
     # Commands
     # --------
-- 
GitLab