fco730 unit test ok

This commit is contained in:
st-ten-9 2023-10-11 16:26:34 +02:00
parent 12b0fc937b
commit 587674eabb
5 changed files with 60 additions and 45 deletions

View File

@ -14,7 +14,7 @@ poll_time: 60
hold_time: 1
[furness_controls]
port: COM4
port: COM3
model: fco730
[label_printer]

View File

@ -9,6 +9,9 @@ cd tmp
:: Advantech XNAVI
Invoke-WebRequest -uri "https://downloadt.advantech.com/download/downloadsr.aspx?File_Id=1-2BZC0F1" -usebasicparsing -outfile xnavi.zip
Expand-Archive .\xnavi.zip
cd xnavi
./xnavi.exe
:: GXIPY
Invoke-WebRequest -uri "https://dahengimaging.com/downloads/Galaxy_Windows_EN_32bits%2064bits_1.18.2208.9301.zip" -usebasicparsing -OutFile Galaxy_Windows_EN_32bits_64bits_1.18.2208.9301.zip

View File

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

View File

@ -10,17 +10,17 @@ if "--sim-furness-controls" in sys.argv:
else:
import serial
ETX=0x03
EOT=0x04
ENQ=0x05
ACK=0X06
NACK=0X15
ETX=b'\x03'
EOT=b'\x04'
ENQ=b'\x05'
ACK=b'\x06'
NACK=b'\x15'
class FurnessControlsLeakTester(Component):
def __init__(self, config=None, name=None, period=1, lazy=True, paused=False, threaded=True):
super().__init__(config=config, name=name, period=period, lazy=lazy, paused=paused, threaded=threaded, registers=None)
super().__init__(config=config, name=name, period=period, lazy=lazy, paused=paused, threaded=threaded)
self.bytesize = None
self.timeout = None
self.parity = None
@ -31,8 +31,8 @@ class FurnessControlsLeakTester(Component):
self.model = None
self.settings = None
self.registers = None
self.id1=0
self.id2=1
self.id1=b'0'
self.id2=b'1'
def config_changed(self):
super().config_changed()
@ -46,11 +46,11 @@ class FurnessControlsLeakTester(Component):
else:
raise NotImplementedError(f"Furness Controls model {self.model!r} not implemented.")
self.port = self.config[self.name]["port"]
self.baudrate = int(self.config[self.name]["baudrate"])
self.stopbits = getattr(serial, self.config[self.name].get("stopbits", "stopbits_one").upper())
self.parity = getattr(serial, self.config[self.name].get("parity", "parity_none").upper())
self.bytesize = getattr(serial, self.config[self.name].get("bytesize", "eightbits").upper())
self.timeout = float(self.config[self.name].get("read_timeout", 1))
self.baudrate = 9600
self.stopbits = 1
self.parity = serial.PARITY_NONE
self.bytesize = serial.EIGHTBITS
self.timeout = 0.5
if self.conn is not None:
self.conn.close()
self.conn = serial.Serial(
@ -264,33 +264,44 @@ class FurnessControlsLeakTester(Component):
def send_command(self,command):
out_bytes= bytearray()
out_bytes.append(EOT)
out_bytes.append(self.id1)
out_bytes.append(self.id2)
self.conn.write(out_bytes)
response = self.conn.read(1)
if response != ACK:
self.log.error(f"SEND COMMAND:{response}")
def send_enquiry(self,enquiry):
out_bytes=bytearray(EOT)
out_bytes.append(self.id1)
out_bytes.append(self.id2)
out_bytes.append(enquiry)
out_bytes.append(ENQ)
out_bytes.extend(EOT)
out_bytes.extend(self.id1)
out_bytes.extend(self.id2)
out_bytes.extend(command)
out_bytes.extend(ETX)
checksum=self.calc_checksum(out_bytes)
out_bytes.append(checksum)
self.conn.write(out_bytes)
response = self.conn.read(1)
if response != ACK:
response = self.conn.read(100)
if response == ACK:
return True
else:
self.log.error(f"SEND COMMAND:{response}")
return None
def calc_checksum(self,data):
def send_enquiry(self,enquiry):
out_bytes=bytearray(EOT)
out_bytes.extend(self.id1)
out_bytes.extend(self.id2)
out_bytes.extend(enquiry)
out_bytes.extend(ENQ)
checksum=self.calc_checksum(out_bytes)
out_bytes.append(checksum)
self.conn.write(out_bytes)
response = self.conn.read(100)
read_checksum = response[-1]
calculated_checksum = self.calc_checksum(response[0:-1],start_idx=0)
if read_checksum != calculated_checksum:
self.log.error(f"SEND COMMAND:{response}")
else:
return response
def calc_checksum(self,data,start_idx=1):
checksum=0
for i,data_byte in enumerate(data):
if i==0:
if i<start_idx:
continue # skip EOT
checksum=checksum^data_byte
return checksum

View File

@ -7,33 +7,34 @@ if platform.system().lower() == "windows":
else:
sys.path.append(f"{os.getcwd()}/src/components")
from furness_controls_leak_tester import FurnessControlsLeakTester
from components.furness_controls_leak_tester import FurnessControlsLeakTester
from lib.helpers import ConfigReader
config = ConfigReader(system_id="vm")
config = ConfigReader(system_id="ST-TEN-9")
app = QApplication(sys.argv)
tester_component = FurnessControlsLeakTester(name="furness_controls")
tester_component = FurnessControlsLeakTester(name="furness_controls",config=config)
tester_component.config_changed()
# GET STATUS
enquiry=bytearray(['M',0,0,0])
enquiry=bytearray(b'M000')
response=tester_component.send_enquiry(enquiry)
if response is not None:
print(f"RESPONSE:{response}")
print(f"INQUIRY RESPONSE:{response}")
else:
print("INQUIRY ERROR")
# SET PRODUCT 50 (LAST RECIPE)
command=bytearray(['F',0,5,0])
#command=bytearray(b'F050')
command=bytearray(b'G000') # START TEST
response=tester_component.send_command(command)
if response is not None:
print(f"RESPONSE:{response}")
if response is True:
print(f"COMMAND RESPONSE OK")
else:
print("COMMAND ERROR")
print("COMMAND NO RESPONSE")