Merge remote-tracking branch 'origin/master'

This commit is contained in:
edo-neo 2025-01-14 10:16:15 +01:00
commit 374ea2cfae
6 changed files with 267 additions and 213 deletions

Binary file not shown.

View File

@ -0,0 +1,34 @@
CT~~CD,~CC^~CT~
^XA
~TA000
~JSN
^LT0
^MNW
^MTT
^PON
^PMN
^LH0,0
^JMA
^PR2,2
~SD20
^JUS
^LRN
^CI27
^PA0,1,1,0
^XZ
^XA
^MMT
^PW320
^LL1039
^LS0
^FT9,46^A0N,24,23^FH\^CI28^FD{RECIPE}^FS^CI27
^FT250,38^A0N,16,15^FH\^CI28^FDVEROX^FS^CI27
^FT9,80^A0N,24,23^FH\^CI28^FDFED^FS^CI27
^BY2,3,58^FT65,166^BCN,,Y,N
^FH\^FD>:{RECIPE}^FS
^BY2,3,54^FT131,259^BCN,,Y,N
^FH\^FD>:{SN}^FS
^FT9,316^A0N,24,23^FH\^CI28^FD{DATE}^FS^CI27
^FT109,321^A0N,24,23^FH\^CI28^FD{SN}^FS^CI27
^PQ1,0,1,Y
^XZ

View File

@ -15,7 +15,8 @@ tecna_t3: present
vision_saver: absent vision_saver: absent
vision: absent vision: absent
screwdriver: absent screwdriver: absent
fixture_id: absent fixture_id: present
barcode_recipe_selection: present
digital_io: present digital_io: present
external_flush_blow: absent external_flush_blow: absent
@ -25,11 +26,11 @@ poll_time: 10
hold_time: 10 hold_time: 10
[tecna_t3] [tecna_t3]
port: /dev/ttyUSB0 port: /dev/ttyUSB1
model: t3p model: t3p
[fixture_rfid] [fixture_rfid]
port: COM5 port: USB0
[digital_io] [digital_io]
# OUTPUT MAP FOR VALVE CONTROL UNITS # OUTPUT MAP FOR VALVE CONTROL UNITS

View File

@ -11,6 +11,7 @@ from src.lib.nfc.clf import RemoteTarget
class RFID_PN532(Component): class RFID_PN532(Component):
new_id_signal = pyqtSignal(str) new_id_signal = pyqtSignal(str)
rfid_error_signal = pyqtSignal(bool)
def __init__(self, config=None, name=None, period=1, lazy=True, paused=False, threaded=True): def __init__(self, config=None, name=None, period=1, lazy=True, paused=False, threaded=True):
super().__init__(config=config, name=name, period=period, lazy=lazy, paused=paused, threaded=threaded) super().__init__(config=config, name=name, period=period, lazy=lazy, paused=paused, threaded=threaded)
@ -49,6 +50,8 @@ class RFID_PN532(Component):
try: try:
if not self.connected: if not self.connected:
self.open_device() self.open_device()
if self.connected:
self.rfid_error_signal.emit(True)
else: else:
target = self.clf.sense(RemoteTarget('106A'), RemoteTarget('106B'), RemoteTarget('212F')) target = self.clf.sense(RemoteTarget('106A'), RemoteTarget('106B'), RemoteTarget('212F'))
if target is not None: if target is not None:
@ -61,6 +64,7 @@ class RFID_PN532(Component):
self.log.info(f"new tag detected:{tag_content}") self.log.info(f"new tag detected:{tag_content}")
self.current_data=tag_content self.current_data=tag_content
self.new_id_signal.emit(self.current_data) self.new_id_signal.emit(self.current_data)
self.rfid_error_signal.emit(self.connected)
else: else:
self.log.error("tag is not NDEF") self.log.error("tag is not NDEF")
else: else:
@ -68,12 +72,15 @@ class RFID_PN532(Component):
self.log.info(f"tag removed:{self.current_data}") self.log.info(f"tag removed:{self.current_data}")
self.current_data = None self.current_data = None
self.new_id_signal.emit(None) self.new_id_signal.emit(None)
self.rfid_error_signal.emit(False)
self.log.debug("no target present") self.log.debug("no target present")
except Exception as e: except Exception as e:
self.log.info(f"{e}") self.log.info(f"{e}")
self.connected = False self.connected = False
finally: finally:
if not self.connected:
self.rfid_error_signal.emit(False)
self.mutex.unlock() self.mutex.unlock()
def write_tag(self,data): def write_tag(self,data):

View File

