From f263f56cf4c9c40de3889893fc952ce34a67a7c5 Mon Sep 17 00:00:00 2001 From: matteo porta Date: Mon, 10 Oct 2022 14:20:22 +0200 Subject: [PATCH 1/8] screwdriver fix --- config/machine_settings/defaults.ini | 2 +- src/components/tecna_marposs_provaset_t3l_registers.py | 4 ++-- src/components/tecna_marposs_provaset_t3p_registers.py | 4 ++-- src/components/tecna_screwdriver.py | 9 +++------ 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/config/machine_settings/defaults.ini b/config/machine_settings/defaults.ini index 5383634..673f63b 100644 --- a/config/machine_settings/defaults.ini +++ b/config/machine_settings/defaults.ini @@ -53,7 +53,7 @@ modify_pin: 603 select_pin: 603 [screwdriver] -enable_pin: 0 +disable_pin: 0 status_pin: 0 [multicomp] diff --git a/src/components/tecna_marposs_provaset_t3l_registers.py b/src/components/tecna_marposs_provaset_t3l_registers.py index 573cf02..b3d1a8f 100644 --- a/src/components/tecna_marposs_provaset_t3l_registers.py +++ b/src/components/tecna_marposs_provaset_t3l_registers.py @@ -159,9 +159,9 @@ registers = { # Write 0 to start the selected program # Write a different number from 1 to n max programs to start a specific program. "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) - "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) "Activate digital output (bit mask)": [105 - 1, {"dt": "16bit_uint", }], # Write 1 in the bit corresponding to the output to be activated diff --git a/src/components/tecna_marposs_provaset_t3p_registers.py b/src/components/tecna_marposs_provaset_t3p_registers.py index 2788293..1632d9f 100644 --- a/src/components/tecna_marposs_provaset_t3p_registers.py +++ b/src/components/tecna_marposs_provaset_t3p_registers.py @@ -130,9 +130,9 @@ registers = { # Write 0 to start the selected program # Write a different number from 1 to n max programs to start a specific program. "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) - "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) "Activate digital output (bit mask)": [105 - 1, {"dt": "16bit_uint", }], # Write 1 in the bit corresponding to the output to be activated diff --git a/src/components/tecna_screwdriver.py b/src/components/tecna_screwdriver.py index 2628660..ac51ef4 100644 --- a/src/components/tecna_screwdriver.py +++ b/src/components/tecna_screwdriver.py @@ -13,7 +13,7 @@ class TecnaScrewdriver(Component): def config_changed(self): 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_mask = 1 << self.status_pin @@ -21,9 +21,9 @@ class TecnaScrewdriver(Component): def enable(self, enabled=True): self.enabled = 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: - self.request.emit({"Reset specific digital output": self.enable_pin}) + self.request.emit({"Activate specific digital output": self.disable_pin}) @Component.reconfig_on_error def disable(self, disabled=True): @@ -35,8 +35,6 @@ class TecnaScrewdriver(Component): # READ INFO if data is None or data[-1] is None: 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 = screwed_flag and not self.last_screwed self.last_screwed = screwed_flag @@ -44,6 +42,5 @@ class TecnaScrewdriver(Component): self.disable() self.enable() info = {"screwed": screwed} - print(info) self.log.debug(str(info)) super()._get([info]) From a662a950ee845e829527fb49816284b6e49102ae Mon Sep 17 00:00:00 2001 From: matteo porta Date: Tue, 11 Oct 2022 15:30:53 +0200 Subject: [PATCH 2/8] camera --- config/machine_settings/defaults.ini | 10 +-- config/machine_settings/this.ini | 1 + src/components/__init__.py | 1 + src/components/dummies/cv2/__init__.py | 1 + .../dummies/cv2/dummy_video_camera.py | 32 +++++++++ src/components/uvc_camera.py | 66 +++++++++++++------ src/main.py | 9 ++- src/ui/test/test.py | 33 +++++++--- src/ui/test_vision/test_vision.py | 5 +- 9 files changed, 120 insertions(+), 38 deletions(-) create mode 100644 src/components/dummies/cv2/__init__.py create mode 100644 src/components/dummies/cv2/dummy_video_camera.py diff --git a/config/machine_settings/defaults.ini b/config/machine_settings/defaults.ini index 35b065f..f9fbf1f 100644 --- a/config/machine_settings/defaults.ini +++ b/config/machine_settings/defaults.ini @@ -1,13 +1,13 @@ [hardware_config] ; archive_synchronizer: present ; galaxy_camera: present -; uvc_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 @@ -27,10 +27,10 @@ balance_green: 1.0 balance_blue: 1.5 [uvc_camera] -horizontal_resolution: 2448 -vertical_resolution: 2048 -exposure_time: 10000 -focus: 100 +horizontal_resolution: 3264 +vertical_resolution: 2448 +; exposure_time: 10000 +; focus: 100 [vision_saver] time_format: %Y-%m-%d_%H-%M-%S diff --git a/config/machine_settings/this.ini b/config/machine_settings/this.ini index 6777023..be27d2c 100644 --- a/config/machine_settings/this.ini +++ b/config/machine_settings/this.ini @@ -7,6 +7,7 @@ neo_pixels: present remote_api: present screwdriver: present tecna_t3: present +uvc_camera: present vision_saver: present vision: present diff --git a/src/components/__init__.py b/src/components/__init__.py index 4200b15..b19b0f1 100644 --- a/src/components/__init__.py +++ b/src/components/__init__.py @@ -10,5 +10,6 @@ from .serial_label_printer import Serial_Label_Printer from .tecna_marposs_provaset_t3 import TecnaMarpossProvasetT3 from .tecna_screwdriver import TecnaScrewdriver from .test_component import TestComponent +from .uvc_camera import UVCCamera from .vision import Vision from .vision_saver import VisionSaver diff --git a/src/components/dummies/cv2/__init__.py b/src/components/dummies/cv2/__init__.py new file mode 100644 index 0000000..acd1838 --- /dev/null +++ b/src/components/dummies/cv2/__init__.py @@ -0,0 +1 @@ +from .dummy_video_camera import DummyVideoCamera diff --git a/src/components/dummies/cv2/dummy_video_camera.py b/src/components/dummies/cv2/dummy_video_camera.py new file mode 100644 index 0000000..777df3c --- /dev/null +++ b/src/components/dummies/cv2/dummy_video_camera.py @@ -0,0 +1,32 @@ +import logging + +import cv2 +from PyQt5.QtCore import QThread + + +class DummyVideoCamera: + 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 diff --git a/src/components/uvc_camera.py b/src/components/uvc_camera.py index cfc04a1..89f0e44 100644 --- a/src/components/uvc_camera.py +++ b/src/components/uvc_camera.py @@ -10,9 +10,10 @@ from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import (QDialog, QFormLayout, QLabel, QMessageBox, QPushButton, QSizePolicy, QSlider) - if "--sim-camera" in sys.argv: - from components.dummies.gxpy import DummyCamera + from components.dummies.cv2 import DummyVideoCamera as VideoCamera +else: + from cv2 import VideoCamera from datetime import datetime @@ -29,19 +30,20 @@ class UVCCamera(Component): self._last_frame = None def config_changed(self): + self.camera = VideoCamera(0) + if self.camera is None: + raise AssertionError(f"camera not detected: 0") if self.simulate: - self.device_manager = None - self.camera = DummyCamera() - self.sim_imgs = cycle(sorted(pathlib.Path("data/simulation_images/").glob("*.png"))) - else: - self.camera = cv2.VideoCapture(0) - + self.camera.sim_imgs = cycle(sorted(pathlib.Path("data/simulation_images/").glob("*.png"))) self.resolution = { "w": int(self.round_4(self.config[self.name]["horizontal_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.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 = { "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"]))), @@ -56,7 +58,34 @@ class UVCCamera(Component): "b": float(self.config[self.name].get("balance_blue", 1)), } self.lock.lock() - + 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.lock.unlock() self.edits_enabled = "--camera-edits" in sys.argv @@ -69,20 +98,15 @@ class UVCCamera(Component): @Component.reconfig_on_error def _get(self): + # print("UVC CAMERA", str(int(QThread.currentThreadId())), flush=True) frame = None self.lock.lock() - if self.simulate: - 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) - else: - self.camera.TriggerSoftware.send_command() - frame = self.camera.read() - if frame is not None: - frame = np.rot90(frame, self.roi["r"]) + ret, frame = self.camera.read() + if ret and not self.simulate: + frame = frame[self.roi["y"]:self.roi["y"] + self.roi["h"], self.roi["x"]:self.roi["x"] + self.roi["w"]] + frame = np.rot90(frame, self.roi["r"]) self.lock.unlock() - if frame is None: + if not ret: self.log.error("failed to get frame") elif self.edits_enabled: frame = self.edit(frame, self.edits) diff --git a/src/main.py b/src/main.py index 232fbcf..d0352ac 100644 --- a/src/main.py +++ b/src/main.py @@ -54,8 +54,8 @@ try: # IMPORT PROJECT ONLY AFTER SETTING UP SIGNAL, FAULTHANDLER AND LOGGHING from components import (ArchiveSynchronizer, GalaxyCamera, Multicomp730424, NeoPixels, Os_Label_Printer, RemoteAPI, - TecnaMarpossProvasetT3, TecnaScrewdriver, Vision, - VisionSaver) + TecnaMarpossProvasetT3, TecnaScrewdriver, + UVCCamera, Vision, VisionSaver) from lib.db import Users from lib.helpers import ConfigReader from PyQt5.QtCore import QObject, QThread, pyqtSignal @@ -86,6 +86,7 @@ try: "remote_api": {"c": RemoteAPI, "k": {"main": self}}, "screwdriver": {"c": TecnaScrewdriver, "k": {"paused": True}}, "tecna_t3": {"c": TecnaMarpossProvasetT3, "k": {"paused": True}}, + "uvc_camera": {"c": UVCCamera, "k": {"paused": True}}, "vision_saver": {"c": VisionSaver, "t": False}, "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}") quit() # 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}) # connect tecna to screwdriver if "screwdriver" in self.components and "tecna_t3" in self.components: diff --git a/src/ui/test/test.py b/src/ui/test/test.py index 3571607..f4cad4e 100755 --- a/src/ui/test/test.py +++ b/src/ui/test/test.py @@ -48,14 +48,18 @@ class Test(Widget): "print": {"label_printer", }, "connector": {"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", }, } self.unsupported_steps = set() for step_name, dependencies in self.steps_dependencies.items(): for dependency in dependencies: - if dependency not in self.components or not self.components[dependency].ready: - self.unsupported_steps.add(step_name) + if isinstance(dependency, tuple): + 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 self.cycle_available_steps = { # "assembly_1": Test_Assembly(img_path=self.select_step_img("assembly_1"), text=u"INSERIRE SENSORE", widget=None), @@ -290,13 +294,26 @@ class Test(Widget): unsupported_steps.add(step.type) else: for dependency in self.steps_dependencies.get(step.type, []): - if dependency not in self.components: - unsupported_steps.add(step.type) + if isinstance(dependency, tuple): + if all([d not in self.components for d in dependency]): + unsupported_steps.add(step.type) + else: + unready = {} + for d in dependency: + if not self.components[d].ready: + self.components[d].reconfigure() + if not self.components[d].ready: + unready.add(d) + if unready == dependency: + missing_components.add(" or ".join(dependency)) else: - if not self.components[dependency].ready: - self.components[dependency].reconfigure() + if dependency not in self.components: + unsupported_steps.add(step.type) + else: 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): 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): diff --git a/src/ui/test_vision/test_vision.py b/src/ui/test_vision/test_vision.py index c97a774..72ebf00 100644 --- a/src/ui/test_vision/test_vision.py +++ b/src/ui/test_vision/test_vision.py @@ -40,7 +40,10 @@ class Test_Vision(Test_Test): self.components["neo_pixels"].set_all_pixel_color("#ffffff") self.components["vision"].set_recipe(self.step.spec.get("recipe", None)) 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 # DETECTIONS TABLE # hide previous results From f1ae005267c76df912d441a10f0392828e649eda Mon Sep 17 00:00:00 2001 From: matteo porta Date: Tue, 11 Oct 2022 16:08:24 +0200 Subject: [PATCH 3/8] wip --- src/components/dummies/cv2/__init__.py | 2 +- .../cv2/{dummy_video_camera.py => dummy_video_capture.py} | 2 +- src/components/uvc_camera.py | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) rename src/components/dummies/cv2/{dummy_video_camera.py => dummy_video_capture.py} (97%) diff --git a/src/components/dummies/cv2/__init__.py b/src/components/dummies/cv2/__init__.py index acd1838..de79551 100644 --- a/src/components/dummies/cv2/__init__.py +++ b/src/components/dummies/cv2/__init__.py @@ -1 +1 @@ -from .dummy_video_camera import DummyVideoCamera +from .dummy_video_capture import DummyVideoCapture diff --git a/src/components/dummies/cv2/dummy_video_camera.py b/src/components/dummies/cv2/dummy_video_capture.py similarity index 97% rename from src/components/dummies/cv2/dummy_video_camera.py rename to src/components/dummies/cv2/dummy_video_capture.py index 777df3c..2fd92fe 100644 --- a/src/components/dummies/cv2/dummy_video_camera.py +++ b/src/components/dummies/cv2/dummy_video_capture.py @@ -4,7 +4,7 @@ import cv2 from PyQt5.QtCore import QThread -class DummyVideoCamera: +class DummyVideoCapture: def __init__(self, device): self.values = {} self.sim_imgs = None diff --git a/src/components/uvc_camera.py b/src/components/uvc_camera.py index 89f0e44..402c496 100644 --- a/src/components/uvc_camera.py +++ b/src/components/uvc_camera.py @@ -11,9 +11,9 @@ from PyQt5.QtWidgets import (QDialog, QFormLayout, QLabel, QMessageBox, QPushButton, QSizePolicy, QSlider) if "--sim-camera" in sys.argv: - from components.dummies.cv2 import DummyVideoCamera as VideoCamera + from components.dummies.cv2 import DummyVideoCapture as VideoCapture else: - from cv2 import VideoCamera + from cv2 import VideoCapture from datetime import datetime @@ -30,7 +30,7 @@ class UVCCamera(Component): self._last_frame = None def config_changed(self): - self.camera = VideoCamera(0) + self.camera = VideoCapture(0) if self.camera is None: raise AssertionError(f"camera not detected: 0") if self.simulate: From 8ecb7dcad8047ec2350c077fa58cbdf74400b1bc Mon Sep 17 00:00:00 2001 From: mino Date: Tue, 11 Oct 2022 16:25:18 +0200 Subject: [PATCH 4/8] wip --- config/machine_settings/mino.ini | 24 ++++++++++++++++++++++++ src/components/uvc_camera.py | 4 ++-- src/ui/test/test.py | 13 ++++++++----- src/ui/test_vision/test_vision.py | 18 ++++++++++++++---- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/config/machine_settings/mino.ini b/config/machine_settings/mino.ini index 36a8bdc..d891c0d 100644 --- a/config/machine_settings/mino.ini +++ b/config/machine_settings/mino.ini @@ -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] +model: t3l port: /dev/ttyUSB0 + +[multicomp] +port: /dev/ttyACM0 + +[neo_pixels] +port: /dev/ttyACM1 + +[archive_synchronizer] +poll_time: 6 +hold_time: 1 diff --git a/src/components/uvc_camera.py b/src/components/uvc_camera.py index 402c496..aca2ade 100644 --- a/src/components/uvc_camera.py +++ b/src/components/uvc_camera.py @@ -58,8 +58,8 @@ class UVCCamera(Component): "b": float(self.config[self.name].get("balance_blue", 1)), } self.lock.lock() - 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_FRAME_WIDTH, int(self.resolution["w"] / 4)) + self.camera.set(cv2.CAP_PROP_FRAME_HEIGHT, int(self.resolution["h"] / 4)) self.camera.set(cv2.CAP_PROP_AUTOFOCUS, 1) if self.exposure_time is not None: self.camera.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0) diff --git a/src/ui/test/test.py b/src/ui/test/test.py index f4cad4e..4b8257b 100755 --- a/src/ui/test/test.py +++ b/src/ui/test/test.py @@ -298,13 +298,16 @@ class Test(Widget): if all([d not in self.components for d in dependency]): unsupported_steps.add(step.type) else: - unready = {} + unready = set() for d in dependency: - if not self.components[d].ready: - self.components[d].reconfigure() + if d in self.components: if not self.components[d].ready: - unready.add(d) - if unready == dependency: + 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: if dependency not in self.components: diff --git a/src/ui/test_vision/test_vision.py b/src/ui/test_vision/test_vision.py index 72ebf00..dbaf5d7 100644 --- a/src/ui/test_vision/test_vision.py +++ b/src/ui/test_vision/test_vision.py @@ -32,8 +32,12 @@ class Test_Vision(Test_Test): if self.run_once is True and self.done is True and self.done_ok is True: return # setup camera-vision loop - self.components["galaxy_camera"].set_period(period=None) # only get frame on request - self.components["galaxy_camera"].add_sources({"test_vision": self.request_frame}) + if "uvc_camera" in self.components: + 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.get_connection = self.components["vision"].out.connect(self.get) if "neo_pixels" in self.components and self.components["neo_pixels"].ready: @@ -51,11 +55,17 @@ class Test_Vision(Test_Test): def stop(self): # 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.disconnect(self.get_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() # def reset(self): From 064576e2257eabe9c52fd6081fa99cfd0a21a8c0 Mon Sep 17 00:00:00 2001 From: mino Date: Tue, 11 Oct 2022 16:46:07 +0200 Subject: [PATCH 5/8] wip --- src/components/uvc_camera.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/uvc_camera.py b/src/components/uvc_camera.py index aca2ade..2f55a37 100644 --- a/src/components/uvc_camera.py +++ b/src/components/uvc_camera.py @@ -58,8 +58,10 @@ class UVCCamera(Component): "b": float(self.config[self.name].get("balance_blue", 1)), } self.lock.lock() - self.camera.set(cv2.CAP_PROP_FRAME_WIDTH, int(self.resolution["w"] / 4)) - self.camera.set(cv2.CAP_PROP_FRAME_HEIGHT, int(self.resolution["h"] / 4)) + 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) From ba5e00b24bb7671507dde16a66d2ae7f6f9ed093 Mon Sep 17 00:00:00 2001 From: matteo porta Date: Wed, 12 Oct 2022 10:49:18 +0200 Subject: [PATCH 6/8] fix db locked error --- src/components/archive_synchronizer.py | 1 - src/test/tdb.py | 87 ++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 src/test/tdb.py diff --git a/src/components/archive_synchronizer.py b/src/components/archive_synchronizer.py index bb9bb2a..d56512e 100644 --- a/src/components/archive_synchronizer.py +++ b/src/components/archive_synchronizer.py @@ -36,7 +36,6 @@ class ArchiveSynchronizer(Component): self.gcs_bucket = None @db.connection_context() - @db.atomic() def _get(self): for record in Archive.select().where((Archive.archived != True) | (Archive.uploaded != True)): # using "is not True" breaks the query. if not self.simulate: diff --git a/src/test/tdb.py b/src/test/tdb.py new file mode 100644 index 0000000..5e4b773 --- /dev/null +++ b/src/test/tdb.py @@ -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) From 83a6597238573e2b440ddb815c22509adff80a2c Mon Sep 17 00:00:00 2001 From: neo-dl Date: Wed, 12 Oct 2022 13:26:16 +0200 Subject: [PATCH 7/8] stten3 dev --- .../label_designs/TUBI RISCALDATI/ETA013.prn | Bin 2598 -> 0 bytes .../label_designs/TUBI RISCALDATI/ETACL.btw | Bin 7346 -> 8260 bytes config/label_templates/ETACL.prn | 13 ++++++------- 3 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 config/label_designs/TUBI RISCALDATI/ETA013.prn diff --git a/config/label_designs/TUBI RISCALDATI/ETA013.prn b/config/label_designs/TUBI RISCALDATI/ETA013.prn deleted file mode 100644 index e8c03181bf10aba6bf7c3d86c2828ae59983a84b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2598 zcmaJ@-D=}T6n5!F!C>+T8GMr#23sRpvQ)AgRC~M#{8xEgLT`c^i;cjty|G<3F-x{r zx!hOUl8d}Xi(eqUb0K(oMt`XiO@xQz8GYxR?|kP-_VLF>IDLD(@ZS6A!`hpzg4NZV zBjpG!g4OxOnxAeh@)9{}K`5{B{p_;kti3iS6ztvUiz{w*3B|*xsi0?|A=Z8`=HAlYJDW zpKO7Ekl-${TOOSs#<*REPvYFBHi>_i+JECb+k{VM6TaJo{~c5)uKTpEq|T&nxceaJ zfEE!g&}bj+Z$K;f5<80k(A+_r4()do5mi?!WkydKQgsVkRs&bvLC@~j80%CqF%{@H zQE`>JFu_j$=P|9Ocw)d%Xa#r^S3A>nFhR?!<;o8;2aRB}S(E@AehEC(^VjF+0n$j_ z&V2MHHXC|z5~3(g3-!Fk!kf*}_iXS(=4M&AX#wpQwOF{?ng;%C<^Pxi8%2cxxL-q) zVClb~&GUFo5G#uCsc7p;fbnXDWMlV7GN2X z7d;kWnLL}Jd)9Hf-K+FgibRd!rN3OF**pwp z-qcTBge1}oMO8}UKj&>U3mQ(~jY&ri8)O|Mz*!32xO6n`GBKt@*Xc6^zjBrGEB~VW K*`%KSvHA~i@@h{2 diff --git a/config/label_designs/TUBI RISCALDATI/ETACL.btw b/config/label_designs/TUBI RISCALDATI/ETACL.btw index da901da82bc00824d64407b5dabd1f2211f17200..f09ded0ba33b1dccabb7481799543ca68de20baf 100644 GIT binary patch literal 8260 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 literal 7346 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 BGl2jA diff --git a/config/label_templates/ETACL.prn b/config/label_templates/ETACL.prn index 61a184d..181835b 100644 --- a/config/label_templates/ETACL.prn +++ b/config/label_templates/ETACL.prn @@ -1,4 +1,4 @@ -SIZE 50.1 mm, 130 mm +SIZE 50.1 mm, 130 mm GAP 3 mm, 0 mm SPEED 2 DENSITY 7 @@ -8,13 +8,12 @@ OFFSET 0 mm SET PEEL OFF SET CUTTER OFF SET PARTIAL_CUTTER OFF -SET TEAR ON +SET TEAR ON 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 -TEXT 21,198,"0",270,7,7,"{RECIPE}{DD}{MO}{YY}{HH}{MI}{SN5}" -DMATRIX 151,104,250,250,x4,14,14,"{RECIPE}{DD}{MO}{YY}{HH}{MI}{SN5}" -DMATRIX 57,104,344,344,x4,14,14,"{RECIPE}{DD}{MO}{YY}{HH}{MI}{SN5}" +TEXT 378,38,"ROMAN.TTF",90,1,7,"{RECIPE}-{DD}{MO}{YY}{SN5}" +DMATRIX 175,95,226,226,x3,22,22,"{RECIPE}-{DD}{MO}{YY}{SN5}" +DMATRIX 80,95,321,321,x3,22,22,"{RECIPE}-{DD}{MO}{YY}{SN5}" BOX 8,16,394,242,3 PRINT 1,1 - \ No newline at end of file From a132e1a6668114d31d2e4197deea14e26e39faff Mon Sep 17 00:00:00 2001 From: neo-dl Date: Wed, 12 Oct 2022 13:40:43 +0200 Subject: [PATCH 8/8] stten3 dev --- src/test/test_import_tubi_riscaldati.csv | 220 +++++++++++------------ 1 file changed, 110 insertions(+), 110 deletions(-) diff --git a/src/test/test_import_tubi_riscaldati.csv b/src/test/test_import_tubi_riscaldati.csv index 6f3021e..b93f61d 100644 --- a/src/test/test_import_tubi_riscaldati.csv +++ b/src/test/test_import_tubi_riscaldati.csv @@ -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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.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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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-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-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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-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-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-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-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-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-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-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 -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-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-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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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/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/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/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 -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/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/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/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 -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/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/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/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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 +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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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