Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
c2e19d3ba9
Binary file not shown.
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
<xpml><page quantity='0' pitch='130.0 mm'></xpml>SIZE 50.1 mm, 130 mm
|
SIZE 50.1 mm, 130 mm
|
||||||
GAP 3 mm, 0 mm
|
GAP 3 mm, 0 mm
|
||||||
SPEED 2
|
SPEED 2
|
||||||
DENSITY 7
|
DENSITY 7
|
||||||
@ -8,13 +8,12 @@ OFFSET 0 mm
|
|||||||
SET PEEL OFF
|
SET PEEL OFF
|
||||||
SET CUTTER OFF
|
SET CUTTER OFF
|
||||||
SET PARTIAL_CUTTER OFF
|
SET PARTIAL_CUTTER OFF
|
||||||
<xpml></page></xpml><xpml><page quantity='1' pitch='130.0 mm'></xpml>SET TEAR ON
|
SET TEAR ON
|
||||||
CLS
|
CLS
|
||||||
DMATRIX 246,104,155,155,x4,14,14,"{RECIPE}{DD}{MO}{YY}{HH}{MI}{SN5}"
|
DMATRIX 270,95,131,131,x3,22,22,"{RECIPE}-{DD}{MO}{YY}{SN5}"
|
||||||
CODEPAGE 1252
|
CODEPAGE 1252
|
||||||
TEXT 21,198,"0",270,7,7,"{RECIPE}{DD}{MO}{YY}{HH}{MI}{SN5}"
|
TEXT 378,38,"ROMAN.TTF",90,1,7,"{RECIPE}-{DD}{MO}{YY}{SN5}"
|
||||||
DMATRIX 151,104,250,250,x4,14,14,"{RECIPE}{DD}{MO}{YY}{HH}{MI}{SN5}"
|
DMATRIX 175,95,226,226,x3,22,22,"{RECIPE}-{DD}{MO}{YY}{SN5}"
|
||||||
DMATRIX 57,104,344,344,x4,14,14,"{RECIPE}{DD}{MO}{YY}{HH}{MI}{SN5}"
|
DMATRIX 80,95,321,321,x3,22,22,"{RECIPE}-{DD}{MO}{YY}{SN5}"
|
||||||
BOX 8,16,394,242,3
|
BOX 8,16,394,242,3
|
||||||
PRINT 1,1
|
PRINT 1,1
|
||||||
<xpml></page></xpml><xpml><end/></xpml>
|
|
||||||
@ -1,13 +1,13 @@
|
|||||||
[hardware_config]
|
[hardware_config]
|
||||||
; archive_synchronizer: present
|
; archive_synchronizer: present
|
||||||
; galaxy_camera: present
|
; galaxy_camera: present
|
||||||
; uvc_camera: absent
|
|
||||||
; label_printer: present
|
; label_printer: present
|
||||||
; multicomp: present
|
; multicomp: present
|
||||||
; neo_pixels: present
|
; neo_pixels: present
|
||||||
; remote_api: present
|
; remote_api: present
|
||||||
; screwdriver: present
|
; screwdriver: present
|
||||||
; tecna_t3: present
|
; tecna_t3: present
|
||||||
|
; uvc_camera: present
|
||||||
; vision_saver: present
|
; vision_saver: present
|
||||||
; vision: present
|
; vision: present
|
||||||
|
|
||||||
@ -27,10 +27,10 @@ balance_green: 1.0
|
|||||||
balance_blue: 1.5
|
balance_blue: 1.5
|
||||||
|
|
||||||
[uvc_camera]
|
[uvc_camera]
|
||||||
horizontal_resolution: 2448
|
horizontal_resolution: 3264
|
||||||
vertical_resolution: 2048
|
vertical_resolution: 2448
|
||||||
exposure_time: 10000
|
; exposure_time: 10000
|
||||||
focus: 100
|
; focus: 100
|
||||||
|
|
||||||
[vision_saver]
|
[vision_saver]
|
||||||
time_format: %Y-%m-%d_%H-%M-%S
|
time_format: %Y-%m-%d_%H-%M-%S
|
||||||
@ -60,7 +60,7 @@ modify_pin: 603
|
|||||||
select_pin: 603
|
select_pin: 603
|
||||||
|
|
||||||
[screwdriver]
|
[screwdriver]
|
||||||
enable_pin: 0
|
disable_pin: 0
|
||||||
status_pin: 0
|
status_pin: 0
|
||||||
|
|
||||||
[multicomp]
|
[multicomp]
|
||||||
|
|||||||
@ -1,2 +1,26 @@
|
|||||||
|
[hardware_config]
|
||||||
|
archive_synchronizer: present
|
||||||
|
galaxy_camera: absent
|
||||||
|
label_printer: present
|
||||||
|
multicomp: present
|
||||||
|
neo_pixels: present
|
||||||
|
remote_api: present
|
||||||
|
screwdriver: present
|
||||||
|
tecna_t3: present
|
||||||
|
uvc_camera: present
|
||||||
|
vision_saver: present
|
||||||
|
vision: present
|
||||||
|
|
||||||
[tecna_t3]
|
[tecna_t3]
|
||||||
|
model: t3l
|
||||||
port: /dev/ttyUSB0
|
port: /dev/ttyUSB0
|
||||||
|
|
||||||
|
[multicomp]
|
||||||
|
port: /dev/ttyACM0
|
||||||
|
|
||||||
|
[neo_pixels]
|
||||||
|
port: /dev/ttyACM1
|
||||||
|
|
||||||
|
[archive_synchronizer]
|
||||||
|
poll_time: 6
|
||||||
|
hold_time: 1
|
||||||
|
|||||||
@ -7,6 +7,7 @@ neo_pixels: present
|
|||||||
remote_api: present
|
remote_api: present
|
||||||
screwdriver: present
|
screwdriver: present
|
||||||
tecna_t3: present
|
tecna_t3: present
|
||||||
|
uvc_camera: present
|
||||||
vision_saver: present
|
vision_saver: present
|
||||||
vision: present
|
vision: present
|
||||||
|
|
||||||
|
|||||||
@ -10,5 +10,6 @@ from .serial_label_printer import Serial_Label_Printer
|
|||||||
from .tecna_marposs_provaset_t3 import TecnaMarpossProvasetT3
|
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 .uvc_camera import UVCCamera
|
||||||
from .vision import Vision
|
from .vision import Vision
|
||||||
from .vision_saver import VisionSaver
|
from .vision_saver import VisionSaver
|
||||||
|
|||||||
@ -36,7 +36,6 @@ class ArchiveSynchronizer(Component):
|
|||||||
self.gcs_bucket = None
|
self.gcs_bucket = None
|
||||||
|
|
||||||
@db.connection_context()
|
@db.connection_context()
|
||||||
@db.atomic()
|
|
||||||
def _get(self):
|
def _get(self):
|
||||||
for record in Archive.select().where((Archive.archived != True) | (Archive.uploaded != True)): # using "is not True" breaks the query.
|
for record in Archive.select().where((Archive.archived != True) | (Archive.uploaded != True)): # using "is not True" breaks the query.
|
||||||
if not self.simulate:
|
if not self.simulate:
|
||||||
|
|||||||
1
src/components/dummies/cv2/__init__.py
Normal file
1
src/components/dummies/cv2/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from .dummy_video_capture import DummyVideoCapture
|
||||||
32
src/components/dummies/cv2/dummy_video_capture.py
Normal file
32
src/components/dummies/cv2/dummy_video_capture.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import logging
|
||||||
|
|
||||||
|
import cv2
|
||||||
|
from PyQt5.QtCore import QThread
|
||||||
|
|
||||||
|
|
||||||
|
class DummyVideoCapture:
|
||||||
|
def __init__(self, device):
|
||||||
|
self.values = {}
|
||||||
|
self.sim_imgs = None
|
||||||
|
self.log = logging.getLogger(f"{self.__class__.__name__} ({id(self)}) (dummy)")
|
||||||
|
self.log.debug(f"__init__({device!r})")
|
||||||
|
|
||||||
|
def get(self, prop):
|
||||||
|
val = self.values.get(prop, 0)
|
||||||
|
self.log.debug(f"{self.__class__.__name__}.get() -> {val}")
|
||||||
|
return val
|
||||||
|
|
||||||
|
def set(self, prop, val):
|
||||||
|
self.values[prop] = val
|
||||||
|
self.log.debug(f"{self.__class__.__name__}.set({val}) -> {val}")
|
||||||
|
|
||||||
|
def read(self):
|
||||||
|
# self.log.debug(f"{self.__class__.__name__}.read()")
|
||||||
|
if self.sim_imgs is None:
|
||||||
|
return False, None
|
||||||
|
else:
|
||||||
|
img_path = next(self.sim_imgs)
|
||||||
|
self.log.debug(f"loading image {img_path}")
|
||||||
|
frame = cv2.cvtColor(cv2.imread(str(img_path)), cv2.COLOR_BGR2RGB)
|
||||||
|
QThread.msleep(1000)
|
||||||
|
return True, frame
|
||||||
@ -159,9 +159,9 @@ registers = {
|
|||||||
# Write 0 to start the selected program
|
# Write 0 to start the selected program
|
||||||
# Write a different number from 1 to n max programs to start a specific program.
|
# Write a different number from 1 to n max programs to start a specific program.
|
||||||
"Reset running test": [102 - 1, {"dt": "16bit_uint", }],
|
"Reset running test": [102 - 1, {"dt": "16bit_uint", }],
|
||||||
"Activate specific digital output": [103 - 1, {"dt": "16bit_uint", }],
|
"Activate specific digital output": [103 - 1, {"dt": "16bit_uint", "o": 1, }],
|
||||||
# Write the number from 1 to 16 of the digital output to activate (must be set as Free in Settings)
|
# Write the number from 1 to 16 of the digital output to activate (must be set as Free in Settings)
|
||||||
"Reset specific digital output": [104 - 1, {"dt": "16bit_uint", }],
|
"Reset specific digital output": [104 - 1, {"dt": "16bit_uint", "o": 1, }],
|
||||||
# Write the number from 1 to 16 of the digital output to reset (must be set as Free in Settings)
|
# Write the number from 1 to 16 of the digital output to reset (must be set as Free in Settings)
|
||||||
"Activate digital output (bit mask)": [105 - 1, {"dt": "16bit_uint", }],
|
"Activate digital output (bit mask)": [105 - 1, {"dt": "16bit_uint", }],
|
||||||
# Write 1 in the bit corresponding to the output to be activated
|
# Write 1 in the bit corresponding to the output to be activated
|
||||||
|
|||||||
@ -130,9 +130,9 @@ registers = {
|
|||||||
# Write 0 to start the selected program
|
# Write 0 to start the selected program
|
||||||
# Write a different number from 1 to n max programs to start a specific program.
|
# Write a different number from 1 to n max programs to start a specific program.
|
||||||
"Reset running test": [102 - 1, {"dt": "16bit_uint", }],
|
"Reset running test": [102 - 1, {"dt": "16bit_uint", }],
|
||||||
"Activate specific digital output": [103 - 1, {"dt": "16bit_uint", }],
|
"Activate specific digital output": [103 - 1, {"dt": "16bit_uint", "o": 1, }],
|
||||||
# Write the number from 1 to 8 of the digital output to activate (must be set as Free in Settings)
|
# Write the number from 1 to 8 of the digital output to activate (must be set as Free in Settings)
|
||||||
"Reset specific digital output": [104 - 1, {"dt": "16bit_uint", }],
|
"Reset specific digital output": [104 - 1, {"dt": "16bit_uint", "o": 1, }],
|
||||||
# Write the number from 1 to 8 of the digital output to reset (must be set as Free in Settings)
|
# Write the number from 1 to 8 of the digital output to reset (must be set as Free in Settings)
|
||||||
"Activate digital output (bit mask)": [105 - 1, {"dt": "16bit_uint", }],
|
"Activate digital output (bit mask)": [105 - 1, {"dt": "16bit_uint", }],
|
||||||
# Write 1 in the bit corresponding to the output to be activated
|
# Write 1 in the bit corresponding to the output to be activated
|
||||||
|
|||||||
@ -13,7 +13,7 @@ class TecnaScrewdriver(Component):
|
|||||||
|
|
||||||
def config_changed(self):
|
def config_changed(self):
|
||||||
super().config_changed()
|
super().config_changed()
|
||||||
self.enable_pin = int(self.config[self.name]["enable_pin"])
|
self.disable_pin = int(self.config[self.name]["disable_pin"])
|
||||||
self.status_pin = int(self.config[self.name]["status_pin"])
|
self.status_pin = int(self.config[self.name]["status_pin"])
|
||||||
self.status_pin_mask = 1 << self.status_pin
|
self.status_pin_mask = 1 << self.status_pin
|
||||||
|
|
||||||
@ -21,9 +21,9 @@ class TecnaScrewdriver(Component):
|
|||||||
def enable(self, enabled=True):
|
def enable(self, enabled=True):
|
||||||
self.enabled = enabled
|
self.enabled = enabled
|
||||||
if self.enabled:
|
if self.enabled:
|
||||||
self.request.emit({"Activate specific digital output": self.enable_pin})
|
self.request.emit({"Reset specific digital output": self.disable_pin})
|
||||||
else:
|
else:
|
||||||
self.request.emit({"Reset specific digital output": self.enable_pin})
|
self.request.emit({"Activate specific digital output": self.disable_pin})
|
||||||
|
|
||||||
@Component.reconfig_on_error
|
@Component.reconfig_on_error
|
||||||
def disable(self, disabled=True):
|
def disable(self, disabled=True):
|
||||||
@ -35,8 +35,6 @@ class TecnaScrewdriver(Component):
|
|||||||
# READ INFO
|
# READ INFO
|
||||||
if data is None or data[-1] is None:
|
if data is None or data[-1] is None:
|
||||||
return
|
return
|
||||||
print(f"val {data[-1][list(self.sources)[0]]['Digital inputs status (mask)']:016b}")
|
|
||||||
print(f"mask { self.status_pin_mask:016b}")
|
|
||||||
screwed_flag = bool(data[-1][list(self.sources)[0]]["Digital inputs status (mask)"] & self.status_pin_mask)
|
screwed_flag = bool(data[-1][list(self.sources)[0]]["Digital inputs status (mask)"] & self.status_pin_mask)
|
||||||
screwed = screwed_flag and not self.last_screwed
|
screwed = screwed_flag and not self.last_screwed
|
||||||
self.last_screwed = screwed_flag
|
self.last_screwed = screwed_flag
|
||||||
@ -44,6 +42,5 @@ class TecnaScrewdriver(Component):
|
|||||||
self.disable()
|
self.disable()
|
||||||
self.enable()
|
self.enable()
|
||||||
info = {"screwed": screwed}
|
info = {"screwed": screwed}
|
||||||
print(info)
|
|
||||||
self.log.debug(str(info))
|
self.log.debug(str(info))
|
||||||
super()._get([info])
|
super()._get([info])
|
||||||
|
|||||||
@ -10,9 +10,10 @@ from PyQt5.QtGui import QImage, QPixmap
|
|||||||
from PyQt5.QtWidgets import (QDialog, QFormLayout, QLabel, QMessageBox,
|
from PyQt5.QtWidgets import (QDialog, QFormLayout, QLabel, QMessageBox,
|
||||||
QPushButton, QSizePolicy, QSlider)
|
QPushButton, QSizePolicy, QSlider)
|
||||||
|
|
||||||
|
|
||||||
if "--sim-camera" in sys.argv:
|
if "--sim-camera" in sys.argv:
|
||||||
from components.dummies.gxpy import DummyCamera
|
from components.dummies.cv2 import DummyVideoCapture as VideoCapture
|
||||||
|
else:
|
||||||
|
from cv2 import VideoCapture
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
@ -29,19 +30,20 @@ class UVCCamera(Component):
|
|||||||
self._last_frame = None
|
self._last_frame = None
|
||||||
|
|
||||||
def config_changed(self):
|
def config_changed(self):
|
||||||
|
self.camera = VideoCapture(0)
|
||||||
|
if self.camera is None:
|
||||||
|
raise AssertionError(f"camera not detected: 0")
|
||||||
if self.simulate:
|
if self.simulate:
|
||||||
self.device_manager = None
|
self.camera.sim_imgs = cycle(sorted(pathlib.Path("data/simulation_images/").glob("*.png")))
|
||||||
self.camera = DummyCamera()
|
|
||||||
self.sim_imgs = cycle(sorted(pathlib.Path("data/simulation_images/").glob("*.png")))
|
|
||||||
else:
|
|
||||||
self.camera = cv2.VideoCapture(0)
|
|
||||||
|
|
||||||
self.resolution = {
|
self.resolution = {
|
||||||
"w": int(self.round_4(self.config[self.name]["horizontal_resolution"])),
|
"w": int(self.round_4(self.config[self.name]["horizontal_resolution"])),
|
||||||
"h": int(self.round_4(self.config[self.name]["vertical_resolution"])),
|
"h": int(self.round_4(self.config[self.name]["vertical_resolution"])),
|
||||||
}
|
}
|
||||||
self._period = int(self.config[self.name].get("frame_time_ms", 300)) / 1000
|
self._period = int(self.config[self.name].get("frame_time_ms", 300)) / 1000
|
||||||
self.exposure_time = int(self.config[self.name]["exposure_time"])
|
exposure_time = self.config[self.name].get("exposure_time", None)
|
||||||
|
self.exposure_time = int(exposure_time) if exposure_time is not None else None
|
||||||
|
focus = self.config[self.name].get("focus", None)
|
||||||
|
self.focus = int(focus) if focus is not None else None
|
||||||
self.roi = {
|
self.roi = {
|
||||||
"x": int(self.round_4(self.config[self.name].get("horizontal_crop_offset", 0))),
|
"x": int(self.round_4(self.config[self.name].get("horizontal_crop_offset", 0))),
|
||||||
"w": int(self.round_4(self.config[self.name].get("horizontal_crop_resolution", self.resolution["w"]))),
|
"w": int(self.round_4(self.config[self.name].get("horizontal_crop_resolution", self.resolution["w"]))),
|
||||||
@ -56,7 +58,36 @@ class UVCCamera(Component):
|
|||||||
"b": float(self.config[self.name].get("balance_blue", 1)),
|
"b": float(self.config[self.name].get("balance_blue", 1)),
|
||||||
}
|
}
|
||||||
self.lock.lock()
|
self.lock.lock()
|
||||||
|
self.camera.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc("M", "J", "P", "G"))
|
||||||
|
self.camera.set(cv2.CAP_PROP_FPS, 15)
|
||||||
|
self.camera.set(cv2.CAP_PROP_FRAME_WIDTH, self.resolution["w"])
|
||||||
|
self.camera.set(cv2.CAP_PROP_FRAME_HEIGHT, self.resolution["h"])
|
||||||
|
self.camera.set(cv2.CAP_PROP_AUTOFOCUS, 1)
|
||||||
|
if self.exposure_time is not None:
|
||||||
|
self.camera.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0)
|
||||||
|
self.camera.set(cv2.CAP_PROP_EXPOSURE, self.exposure_time)
|
||||||
|
else:
|
||||||
|
self.camera.set(cv2.CAP_PROP_AUTO_EXPOSURE, 3)
|
||||||
|
if self.focus is not None:
|
||||||
|
self.camera.set(cv2.CAP_PROP_FOCUS, self.focus)
|
||||||
|
self.camera.set(cv2.CAP_PROP_AUTOFOCUS, 0)
|
||||||
|
else:
|
||||||
|
self.camera.set(cv2.CAP_PROP_AUTOFOCUS, 1)
|
||||||
|
self.camera.set(cv2.CAP_PROP_GAIN, 1.0)
|
||||||
|
if self.auto_white_balance: # ONCE
|
||||||
|
self.camera.set(cv2.CAP_PROP_AUTO_WB, 1)
|
||||||
|
QThread.msleep(3000)
|
||||||
|
self.balance["r"] = self.camera.get(cv2.CAP_PROP_WHITE_BALANCE_RED_V)
|
||||||
|
self.balance["g"] = 1.0 # self.camera.get(cv2.)
|
||||||
|
self.balance["b"] = self.camera.get(cv2.CAP_PROP_WHITE_BALANCE_BLUE_U)
|
||||||
|
self.camera.set(cv2.CAP_PROP_AUTO_WB, 0)
|
||||||
|
else:
|
||||||
|
self.camera.set(cv2.CAP_PROP_WHITE_BALANCE_RED_V, self.balance["r"])
|
||||||
|
# self.camera.set(cv2., self.balance["g"])
|
||||||
|
self.camera.set(cv2.CAP_PROP_WHITE_BALANCE_BLUE_U, self.balance["b"])
|
||||||
|
self.gamma_lut = self.camera.get(cv2.CAP_PROP_GAMMA)
|
||||||
|
self.contrast_lut = self.camera.get(cv2.CAP_PROP_CONTRAST)
|
||||||
|
# self.color_correction = self.camera.get(cv2.)
|
||||||
self.edits = None
|
self.edits = None
|
||||||
self.lock.unlock()
|
self.lock.unlock()
|
||||||
self.edits_enabled = "--camera-edits" in sys.argv
|
self.edits_enabled = "--camera-edits" in sys.argv
|
||||||
@ -69,20 +100,15 @@ class UVCCamera(Component):
|
|||||||
|
|
||||||
@Component.reconfig_on_error
|
@Component.reconfig_on_error
|
||||||
def _get(self):
|
def _get(self):
|
||||||
|
# print("UVC CAMERA", str(int(QThread.currentThreadId())), flush=True)
|
||||||
frame = None
|
frame = None
|
||||||
self.lock.lock()
|
self.lock.lock()
|
||||||
if self.simulate:
|
ret, frame = self.camera.read()
|
||||||
img_path = next(self.sim_imgs)
|
if ret and not self.simulate:
|
||||||
self.log.debug(f"loading image {img_path}")
|
frame = frame[self.roi["y"]:self.roi["y"] + self.roi["h"], self.roi["x"]:self.roi["x"] + self.roi["w"]]
|
||||||
frame = cv2.cvtColor(cv2.imread(str(img_path)), cv2.COLOR_BGR2RGB)
|
frame = np.rot90(frame, self.roi["r"])
|
||||||
QThread.msleep(1000)
|
|
||||||
else:
|
|
||||||
self.camera.TriggerSoftware.send_command()
|
|
||||||
frame = self.camera.read()
|
|
||||||
if frame is not None:
|
|
||||||
frame = np.rot90(frame, self.roi["r"])
|
|
||||||
self.lock.unlock()
|
self.lock.unlock()
|
||||||
if frame is None:
|
if not ret:
|
||||||
self.log.error("failed to get frame")
|
self.log.error("failed to get frame")
|
||||||
elif self.edits_enabled:
|
elif self.edits_enabled:
|
||||||
frame = self.edit(frame, self.edits)
|
frame = self.edit(frame, self.edits)
|
||||||
|
|||||||
@ -54,8 +54,8 @@ 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, GalaxyCamera, Multicomp730424,
|
from components import (ArchiveSynchronizer, GalaxyCamera, Multicomp730424,
|
||||||
NeoPixels, Os_Label_Printer, RemoteAPI,
|
NeoPixels, Os_Label_Printer, RemoteAPI,
|
||||||
TecnaMarpossProvasetT3, TecnaScrewdriver, Vision,
|
TecnaMarpossProvasetT3, TecnaScrewdriver,
|
||||||
VisionSaver)
|
UVCCamera, Vision, VisionSaver)
|
||||||
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
|
||||||
@ -86,6 +86,7 @@ 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}},
|
||||||
|
"uvc_camera": {"c": UVCCamera, "k": {"paused": True}},
|
||||||
"vision_saver": {"c": VisionSaver, "t": False},
|
"vision_saver": {"c": VisionSaver, "t": False},
|
||||||
"vision": {"c": Vision, "k": {"paused": True}},
|
"vision": {"c": Vision, "k": {"paused": True}},
|
||||||
}
|
}
|
||||||
@ -119,7 +120,9 @@ try:
|
|||||||
QMessageBox.critical(None, "Errore Banco", f"Non e stato possibile connettersi al banco:\n\n{e}")
|
QMessageBox.critical(None, "Errore Banco", f"Non e stato possibile connettersi al banco:\n\n{e}")
|
||||||
quit()
|
quit()
|
||||||
# connect camera frames to vision
|
# connect camera frames to vision
|
||||||
if "vision" in self.components and "galaxy_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})
|
||||||
|
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:
|
||||||
|
|||||||
87
src/test/tdb.py
Normal file
87
src/test/tdb.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import faulthandler
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
from uuid import uuid4 as uuid
|
||||||
|
|
||||||
|
from peewee import AutoField, Model, TextField
|
||||||
|
from playhouse.sqlite_ext import SqliteExtDatabase
|
||||||
|
from PyQt5.QtCore import QObject, QThread, QTimer
|
||||||
|
|
||||||
|
# SETUP QUITTING ON CTRL+C
|
||||||
|
signal.signal(signal.SIGINT, quit)
|
||||||
|
|
||||||
|
# SETUP FAULTHANDLER
|
||||||
|
faulthandler.enable(file=sys.stderr, all_threads=True)
|
||||||
|
|
||||||
|
|
||||||
|
db = SqliteExtDatabase(
|
||||||
|
"/tmp/tdb.sqlite3",
|
||||||
|
pragmas={ # see https://www.sqlite.org/pragma.html
|
||||||
|
"auto_vacuum": 1,
|
||||||
|
"busy_timeout": 5000,
|
||||||
|
"cache_size": round(-64e3),
|
||||||
|
"foreign_keys": 1,
|
||||||
|
"ignore_check_constraints": 0,
|
||||||
|
"journal_mode": "wal",
|
||||||
|
"synchronous": 0,
|
||||||
|
},
|
||||||
|
timeout=5
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class BaseModel(Model):
|
||||||
|
"""A base model that will use our Sqlite database."""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
global db
|
||||||
|
database = db
|
||||||
|
|
||||||
|
|
||||||
|
class Data(BaseModel):
|
||||||
|
id = AutoField(primary_key=True, unique=True, null=False)
|
||||||
|
data = TextField(null=True, default=lambda: uuid().hex)
|
||||||
|
|
||||||
|
|
||||||
|
models_reference = {
|
||||||
|
"data": Data,
|
||||||
|
}
|
||||||
|
|
||||||
|
db.connect()
|
||||||
|
db.create_tables(list(models_reference.values()))
|
||||||
|
|
||||||
|
|
||||||
|
class Threaded(QObject):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self._timer = QTimer()
|
||||||
|
|
||||||
|
@db.connection_context()
|
||||||
|
# @db.atomic()
|
||||||
|
def start(self):
|
||||||
|
while True:
|
||||||
|
data = Data()
|
||||||
|
data.save()
|
||||||
|
print(str(int(QThread.currentThreadId())), data.id, flush=True)
|
||||||
|
# QThread.msleep(2000)
|
||||||
|
|
||||||
|
|
||||||
|
components = {1: Threaded()}
|
||||||
|
threads = {}
|
||||||
|
for component_name in components:
|
||||||
|
threads[component_name] = QThread()
|
||||||
|
threads[component_name].setTerminationEnabled(True)
|
||||||
|
components[component_name].moveToThread(threads[component_name])
|
||||||
|
for component_name, thread in threads.items():
|
||||||
|
component = components[component_name]
|
||||||
|
thread.started.connect(component.start)
|
||||||
|
thread.start()
|
||||||
|
if "--debugger-workaround" in sys.argv:
|
||||||
|
QApplication.processEvents()
|
||||||
|
# QThread.msleep(1000)
|
||||||
|
QApplication.processEvents()
|
||||||
|
while True:
|
||||||
|
data = Data()
|
||||||
|
data.save()
|
||||||
|
print("main", data.id, flush=True)
|
||||||
|
# QThread.msleep(2000)
|
||||||
@ -1,110 +1,110 @@
|
|||||||
codice_ricetta,codice_ricetta_cl,cliente,part_number,verifica_connettore_abilitata,connettore,verifica_codice_a_barre_abilitata,verifica_codice_a_barre_abilitata_cl,codice_a_barre,codice_a_barre_cl,verifica_resistenza_connettore_abilitata,scala_resistenza,resistenza_attesa,tolleranza_resistenza,prova_tenuta_abilitata,tempo_pre_riempimento,pressione_pre_riempimento,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotmento,stampa_etichetta_abilitata,modello_etichetta,modello_etichetta_cl
|
codice_ricetta,codice_ricetta_cl,cliente,part_number,verifica_connettore_abilitata,connettore,verifica_codice_a_barre_abilitata,verifica_codice_a_barre_abilitata_cl,codice_a_barre_cl_stampato,codice_a_barre_input,verifica_resistenza_connettore_abilitata,scala_resistenza,resistenza_attesa,tolleranza_resistenza,prova_tenuta_abilitata,tempo_pre_riempimento,pressione_pre_riempimento,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotmento,stampa_etichetta_abilitata,modello_etichetta,modello_etichetta_cl
|
||||||
R53926,R53926/CL,Merlo,,x,SCR6,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53926,R53926/1,Merlo,,x,SCR6,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54095,R54095/CL,Venieri,1803827-01,x,SCR6,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,6.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54095,R54095/1,Venieri,1803827-01,x,SCR6,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,6.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53928,R53928/CL,Venieri,1803828,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53928,R53928/1,Venieri,1803828,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53929,R53929/CL,Venieri,1803829,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53929,R53929/1,Venieri,1803829,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54313,R54313/CL,Argo Tractors,6671546A3,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,10.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54313,R54313/1,Argo Tractors,6671546A3,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,10.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54314,R54314/CL,Argo Tractors,6671547A3,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.13,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54314,R54314/1,Argo Tractors,6671547A3,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.13,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54315,R54315/CL,Argo Tractors,6671549A3,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54315,R54315/1,Argo Tractors,6671549A3,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54020,R54020/CL,Argo Tractors,6703587A,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54020,R54020/1,Argo Tractors,6703587A,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54021,R54021/CL,Argo Tractors,6703588A,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,9.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54021,R54021/1,Argo Tractors,6703588A,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,9.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54026,R54026/CL,Argo Tractors,6703589A,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54026,R54026/1,Argo Tractors,6703589A,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53645,R53645/CL,Argo Tractors,6688903,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,12.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53645,R53645/1,Argo Tractors,6688903,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,12.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53644,R53644/CL,Argo Tractors,6688905,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.1,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53644,R53644/1,Argo Tractors,6688905,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.1,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53643,R53643/CL,Argo Tractors,6688904,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53643,R53643/1,Argo Tractors,6688904,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
180.3.830,180.3.830/CL,Venieri,180.3.830,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
180.3.830,180.3.830/1,Venieri,180.3.830,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
180.3.831,180.3.831/CL,Venieri,180.3.831,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
180.3.831,180.3.831/1,Venieri,180.3.831,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54335,R54335/CL,Argo Tractors,6693686A1,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.34,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54335,R54335/1,Argo Tractors,6693686A1,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.34,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54336,R54336/CL,Argo Tractors,6691394A1,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.8,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54336,R54336/1,Argo Tractors,6691394A1,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.8,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54337,R54337/CL,Argo Tractors,6693687A3,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.95,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54337,R54337/1,Argo Tractors,6693687A3,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.95,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54732,R54732/CL,Argo Tractors,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54732,R54732/1,Argo Tractors,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54276,R54276/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54276,R54276/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53003548,53003548/CL,Manitou,53003548,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.25,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53003548,53003548/1,Manitou,53003548,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.25,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
5802969810,5802969810/CL,FPT,5802969810,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
5802969810,5802969810/1,FPT,5802969810,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
5802933707,5802933707/CL,FPT,5802933707,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
5802933707,5802933707/1,FPT,5802933707,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
5802933703,5802933703/CL,FPT,5802933703,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
5802933703,5802933703/1,FPT,5802933703,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54815,R54815/CL,Avoni,R54815,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54815,R54815/1,Avoni,R54815,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54817,R54817/CL,Avoni,R54817,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54817,R54817/1,Avoni,R54817,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54819,R54819/CL,Avoni,R54819,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54819,R54819/1,Avoni,R54819,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R55202,R55202/CL,Merlo,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R55202,R55202/1,Merlo,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
CHF-6156,CHF-6156/CL,Sutphen,CHF-6156,x,SCR3,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
CHF-6156,CHF-6156/1,Sutphen,CHF-6156,x,SCR3,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
CHF-6157,CHF-6157/CL,Sutphen,CHF-6157,x,SCR3,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
CHF-6157,CHF-6157/1,Sutphen,CHF-6157,x,SCR3,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
CHF-6158,CHF-6158/CL,Sutphen,CHF-6158,x,SCR3,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
CHF-6158,CHF-6158/1,Sutphen,CHF-6158,x,SCR3,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54783/1,R54783/1/CL,Irum,21.003808,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.15,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54783/1,R54783/1/1,Irum,21.003808,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.15,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54785/1,R54785/1/CL,Irum,21.003809,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54785/1,R54785/1/1,Irum,21.003809,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54784/1,R54784/1/CL,Irum,21.00381,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54784/1,R54784/1/1,Irum,21.00381,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54674,R54674/CL,Merlo,125637,x,SCR6,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.87,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54674,R54674/1,Merlo,125637,x,SCR6,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.87,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54293,R54293/CL,FPT,5802933678,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54293,R54293/1,FPT,5802933678,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54294,R54294/CL,FPT,5802933689,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54294,R54294/1,FPT,5802933689,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54297,R54297/CL,FPT,5802969802,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54297,R54297/1,FPT,5802969802,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54531,R54531/CL,FPT,5802969811,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54531,R54531/1,FPT,5802969811,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54298,R54298/CL,FPT,5802933697,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54298,R54298/1,FPT,5802933697,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54299,R54299/CL,FPT,5802933700,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54299,R54299/1,FPT,5802933700,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3810,145-3810/CL,CRANE CARRIER,145-3810,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3810,145-3810/1,CRANE CARRIER,145-3810,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3811,145-3811/CL,CRANE CARRIER,145-3811,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3811,145-3811/1,CRANE CARRIER,145-3811,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3812,145-3812/CL,CRANE CARRIER,145-3812,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3812,145-3812/1,CRANE CARRIER,145-3812,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3813,145-3813/CL,CRANE CARRIER,145-3813,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.1,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3813,145-3813/1,CRANE CARRIER,145-3813,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.1,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3814,145-3814/CL,CRANE CARRIER,145-3814,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3814,145-3814/1,CRANE CARRIER,145-3814,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3815,145-3815/CL,CRANE CARRIER,145-3815,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3815,145-3815/1,CRANE CARRIER,145-3815,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3830,145-3830/CL,CRANE CARRIER,145-3830,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3830,145-3830/1,CRANE CARRIER,145-3830,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
145-3831,145-3831/CL,CRANE CARRIER,145-3831,x,SCR10,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
145-3831,145-3831/1,CRANE CARRIER,145-3831,x,SCR10,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
465-012,465-012/CL,INDIANA PHOENIX,465-012,x,SCR11,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
465-012,465-012/1,INDIANA PHOENIX,465-012,x,SCR11,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
465-013,465-013/CL,INDIANA PHOENIX,465-013,x,SCR11,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
465-013,465-013/1,INDIANA PHOENIX,465-013,x,SCR11,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
465-014,465-014/CL,INDIANA PHOENIX,465-014,x,SCR11,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
465-014,465-014/1,INDIANA PHOENIX,465-014,x,SCR11,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R55177,R55177/CL,Avoni,R55177,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R55177,R55177/1,Avoni,R55177,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54824,R54824/CL,Avoni,R54824,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54824,R54824/1,Avoni,R54824,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54826,R54826/CL,Avoni,R54826,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54826,R54826/1,Avoni,R54826,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54828,R54828/CL,Avoni,R54828,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54828,R54828/1,Avoni,R54828,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54842,R54842/CL,Deutz,R54842,x,SCR9,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54842,R54842/1,Deutz,R54842,x,SCR9,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R55144,R55144/CL,Deutz,R55144,x,SCR8,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R55144,R55144/1,Deutz,R55144,x,SCR8,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R55145,R55145/CL,Deutz,R55145,x,SCR8,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R55145,R55145/1,Deutz,R55145,x,SCR8,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54533,R54533/CL,FPT,5802938582,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54533,R54533/1,FPT,5802938582,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54535,R54535/CL,FPT,5802970303,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54535,R54535/1,FPT,5802970303,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54258/C1,R54258/C1/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54258/C1,R54258/C1/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54258/C2,R54258/C2/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.97,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54258/C2,R54258/C2/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.97,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54258/C3,R54258/C3/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,4.21,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54258/C3,R54258/C3/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,4.21,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54258/C4,R54258/C4/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.94,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54258/C4,R54258/C4/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.94,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54259/C1,R54259/C1/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54259/C1,R54259/C1/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54259/C2,R54259/C2/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.97,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54259/C2,R54259/C2/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.97,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54259/C3,R54259/C3/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,4.21,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54259/C3,R54259/C3/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,4.21,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54259/C4,R54259/C4/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.94,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54259/C4,R54259/C4/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.94,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54276/C1,R54276/C1/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54276/C1,R54276/C1/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54276/C2,R54276/C2/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.8,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54276/C2,R54276/C2/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.8,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54276/C3,R54276/C3/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54276/C3,R54276/C3/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54276/C4,R54276/C4/CL,Bimotor,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54276/C4,R54276/C4/1,Bimotor,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
1034955,1034955/CL,Hattat,1034955,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.45,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
1034955,1034955/1,Hattat,1034955,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.45,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
1034956,1034956/CL,Hattat,1034956,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
1034956,1034956/1,Hattat,1034956,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
1034957,1034957/CL,Hattat,1034957,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,10.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
1034957,1034957/1,Hattat,1034957,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,10.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
1034982,1034982/CL,Hattat,1034982,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
1034982,1034982/1,Hattat,1034982,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54915,R54915/CL,Himoinsa,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54915,R54915/1,Himoinsa,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54916,R54916/CL,Himoinsa,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54916,R54916/1,Himoinsa,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R55192,R55192/CL,Himoinsa,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R55192,R55192/1,Himoinsa,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
6703994,6703994/CL,Argo Tractors,6703994,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,4.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
6703994,6703994/1,Argo Tractors,6703994,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,4.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54788,R54788/CL,Venieri,,x,SCR8,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54788,R54788/1,Venieri,,x,SCR8,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54789,R54789/CL,Venieri,,x,SCR8,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54789,R54789/1,Venieri,,x,SCR8,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R54790,R54790/CL,Venieri,,x,SCR9,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R54790,R54790/1,Venieri,,x,SCR9,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
11519588,11519588/CL,Vanhool,11519588,x,SCR1,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
11519588,11519588/1,Vanhool,11519588,x,SCR1,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
11519589,11519589/CL,Vanhool,11519589,x,SCR1,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,7.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
11519589,11519589/1,Vanhool,11519589,x,SCR1,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,7.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
11519590,11519590/CL,Vanhool,11519590,x,SCR1,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,9.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
11519590,11519590/1,Vanhool,11519590,x,SCR1,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,9.4,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53020608,53020608/CL,Manitou,53020608,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53020608,53020608/1,Manitou,53020608,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53020610,53020610/CL,Manitou,53020610,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53020610,53020610/1,Manitou,53020610,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53020612,53020612/CL,Manitou,53020612,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53020612,53020612/1,Manitou,53020612,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53027246,53027246/CL,Manitou,53027246,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53027246,53027246/1,Manitou,53027246,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53027247,53027247/CL,Manitou,53027247,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53027247,53027247/1,Manitou,53027247,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53027248,53027248/CL,Manitou,53027248,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53027248,53027248/1,Manitou,53027248,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53027252,53027252/CL,Manitou,53027252,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,20.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53027252,53027252/1,Manitou,53027252,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,20.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
53027253,53027253/CL,Manitou,53027253,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
53027253,53027253/1,Manitou,53027253,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,0.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117342,117342/CL,Merlo,117342,x,SCR6,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117342,117342/1,Merlo,117342,x,SCR6,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117343,117343/CL,Merlo,117343,x,SCR6,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117343,117343/1,Merlo,117343,x,SCR6,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.0,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117344,117344/CL,Merlo,117344,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117344,117344/1,Merlo,117344,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117345,117345/CL,Merlo,117345,x,SCR6,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,2.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117345,117345/1,Merlo,117345,x,SCR6,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,2.3,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117346,117346/CL,Merlo,117346,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117346,117346/1,Merlo,117346,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.6,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117347,117347/CL,Merlo,117347,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,5.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117347,117347/1,Merlo,117347,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,5.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117536,117536/CL,Merlo,117536,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,6.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117536,117536/1,Merlo,117536,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,6.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
117537,117537/CL,Merlo,117537,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,6.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
117537,117537/1,Merlo,117537,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,6.9,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53861,R53861/CL,Argo Tractors,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,6.43,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53861,R53861/1,Argo Tractors,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,6.43,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53847,R53847/CL,Argo Tractors,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,3.47,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53847,R53847/1,Argo Tractors,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,3.47,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53848,R53848/CL,Argo Tractors,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,9.04,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53848,R53848/1,Argo Tractors,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,9.04,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53849,R53849/CL,Argo Tractors,,x,SCR2,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,9.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53849,R53849/1,Argo Tractors,,x,SCR2,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,9.7,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53919,R53919/CL,Merlo,124938,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,9.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53919,R53919/1,Merlo,124938,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,9.5,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
R53920,R53920/CL,Merlo,124939,x,SCR7,x,,{DRW}-{ggmmaahhmmxxxxx},,x,500.0,8.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
R53920,R53920/1,Merlo,124939,x,SCR7,x,,{RECIPE}-{DD}{MO}{YY}{SN5},{RECIPE}/1-{DD}{MO}{YY}{SN5},x,500.0,8.2,20.0,x,0,1000,5,20,5,5,5,30,15000,30,1,100,x,ETA013.prn,ETACL.prn
|
||||||
|
|||||||
|
@ -48,14 +48,18 @@ class Test(Widget):
|
|||||||
"print": {"label_printer", },
|
"print": {"label_printer", },
|
||||||
"connector": {"multicomp", },
|
"connector": {"multicomp", },
|
||||||
"resistance": {"multicomp", },
|
"resistance": {"multicomp", },
|
||||||
"vision": {"galaxy_camera", "vision", "vision_saver", }, # "neo_pixels", },
|
"vision": {("uvc_camera", "galaxy_camera", ), "vision", "vision_saver", }, # "neo_pixels", },
|
||||||
"screws": {"screwdriver", "tecna_t3", },
|
"screws": {"screwdriver", "tecna_t3", },
|
||||||
}
|
}
|
||||||
self.unsupported_steps = set()
|
self.unsupported_steps = set()
|
||||||
for step_name, dependencies in self.steps_dependencies.items():
|
for step_name, dependencies in self.steps_dependencies.items():
|
||||||
for dependency in dependencies:
|
for dependency in dependencies:
|
||||||
if dependency not in self.components or not self.components[dependency].ready:
|
if isinstance(dependency, tuple):
|
||||||
self.unsupported_steps.add(step_name)
|
if all([d not in self.components or not self.components[d].ready for d in dependency]):
|
||||||
|
self.unsupported_steps.add(step_name)
|
||||||
|
else:
|
||||||
|
if dependency not in self.components or not self.components[dependency].ready:
|
||||||
|
self.unsupported_steps.add(step_name)
|
||||||
# INIT CYCLE STATES
|
# INIT CYCLE STATES
|
||||||
self.cycle_available_steps = {
|
self.cycle_available_steps = {
|
||||||
# "assembly_1": Test_Assembly(img_path=self.select_step_img("assembly_1"), text=u"INSERIRE SENSORE", widget=None),
|
# "assembly_1": Test_Assembly(img_path=self.select_step_img("assembly_1"), text=u"INSERIRE SENSORE", widget=None),
|
||||||
@ -290,13 +294,29 @@ class Test(Widget):
|
|||||||
unsupported_steps.add(step.type)
|
unsupported_steps.add(step.type)
|
||||||
else:
|
else:
|
||||||
for dependency in self.steps_dependencies.get(step.type, []):
|
for dependency in self.steps_dependencies.get(step.type, []):
|
||||||
if dependency not in self.components:
|
if isinstance(dependency, tuple):
|
||||||
unsupported_steps.add(step.type)
|
if all([d not in self.components for d in dependency]):
|
||||||
|
unsupported_steps.add(step.type)
|
||||||
|
else:
|
||||||
|
unready = set()
|
||||||
|
for d in dependency:
|
||||||
|
if d in self.components:
|
||||||
|
if not self.components[d].ready:
|
||||||
|
self.components[d].reconfigure()
|
||||||
|
if not self.components[d].ready:
|
||||||
|
unready.add(d)
|
||||||
|
else:
|
||||||
|
unready.add(d)
|
||||||
|
if unready == set(dependency):
|
||||||
|
missing_components.add(" or ".join(dependency))
|
||||||
else:
|
else:
|
||||||
if not self.components[dependency].ready:
|
if dependency not in self.components:
|
||||||
self.components[dependency].reconfigure()
|
unsupported_steps.add(step.type)
|
||||||
|
else:
|
||||||
if not self.components[dependency].ready:
|
if not self.components[dependency].ready:
|
||||||
missing_components.add(dependency)
|
self.components[dependency].reconfigure()
|
||||||
|
if not self.components[dependency].ready:
|
||||||
|
missing_components.add(dependency)
|
||||||
if len(unsupported_steps):
|
if len(unsupported_steps):
|
||||||
QMessageBox.critical(None, "Errore Ricetta", f"Questa ricetta contiene uno o piu step non supportati da questo banco:\n{', '.join(sorted(unsupported_steps))}\nModificare la ricetta adeguatamente.")
|
QMessageBox.critical(None, "Errore Ricetta", f"Questa ricetta contiene uno o piu step non supportati da questo banco:\n{', '.join(sorted(unsupported_steps))}\nModificare la ricetta adeguatamente.")
|
||||||
if len(missing_components):
|
if len(missing_components):
|
||||||
|
|||||||
@ -32,15 +32,22 @@ class Test_Vision(Test_Test):
|
|||||||
if self.run_once is True and self.done is True and self.done_ok is True:
|
if self.run_once is True and self.done is True and self.done_ok is True:
|
||||||
return
|
return
|
||||||
# setup camera-vision loop
|
# setup camera-vision loop
|
||||||
self.components["galaxy_camera"].set_period(period=None) # only get frame on request
|
if "uvc_camera" in self.components:
|
||||||
self.components["galaxy_camera"].add_sources({"test_vision": self.request_frame})
|
self.components["uvc_camera"].set_period(period=None) # only get frame on request
|
||||||
|
self.components["uvc_camera"].add_sources({"test_vision": self.request_frame})
|
||||||
|
elif "galaxy_camera" in self.components:
|
||||||
|
self.components["galaxy_camera"].set_period(period=None) # only get frame on request
|
||||||
|
self.components["galaxy_camera"].add_sources({"test_vision": self.request_frame})
|
||||||
self.request_frame_connection = self.components["vision"].out.connect(self.request_frame) # request new frame as soon as vision finishes
|
self.request_frame_connection = self.components["vision"].out.connect(self.request_frame) # request new frame as soon as vision finishes
|
||||||
self.get_connection = self.components["vision"].out.connect(self.get)
|
self.get_connection = self.components["vision"].out.connect(self.get)
|
||||||
if "neo_pixels" in self.components and self.components["neo_pixels"].ready:
|
if "neo_pixels" in self.components and self.components["neo_pixels"].ready:
|
||||||
self.components["neo_pixels"].set_all_pixel_color("#ffffff")
|
self.components["neo_pixels"].set_all_pixel_color("#ffffff")
|
||||||
self.components["vision"].set_recipe(self.step.spec.get("recipe", None))
|
self.components["vision"].set_recipe(self.step.spec.get("recipe", None))
|
||||||
self.components["vision"].resume()
|
self.components["vision"].resume()
|
||||||
self.components["galaxy_camera"].resume()
|
if "uvc_camera" in self.components:
|
||||||
|
self.components["uvc_camera"].resume()
|
||||||
|
elif "galaxy_camera" in self.components:
|
||||||
|
self.components["galaxy_camera"].resume()
|
||||||
self.request_frame.emit() # request first frame
|
self.request_frame.emit() # request first frame
|
||||||
# DETECTIONS TABLE
|
# DETECTIONS TABLE
|
||||||
# hide previous results
|
# hide previous results
|
||||||
@ -48,11 +55,17 @@ class Test_Vision(Test_Test):
|
|||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
# disable camera-vision loop
|
# disable camera-vision loop
|
||||||
self.components["galaxy_camera"].pause()
|
if "uvc_camera" in self.components:
|
||||||
|
self.components["uvc_camera"].pause()
|
||||||
|
elif "galaxy_camera" in self.components:
|
||||||
|
self.components["galaxy_camera"].pause()
|
||||||
self.components["vision"].pause()
|
self.components["vision"].pause()
|
||||||
self.disconnect(self.get_connection)
|
self.disconnect(self.get_connection)
|
||||||
self.disconnect(self.request_frame_connection)
|
self.disconnect(self.request_frame_connection)
|
||||||
self.components["galaxy_camera"].remove_sources(["test_vision", ])
|
if "uvc_camera" in self.components:
|
||||||
|
self.components["uvc_camera"].remove_sources(["test_vision", ])
|
||||||
|
elif "galaxy_camera" in self.components:
|
||||||
|
self.components["galaxy_camera"].remove_sources(["test_vision", ])
|
||||||
super().stop()
|
super().stop()
|
||||||
|
|
||||||
# def reset(self):
|
# def reset(self):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user