autotest window fix

This commit is contained in:
neo-dl 2023-06-23 10:20:26 +02:00
parent ce525e99e5
commit 79d99bd718
9 changed files with 94 additions and 48 deletions

View File

@ -12,7 +12,7 @@ vision_saver: absent
vision: absent vision: absent
screwdriver: absent screwdriver: absent
digital_io: present digital_io: present
second_leak_test: absent barcode_recipe_selection: present
fixture_id: present fixture_id: present
discard_box: present discard_box: present

View File

@ -11,6 +11,7 @@ from .tecna_marposs_provaset_t3 import TecnaMarpossProvasetT3
from .tecna_screwdriver import TecnaScrewdriver from .tecna_screwdriver import TecnaScrewdriver
from .test_component import TestComponent from .test_component import TestComponent
from .usb_586x import USB_586x from .usb_586x import USB_586x
from .rfid_pn532 import RFID_PN532
if "--vision" in sys.argv: if "--vision" in sys.argv:
from .galaxy_camera import GalaxyCamera from .galaxy_camera import GalaxyCamera
from .neo_pixels import NeoPixels from .neo_pixels import NeoPixels

View File

@ -85,6 +85,7 @@ class Component(QObject):
""" """
super().__init__() super().__init__()
self.config = config self.config = config
self.log=logging.getLogger(f"{self.__class__.__name__}")
self.name = name if name is not None else str(id(self)) self.name = name if name is not None else str(id(self))
self._threaded = threaded self._threaded = threaded
self._period = period self._period = period

View File

@ -1,42 +0,0 @@
import ctypes
import sys
import platform
from PyQt5.QtCore import QMutex, Qt, QTimer, pyqtSlot, pyqtSignal
from .component import Component
import nfc
from nfc.clf import RemoteTarget
is_win = platform.system() == "Windows"
class RFID(Component):
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)
self.mutex = QMutex()
self.simulate="--sim-rfid" in sys.argv
self.clf = nfc.ContactlessFrontend()
def open_device(self):
self.clf.open('tty:USB0:pn532')
def close_device(self):
pass
@pyqtSlot()
def start(self):
# ACQUISITION TIMER
self.timer = QTimer()
self.timer.setTimerType(Qt.PreciseTimer)
self.timer.setInterval(int(1000 / 20))
self.timer.timeout.connect(self.get)
self.timer.start()
super().start()
@pyqtSlot()
def get(self):
data=None
if data is not None:
super()._get([data])

View File

@ -0,0 +1,67 @@
import ctypes
import sys
import platform
from PyQt5.QtCore import QMutex, Qt, QTimer, pyqtSlot, pyqtSignal
from .component import Component
import nfc
from nfc.clf import RemoteTarget
class RFID_PN532(Component):
new_id_signal = pyqtSignal()
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)
self.mutex = QMutex()
self.simulate="--sim-rfid" in sys.argv
self.clf = None
self.connected=False
self.tag_present=False
self.current_data=None
self.is_win = platform.system() == "Windows"
self.dev_list = ["tty:USB0:pn532","tty:USB1:pn532"] if self.is_win else [f"{self.config['fixture_rfid']['port']}:pn532"]
def open_device(self):
clf = nfc.ContactlessFrontend()
for dev in self.dev_list:
connected = clf.open(dev)
if connected:
self.log.info(f"CONNECTED TO {dev}")
break
else:
self.log.info(f"UNABLE TO CONNECT TO {dev}")
def close_device(self):
self.clf.close()
@pyqtSlot()
def start(self):
super().start()
@pyqtSlot()
def get(self):
try:
if not self.connected:
self.open_device()
else:
target = self.clf.sense(RemoteTarget('106A'), RemoteTarget('106B'), RemoteTarget('212F'))
if target is not None:
tag = nfc.tag.activate(self.clf, target)
if tag is not None:
self.log.debug("tag present")
if tag.ndef is not None:
tag_content=tag.ndef.records[0]
if tag_content!=self.current_data:
self.log.info(f"new tag detected:{tag_content}")
self.current_data=tag_content
self.new_id_signal.emit(self.current_data)
else:
self.log.error("tag is not NDEF")
else:
self.log.debug("no target present")
except Exception as e:
self.log.exception(f"{e}")
self.connected = False

