aggiunti comandi e migliorato logging
le funzioni che chiamano i comandi sono volutamente tutte separate, perche' non si sa maimaster
parent
c168a8df07
commit
59c203f3a2
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"command_queue": "queueObject",
|
||||||
"ip1": {
|
"ip1": {
|
||||||
"queue_id": "queueObject",
|
"queue_id": "queueObject",
|
||||||
"thr": "threadObject",
|
"thr": "threadObject",
|
||||||
|
|
|
||||||
|
|
@ -22,14 +22,13 @@ app = Flask(__name__)
|
||||||
@app.route('/tscprinter/printer/<ip>/<command>', methods=['POST'])
|
@app.route('/tscprinter/printer/<ip>/<command>', methods=['POST'])
|
||||||
def printer_in(ip, command):
|
def printer_in(ip, command):
|
||||||
parameters = request.get_json()
|
parameters = request.get_json()
|
||||||
print(f"Comando Stampante: {ip} {command} {str(parameters)}")
|
logger.debug(f"Comando Stampante: {ip} {command} {str(parameters)}")
|
||||||
# questo prossimo mi sa che non funzia perché la funzione
|
# questo prossimo mi sa che non funzia perché la funzione
|
||||||
# inizia a esistere quando si esegue tsc_manager.main ma poi non
|
# inizia a esistere quando si esegue tsc_manager.main ma poi non
|
||||||
# viene esportata nello scope del modulo tsc_manager
|
# viene esportata nello scope del modulo tsc_manager
|
||||||
queue_id = tsc_manager.get_queue_id(ip)
|
queue_id = tsc_manager.get_queue_id(ip)
|
||||||
print(queue_id)
|
if queue_id is not None:
|
||||||
if queue_id is not None and queue_id in queues_in:
|
queue_id.put({'name': command, 'parameters': parameters})
|
||||||
queues_in[queue_id].put({'name': command, 'parameters': parameters})
|
|
||||||
return "Comando Stampante Inviato", 200
|
return "Comando Stampante Inviato", 200
|
||||||
else:
|
else:
|
||||||
return "Stampante non trovata", 404
|
return "Stampante non trovata", 404
|
||||||
|
|
@ -37,7 +36,7 @@ def printer_in(ip, command):
|
||||||
@app.route('/tscprinter/gest/<command>', methods=['POST'])
|
@app.route('/tscprinter/gest/<command>', methods=['POST'])
|
||||||
def gest_in(command):
|
def gest_in(command):
|
||||||
parameters = request.get_json()
|
parameters = request.get_json()
|
||||||
print(f"Comando Gestore: {str(parameters)}")
|
logger.debug(f"Comando Gestore: {str(parameters)}")
|
||||||
# istes di sopra
|
# istes di sopra
|
||||||
queue_command = tsc_manager.get_queue_command()
|
queue_command = tsc_manager.get_queue_command()
|
||||||
if queue_command is not None:
|
if queue_command is not None:
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ def notifier(queue_out, logger):
|
||||||
requests.post(django_addr+msg['url'], json=msg['msg'])
|
requests.post(django_addr+msg['url'], json=msg['msg'])
|
||||||
riuscita = True
|
riuscita = True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("django irraggiungibile. aspetto 2 sec...")
|
logger.debug("django irraggiungibile. aspetto 2 sec...")
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
|
|
@ -37,6 +37,7 @@ def send_response(queue_out, ip, command, data):
|
||||||
'url' : URL_RESPONSE,
|
'url' : URL_RESPONSE,
|
||||||
'msg': resp
|
'msg': resp
|
||||||
}
|
}
|
||||||
|
print(f"Mando Risposta: {msg}")
|
||||||
queue_out.put(msg)
|
queue_out.put(msg)
|
||||||
|
|
||||||
def send_hello(queue_out):
|
def send_hello(queue_out):
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,15 @@ Created on 19 mar 2020
|
||||||
'''
|
'''
|
||||||
TSC_COMMANDS = {'DOWNLOAD': "DOWNLOAD {location}{name}{size}{content}",
|
TSC_COMMANDS = {'DOWNLOAD': "DOWNLOAD {location}{name}{size}{content}",
|
||||||
'REMOVE': "KILL {location}{name}",
|
'REMOVE': "KILL {location}{name}",
|
||||||
|
'MOVE': "MOVE",
|
||||||
'LIST': "~!F",
|
'LIST': "~!F",
|
||||||
|
'INFO': "~!T",
|
||||||
|
'USE': "~!@",
|
||||||
|
'PAUSE': "!P",
|
||||||
|
'RESUME': "!O",
|
||||||
|
'CLEAR': "!.",
|
||||||
'RUN': "RUN {name}",
|
'RUN': "RUN {name}",
|
||||||
'STATUS': '!?'}
|
'STATUS': "!?"}
|
||||||
|
|
||||||
TSC_STATUS = {0x00:"Normal",
|
TSC_STATUS = {0x00:"Normal",
|
||||||
0x01:"Head opened",
|
0x01:"Head opened",
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,9 @@ Created on 19 mar 2020
|
||||||
|
|
||||||
import queue, time, socket, logging
|
import queue, time, socket, logging
|
||||||
from driver.tsc_commands import TSC_COMMANDS, TSC_STATUS, LINE_SEP
|
from driver.tsc_commands import TSC_COMMANDS, TSC_STATUS, LINE_SEP
|
||||||
from driver.notifier import URL_ERR, URL_EVENT, URL_RESPONSE
|
from driver.notifier import URL_ERR, URL_EVENT, URL_RESPONSE, send_response
|
||||||
|
import traceback
|
||||||
|
from win32comext.mapi.mapiutil import prTable
|
||||||
|
|
||||||
SOCK_TIMEOUT = 2
|
SOCK_TIMEOUT = 2
|
||||||
|
|
||||||
|
|
@ -15,24 +17,13 @@ def tsc_printer(q_in: queue.Queue, q_out: queue.Queue, q_cmd: queue.Queue, ip: s
|
||||||
prt = None
|
prt = None
|
||||||
|
|
||||||
def read_until(term):
|
def read_until(term):
|
||||||
buf = ''
|
buf = bytearray()
|
||||||
|
|
||||||
c=prt.recv(1)
|
c=prt.recv(1)
|
||||||
while c is not term:
|
while c != term:
|
||||||
buf = buf+c
|
buf = buf+c
|
||||||
c = prt.recv(1)
|
c = prt.recv(1)
|
||||||
return buf
|
return buf
|
||||||
|
|
||||||
def list_files():
|
|
||||||
nonlocal prt
|
|
||||||
prt.sendall(TSC_COMMANDS['LIST']+LINE_SEP)
|
|
||||||
time.sleep(0.1)
|
|
||||||
retval = read_until(0x1A).split(0x0D)
|
|
||||||
q_out.put({'url':URL_RESPONSE,
|
|
||||||
'msg': retval})
|
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
||||||
def send_file(name=None, content=None, ftype=None):
|
def send_file(name=None, content=None, ftype=None):
|
||||||
nonlocal prt
|
nonlocal prt
|
||||||
if ftype == 'batch':
|
if ftype == 'batch':
|
||||||
|
|
@ -40,7 +31,7 @@ def tsc_printer(q_in: queue.Queue, q_out: queue.Queue, q_cmd: queue.Queue, ip: s
|
||||||
elif ftype == 'data':
|
elif ftype == 'data':
|
||||||
data = content.join(LINE_SEP)+LINE_SEP
|
data = content.join(LINE_SEP)+LINE_SEP
|
||||||
to_send = TSC_COMMANDS['DOWNLOAD'].format(name=f'"{name}"',size=','+len(data),content=data)
|
to_send = TSC_COMMANDS['DOWNLOAD'].format(name=f'"{name}"',size=','+len(data),content=data)
|
||||||
prt.sendall(to_send)
|
prt.send_all(bytearray(to_send, encoding='utf-8'))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def delete_file(name=None):
|
def delete_file(name=None):
|
||||||
|
|
@ -49,27 +40,59 @@ def tsc_printer(q_in: queue.Queue, q_out: queue.Queue, q_cmd: queue.Queue, ip: s
|
||||||
to_send = TSC_COMMANDS['REMOVE'].format(location='F,', name=f'"{name}"')
|
to_send = TSC_COMMANDS['REMOVE'].format(location='F,', name=f'"{name}"')
|
||||||
else:
|
else:
|
||||||
to_send = TSC_COMMANDS['REMOVE'].format(name=f'"{name}"')
|
to_send = TSC_COMMANDS['REMOVE'].format(name=f'"{name}"')
|
||||||
prt.sendall(to_send+LINE_SEP)
|
prt.sendall(bytearray(to_send+LINE_SEP, encoding='utf-8'))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def move_file(name=None):
|
def move_file(name=None):
|
||||||
#per default muove i file dalla RAM alla FLASH
|
#per default muove i file dalla RAM alla FLASH
|
||||||
nonlocal prt
|
nonlocal prt
|
||||||
to_send = TSC_COMMANDS['MOVE'].format(name=f'"{name}"')
|
to_send = TSC_COMMANDS['MOVE'].format(name=f'"{name}"')
|
||||||
prt.sendall(to_send+LINE_SEP)
|
prt.sendall(bytearray(to_send+LINE_SEP, encoding='utf-8'))
|
||||||
|
pass
|
||||||
|
|
||||||
|
def list_files():
|
||||||
|
nonlocal prt
|
||||||
|
prt.sendall(bytearray(TSC_COMMANDS['LIST']+LINE_SEP, encoding="ascii"))
|
||||||
|
time.sleep(0.1)
|
||||||
|
retval = read_until(b'\x1A').decode('utf-8').split('\r')
|
||||||
|
logger.info(f"Risposta: {retval}")
|
||||||
|
send_response(q_out, ip, "LIST",{"lista_file": retval})
|
||||||
|
pass
|
||||||
|
|
||||||
|
def printer_info():
|
||||||
|
nonlocal prt
|
||||||
|
pass
|
||||||
|
|
||||||
|
def printer_usage():
|
||||||
|
nonlocal prt
|
||||||
|
pass
|
||||||
|
|
||||||
|
def printer_pause():
|
||||||
|
nonlocal prt
|
||||||
|
prt.sendall(bytearray(b'\x1B'+TSC_COMMANDS['PAUSE']))
|
||||||
|
pass
|
||||||
|
|
||||||
|
def printer_resume():
|
||||||
|
nonlocal prt
|
||||||
|
prt.sendall(bytearray(b'\x1B'+TSC_COMMANDS['RESUME']))
|
||||||
|
pass
|
||||||
|
|
||||||
|
def clear_memory():
|
||||||
|
nonlocal prt
|
||||||
|
prt.sendall(bytearray(b'\x1B'+TSC_COMMANDS['CLEAR']))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def run_batch(name=None):
|
def run_batch(name=None):
|
||||||
nonlocal prt
|
nonlocal prt
|
||||||
to_send = TSC_COMMANDS['RUN'].format(name=f'"{name}"')
|
to_send = TSC_COMMANDS['RUN'].format(name=f'"{name}"')
|
||||||
prt.sendall(to_send+LINE_SEP)
|
prt.sendall(bytearray(to_send+LINE_SEP, encoding='utf-8'))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_status():
|
def get_status():
|
||||||
nonlocal prt
|
nonlocal prt
|
||||||
prt.sendall(0x1B+TSC_COMMANDS['STATUS'])
|
prt.sendall(bytearray(b'\x1B'+TSC_COMMANDS['STATUS']))
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
return TSC_STATUS[prt.recv(1)]
|
return TSC_STATUS[int(prt.recv(1))]
|
||||||
|
|
||||||
|
|
||||||
while True: # connetti mantieni vivo il socket
|
while True: # connetti mantieni vivo il socket
|
||||||
|
|
@ -90,11 +113,22 @@ def tsc_printer(q_in: queue.Queue, q_out: queue.Queue, q_cmd: queue.Queue, ip: s
|
||||||
move_file(**par)
|
move_file(**par)
|
||||||
pass
|
pass
|
||||||
elif cmd == 'LIST':
|
elif cmd == 'LIST':
|
||||||
get_status()
|
list_files()
|
||||||
|
pass
|
||||||
|
elif cmd == 'INFO':
|
||||||
|
pass
|
||||||
|
elif cmd == 'USE':
|
||||||
|
pass
|
||||||
|
elif cmd == 'PAUSE':
|
||||||
|
pass
|
||||||
|
elif cmd == 'RESUME':
|
||||||
|
pass
|
||||||
|
elif cmd == 'CLEAR':
|
||||||
pass
|
pass
|
||||||
elif cmd == 'RUN':
|
elif cmd == 'RUN':
|
||||||
pass
|
pass
|
||||||
elif cmd == 'STATUS':
|
elif cmd == 'STATUS':
|
||||||
|
get_status()
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
logger.error("Comando stampante non riconosciuto")
|
logger.error("Comando stampante non riconosciuto")
|
||||||
|
|
@ -107,6 +141,7 @@ def tsc_printer(q_in: queue.Queue, q_out: queue.Queue, q_cmd: queue.Queue, ip: s
|
||||||
prt.close()
|
prt.close()
|
||||||
del prt
|
del prt
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
traceback.print_exc()
|
||||||
logger.error("Errore generale inizializzando la stampante: {}".format(e))
|
logger.error("Errore generale inizializzando la stampante: {}".format(e))
|
||||||
|
|
||||||
pass
|
pass
|
||||||
Loading…
Reference in New Issue