@ -6,6 +6,7 @@ import weakref
from datetime import datetime, timedelta from datetime import datetime, timedelta
from PyQt5.QtCore import QTimer, pyqtSlot from PyQt5.QtCore import QTimer, pyqtSlot
from PyQt5.QtWidgets import QMessageBox from PyQt5.QtWidgets import QMessageBox
from component import Component
from lib.db import Archive, Recipes, Users from lib.db import Archive, Recipes, Users
from lib.helpers import get_shift from lib.helpers import get_shift
from lib.helpers.step import Step from lib.helpers.step import Step
@ -27,6 +28,7 @@ from ui.test_vision import Test_Vision
from ui.test_warning_img import Test_Warning_Img from ui.test_warning_img import Test_Warning_Img
from ui.widget import Widget from ui.widget import Widget
from components import ArchiveSynchronizer from components import ArchiveSynchronizer
from src.components.rfid_pn532 import RFID_PN532
class Test(Widget): class Test(Widget):
@ -54,6 +56,10 @@ class Test(Widget):
self.auto_import = Recipe_Selection self.auto_import = Recipe_Selection
self.archive_synch = ArchiveSynchronizer(config=config) self.archive_synch = ArchiveSynchronizer(config=config)
self.rfid = RFID_PN532(config=config)
self.error_label.setText("")
self.error_label.setStyleSheet("QLabel { color: red; }")
self.rfid.rfid_error_signal.connect(self.handle_rfid_error)
if self.config["hardware_config"]["barcode_recipe_selection"] == "present": if self.config["hardware_config"]["barcode_recipe_selection"] == "present":
self.recipe_selection_mode = "barcode" self.recipe_selection_mode = "barcode"
@ -170,6 +176,7 @@ class Test(Widget):
if "fixture_id" in self.components.keys(): if "fixture_id" in self.components.keys():
self.components["fixture_id"].new_id_signal.connect(self.load_recipe_from_rfid) self.components["fixture_id"].new_id_signal.connect(self.load_recipe_from_rfid)
self.components["fixture_id"].rfid_error_signal.connect(self.handle_rfid_error)
self.tag_loaded_recipe = self.main_window.tag_loaded_recipe self.tag_loaded_recipe = self.main_window.tag_loaded_recipe
# TESTING # TESTING
@ -797,3 +804,11 @@ class Test(Widget):
self.tag_loaded_recipe = None self.tag_loaded_recipe = None
self.fail_cycle() self.fail_cycle()
self.change_recipe() self.change_recipe()
@pyqtSlot(bool)
def handle_rfid_error(self, connected):
if connected:
self.error_label.setText("") # Update the label from Designer
else:
self.error_label.setText("Errore RFID.") # Update the label from Designer
self.error_label.setStyleSheet("color: red;")

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1252</width> <width>1192</width>
<height>125</height> <height>114</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -19,7 +19,6 @@
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
@ -52,33 +51,19 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>3</number> <number>3</number>
</property> </property>
<item row="1" column="12" rowspan="2"> <item row="2" column="3">
<spacer name="horizontalSpacer_3"> <widget class="QLabel" name="next_at_l">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="10">
<widget class="QLabel" name="label_6">
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>OPERATORE:</string> <string>-</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -87,7 +72,6 @@
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
@ -96,26 +80,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="10">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>N. DISEGNO:</string>
</property>
</widget>
</item>
<item row="1" column="0" rowspan="2"> <item row="1" column="0" rowspan="2">
<widget class="QPushButton" name="change_recipe_b"> <widget class="QPushButton" name="change_recipe_b">
<property name="sizePolicy"> <property name="sizePolicy">
@ -139,7 +103,6 @@
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
@ -148,62 +111,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="2">
<widget class="QLabel" name="autotests_l">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>PROSSIMO AUTOTEST:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="4" rowspan="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1" rowspan="2">
<widget class="QPushButton" name="cancel_b">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>ANNULLA TEST</string>
</property>
</widget>
</item>
<item row="1" column="11"> <item row="1" column="11">
<widget class="QLabel" name="recipe_l"> <widget class="QLabel" name="recipe_l">
<property name="sizePolicy"> <property name="sizePolicy">
@ -227,7 +134,6 @@
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
@ -236,82 +142,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="7"> <item row="1" column="2">
<widget class="QLabel" name="pieces_count_l"> <widget class="QLabel" name="time_l_2">
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>12345</string> <string>ULTIMO AUTOTEST:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="0" colspan="13">
<widget class="QLabel" name="machine_description_l">
<property name="font">
<font>
<pointsize>16</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="last_at_l">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="6" rowspan="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="5" rowspan="2">
<widget class="QLabel" name="time_l">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>12345
567</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -331,51 +171,17 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="1" column="7"> <item row="1" column="5" rowspan="2">
<widget class="QLabel" name="label_9"> <widget class="QLabel" name="time_l">
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>PEZZI FATTI</string> <string>12345
</property> 567</string>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="time_l_2">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>ULTIMO AUTOTEST:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLabel" name="next_at_l">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -388,7 +194,6 @@
<font> <font>
<family>DejaVu Sans</family> <family>DejaVu Sans</family>
<pointsize>11</pointsize> <pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
@ -398,6 +203,198 @@ CONTATORE</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="4" rowspan="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="10">
<widget class="QLabel" name="label_6">
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>OPERATORE:</string>
</property>
</widget>
</item>
<item row="1" column="10">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>N. DISEGNO:</string>
</property>
</widget>
</item>
<item row="2" column="7">
<widget class="QLabel" name="pieces_count_l">
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>12345</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="6" rowspan="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="2">
<widget class="QLabel" name="autotests_l">
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>PROSSIMO AUTOTEST:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="last_at_l">
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="7">
<widget class="QLabel" name="label_9">
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>PEZZI FATTI</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="1" rowspan="2">
<widget class="QPushButton" name="cancel_b">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>ANNULLA TEST</string>
</property>
</widget>
</item>
<item row="1" column="12" rowspan="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2" colspan="8">
<widget class="QLabel" name="machine_description_l">
<property name="font">
<font>
<pointsize>16</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="10" colspan="3">
<widget class="QLabel" name="error_label">
<property name="font">
<font>
<pointsize>16</pointsize>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>