View File

@ -11,6 +11,7 @@ import weakref
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
if platform.system().lower() == "windows": if platform.system().lower() == "windows":
sys.path.append(f"{os.getcwd()}\src\components") sys.path.append(f"{os.getcwd()}\src\components")
else: else:
@ -63,7 +64,7 @@ try:
# IMPORT PROJECT ONLY AFTER SETTING UP SIGNAL, FAULTHANDLER AND LOGGHING # IMPORT PROJECT ONLY AFTER SETTING UP SIGNAL, FAULTHANDLER AND LOGGHING
from components import (ArchiveSynchronizer, Multicomp730424, from components import (ArchiveSynchronizer, Multicomp730424,
Os_Label_Printer, RemoteAPI, Os_Label_Printer, RemoteAPI,
TecnaMarpossProvasetT3, TecnaScrewdriver, USB_586x) TecnaMarpossProvasetT3, TecnaScrewdriver, USB_586x,RFID_PN532)
from lib.db import Users from lib.db import Users
from lib.helpers import ConfigReader from lib.helpers import ConfigReader
from PyQt5.QtCore import QObject, QThread, pyqtSignal from PyQt5.QtCore import QObject, QThread, pyqtSignal
@ -101,7 +102,8 @@ try:
"remote_api": {"c": RemoteAPI, "k": {"main": self}}, "remote_api": {"c": RemoteAPI, "k": {"main": self}},
"screwdriver": {"c": TecnaScrewdriver, "k": {"paused": True}}, "screwdriver": {"c": TecnaScrewdriver, "k": {"paused": True}},
"tecna_t3": {"c": TecnaMarpossProvasetT3, "k": {"paused": True}}, "tecna_t3": {"c": TecnaMarpossProvasetT3, "k": {"paused": True}},
"digital_io":{"c":USB_586x,"k":{"paused":True}} "digital_io":{"c":USB_586x,"k":{"paused":True}},
"fixture_id":{"c":RFID_PN532,"k":{"paused":False}},
} }
# VISION COMPONENT IS OPTIONAL AND DISABLED BY DEFAULT # VISION COMPONENT IS OPTIONAL AND DISABLED BY DEFAULT
if "--vision" in sys.argv: if "--vision" in sys.argv:
@ -146,15 +148,18 @@ try:
logging.exception(traceback.format_exc()) logging.exception(traceback.format_exc())
QMessageBox.critical(None, "Errore", f"Errore di avvio del programma di collaudo:\n\n{e}") QMessageBox.critical(None, "Errore", f"Errore di avvio del programma di collaudo:\n\n{e}")
quit() quit()
# connect camera frames to vision # connect camera frames to vision
if "vision" in self.components and "uvc_camera" in self.components: if "vision" in self.components and "uvc_camera" in self.components:
self.components["vision"].set_sources({"uvc_camera": self.components["uvc_camera"].out}) self.components["vision"].set_sources({"uvc_camera": self.components["uvc_camera"].out})
elif "vision" in self.components and "galaxy_camera" in self.components: elif "vision" in self.components and "galaxy_camera" in self.components:
self.components["vision"].set_sources({"galaxy_camera": self.components["galaxy_camera"].out}) self.components["vision"].set_sources({"galaxy_camera": self.components["galaxy_camera"].out})
# connect tecna to screwdriver # connect tecna to screwdriver
if "screwdriver" in self.components and "tecna_t3" in self.components: if "screwdriver" in self.components and "tecna_t3" in self.components:
self.components["tecna_t3"].set_requestors({"screwdriver": self.components["screwdriver"].request}) self.components["tecna_t3"].set_requestors({"screwdriver": self.components["screwdriver"].request})
self.components["screwdriver"].set_sources({"tecna_t3": self.components["tecna_t3"].out}) self.components["screwdriver"].set_sources({"tecna_t3": self.components["tecna_t3"].out})
# GUI INIT # GUI INIT
if "--no-gui" not in sys.argv: if "--no-gui" not in sys.argv:
# self.main_window = Main_Window(self.bench) # self.main_window = Main_Window(self.bench)

