Servizio Microsoft in Backgruond
All'avvio del servizio vengono avviati i seguenti WorkerService:
- ImpinjWorker
- BilanciaWorker
- DBWorker
NotificatoreHubClient: gestisce la comunicazione SignalR tra servizio LineaImballaggioService e WebApp MonitorConnessioni
ConnessioneDB MSSQL: LineaImballaggioDB
SeriLog: gestione sia su File che su DB
Varibili presenti nell'AppConfig:
- IpImpinj: IP Locale dell' Gateway INPINJ
- IpBilancia: IP Locale della Bilancia collegata tramite OPCUA
- URIBilancia: Indirizzo URL OPCUA
- SecondiBilancia: Secondi di controllo se la lettura pesata tramite OPCUA è già stata salvata per lo stesso PESO e stesso RFID
- MinutiLetturaRFID: Minuti di controllo se lo stesso RFID è già stato letto
- NotificatoreHubIP: IP del Server SignalR
- Dir_Archivio: Root principale del Cartella di Archiviazione dei DATI
- Dir_Csv: Sotto Cartella di Archiviazione dei DATI in formato .csv
- Giorni_Storico: Num dei giorni antecedenti che verranno archiviati nei file .csv
- IsNotificatore: Flag di abilitazione per la gestire dello scambio di messaggi SignalR
- IsAvviaFlussoLogico: Flag di abilitazione per la logica di gestione del pacco
- IsTest: Flag di abilitazione se in ambiente di TEST
- GiorniPuliziaLogDB: Numero dei giorni antecedenti per la pulizia delle tabelle di LOG
- tentativiConn: Numero di tentativi di riconnessione all' Inpinj in caso di fallimento
- secondiAttesa: Secondi di attesa al prossimo tentativo di riconnessione all' Inpinj in caso di fallimento
LOGICA FUNZIONAMENTO E ORDINE COMUNICAZIONE CON GLI APPARATI:
Il worker che comunica con l'Impinj resta in ascolto del passaggio dell'epc/RFID e una volta arrivato lo salva in tabella ed anche in una variabile globale UltimoEPCInserito.
Il worker che comunica con la bilancia continua a chiedere la presenza del pallet alla bilancia e una volta individuatoche illo pallet,stato posizione pallet passa da false a TRUE, invoca la funzione principale dell'ImballaggioService (SalvaPesoAsync).
Il service prende il valore inserito nella variabile globale UltimoEPCInserito aggiungendo un'attesa di 3 secondi in caso di ritardo nella lettura dell'epc/RFID.
Se trova un epc/RFID da abbinare alla pesata lo salvo e avvio la logica altrimenti gestisce l'errore mandando KO