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'
|
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
|
global IDENT_NR
|
||||||
try:
|
try:
|
||||||
client.settimeout(0)
|
client.settimeout(0)
|
||||||
@@ -94,12 +128,22 @@ def main(mode: str) -> None:
|
|||||||
c.send(res)
|
c.send(res)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
elif mode == 'Avery-Async':
|
elif mode == 'Gassner-Enq':
|
||||||
handle_avery_async(c)
|
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__':
|
if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser()
|
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()
|
args = parser.parse_args()
|
||||||
main(args.mode)
|
main(args.mode)
|
||||||
|
|||||||
Reference in New Issue
Block a user