View File

@ -3,12 +3,19 @@ import ndef
import nfc import nfc
from nfc.clf import RemoteTarget from nfc.clf import RemoteTarget
clf = nfc.ContactlessFrontend()
connected=False connected=False
while True: while True:
try: try:
if not connected: if not connected:
clf = nfc.ContactlessFrontend()
connected=clf.open('tty:USB0:pn532') connected=clf.open('tty:USB0:pn532')
if connected:
print("CONNECTED TO TTYUSB0")
else:
connected = clf.open('tty:USB1:pn532')
if connected:
print("CONNECTED TO TTYUSB1")
if connected: if connected:
target = clf.sense(RemoteTarget('106A'), RemoteTarget('106B'), RemoteTarget('212F')) target = clf.sense(RemoteTarget('106A'), RemoteTarget('106B'), RemoteTarget('212F'))
if target is not None: if target is not None:
@ -37,6 +44,8 @@ while True:
print("ERROR NOT NDEF") print("ERROR NOT NDEF")
else: else:
print("NO TARGET") print("NO TARGET")
else:
print("NOT CONNECTED")
except Exception as e: except Exception as e:
print(f"EXCEPTION {e}") print(f"EXCEPTION {e}")
connected=False connected=False

View File

@ -76,7 +76,7 @@ class RFID(Widget):
self.rfid_input_l.setFocus() self.rfid_input_l.setFocus()
self.rfid_input_l.setPlainText("") self.rfid_input_l.setPlainText("")
self.rfid_input_l.setPalette(self.status_palettes[""]) self.rfid_input_l.setPalette(self.status_palettes[""])
self.instruction_text("SCANSIONARE BARCODE SELEZIONE RICETTA") self.instruction_text("INSERIRE IL CONNETTORE DI COLLEGAMENTO DIMA PER SELEZIONARE AUTOMATICAMENTE LA RICETTA DI COLLAUDO")
def instruction_text(self,text,color=None): def instruction_text(self,text,color=None):
if getattr(self.parent.centralWidget, "set_text"): if getattr(self.parent.centralWidget, "set_text"):

View File

@ -8,7 +8,7 @@ from datetime import datetime
from lib.db import Archive, Steps, Users from lib.db import Archive, Steps, Users
from lib.helpers import get_shift from lib.helpers import get_shift
from playhouse.shortcuts import model_to_dict from playhouse.shortcuts import model_to_dict
from PyQt5.QtCore import QTimer from PyQt5.QtCore import QTimer, pyqtSlot
from PyQt5.QtWidgets import QMessageBox from PyQt5.QtWidgets import QMessageBox
from ui.helpers import replace_widget from ui.helpers import replace_widget
from ui.recipe_selection import Recipe_Selection from ui.recipe_selection import Recipe_Selection
@ -644,3 +644,8 @@ class Test(Widget):
labels = printer_fields["extra_label"].split(",") labels = printer_fields["extra_label"].split(",")
for label in labels: for label in labels:
self.components["extra_label_printer"].print_label(f"{label}.prn", context=None) self.components["extra_label_printer"].print_label(f"{label}.prn", context=None)
@pyqtSlot()
def load_recipe_from_rfid(self,data):
if self.step.type == "barcode_recipe_selection":
self.cycle_available_steps["barcode_recipe_selection"].get(data)