Completato protocols rendendo dinamici gli argomenti dei cmds

master
Guido Longoni 2019-09-27 18:16:26 +02:00
parent 4a7dc71daf
commit 4df4253e61
2 changed files with 13 additions and 4 deletions

View File

@ -44,7 +44,7 @@ MKPcommands = {
'defPrefix': False,
'begin': '\x02', #STX
'end': '\x03', #ETX
'command': 'TZ{imagename};{printMode};{queueNo};{delay}\r{fieldContent}{counterStart}',
'command': 'TZ{imagename};{printMode};{queueNo};{delay}\r{fieldContent}\r{counterStart}',
'success': '\x06\x02([0-9])OK\x03',
'error': '([0-9])E([0-9])',
'args': ['imageName', 'printMode', 'fieldContent'],

View File

@ -10,11 +10,20 @@ import commands as cmd
import re
def cmdString(cmdName, cmdArgs=None):
def cmdString(cmdName, **cmdArgs):
cmdDict = cmd.MKPcommands[cmdName]
mandatory_args = set(cmdDict['args'])
optional_args = set(cmdDict['optargs'])
my_args = set(cmdArgs.keys())
if my_args.intersection(mandatory_args) != my_args:
raise ValueError('Argomenti obbligatori errati o mancanti.')
if len(my_args-mandatory_args-optional_args) > 0:
raise Warning('Forniti argomenti sconosciuti!')
argDict = {**{a: cmdArgs[a] for a in mandatory_args}
** {a: cmdArgs[a] if a in my_args else '' for a in optional_args}
}
return str(cmd.DEFprefix['begin'] if cmdDict['defPrefix'] else cmdDict['begin']) \
+ str(cmdDict['command']) \
+ str(';'.join([cmdArgs[k] for k in cmdDict['args']]) if cmdArgs is not None else '') \
+ re.sub(r';+', ';', cmdDict['command'].format(argDict)) \
+ str(cmd.DEFprefix['end']
if cmdDict['defPrefix'] else cmdDict['end'])