scales: Add Gassner-Enq
This commit is contained in:
+48
-4
@@ -56,7 +56,41 @@ def handle_systec_it(req: bytes) -> bytes:
|
||||
return b'<' + data + f'{crc16_modbus(data):8}'.encode('ascii') + b'>\r\n'
|
||||
|
||||
|
||||
def handle_avery_async(client: socket.socket) -> None:
|
||||
def handle_gassner_enq(req: bytes) -> bytes:
|
||||
global IDENT_NR
|
||||
|
||||
if req.startswith(b'C'):
|
||||
# set date and time
|
||||
incr = False
|
||||
elif req == b'\x05':
|
||||
incr = True
|
||||
elif req == b'?':
|
||||
incr = False
|
||||
else:
|
||||
return b'\x02ES 0 0 0 1 \x03'
|
||||
|
||||
if incr:
|
||||
time.sleep(random.randint(0, 5) / 10.0)
|
||||
|
||||
gew = random.randint(40, 4000)
|
||||
m = random.randint(1, 10)
|
||||
if incr:
|
||||
match m:
|
||||
case 1:
|
||||
return b'\x02 M 0 0 0 1 \x03'
|
||||
case 2:
|
||||
incr = False
|
||||
gew = 0
|
||||
|
||||
if incr:
|
||||
IDENT_NR += 1
|
||||
now = datetime.datetime.now()
|
||||
data = f'{IDENT_NR:6}{now:%Y%m%d%H%M%S}' if incr else ' '
|
||||
data = f' S{gew:7}{0:7}{gew:7}{1:2}{data}'
|
||||
return b'\x02' + data.encode('ascii') + b'\x03'
|
||||
|
||||
|
||||
def handle_avery_event(client: socket.socket) -> None:
|
||||
global IDENT_NR
|
||||
try:
|
||||
client.settimeout(0)
|
||||
@@ -94,12 +128,22 @@ def main(mode: str) -> None:
|
||||
c.send(res)
|
||||
except:
|
||||
pass
|
||||
elif mode == 'Avery-Async':
|
||||
handle_avery_async(c)
|
||||
elif mode == 'Gassner-Enq':
|
||||
try:
|
||||
while True:
|
||||
req = c.recv(1024)
|
||||
log(req + b'\n')
|
||||
res = handle_gassner_enq(req)
|
||||
log(res + b'\n')
|
||||
c.send(res)
|
||||
except:
|
||||
pass
|
||||
elif mode == 'Avery-Event':
|
||||
handle_avery_event(c)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('mode', choices=['SysTec-IT', 'Avery-Async'])
|
||||
parser.add_argument('mode', choices=['SysTec-IT', 'Gassner-Enq', 'Avery-Event'])
|
||||
args = parser.parse_args()
|
||||
main(args.mode)
|
||||
|
||||
Reference in New Issue
Block a user