Fix gestione sendPzBlock x tav singola/multi

This commit is contained in:
Samuele Locatelli
2025-09-08 18:36:23 +02:00
parent de19bb843d
commit bfe208a40e
4 changed files with 85 additions and 16 deletions
+82 -13
View File
@@ -129,7 +129,7 @@ namespace IOB_WIN_FORM.Iob
protected bool enableCliRestart = false;
/// <summary>
/// Boolean x indicare contapezzi abilitato a livello di conf apoplicazione
/// Boolean x indicare contapezzi abilitato a livello di conf applicazione
/// </summary>
protected bool enablePzCountByApp = true;
@@ -3080,7 +3080,7 @@ namespace IOB_WIN_FORM.Iob
if (checkServerAlive)
{
string url2call = $"{urlRemTask2Exe}{taskName}";
if(!string.IsNullOrEmpty(codTav))
if (!string.IsNullOrEmpty(codTav))
{
url2call = $"{urlRemTask2ExeTav(codTav)}{taskName}";
}
@@ -3919,12 +3919,89 @@ namespace IOB_WIN_FORM.Iob
}
/// <summary>
/// Effettua verifica se abilitato invio pezzi in blocco e nel caso
/// Effettua verifica se abilitato invio pezzi in blocco PER TAVOLE e nel caso
/// - invio in blocco pezzi
/// - aggiornamento del contapezzi (passato come ref) x nuovo valore post invio
/// </summary>
protected virtual void trySendPzCountBlock(string forceMachName)
/// <param name="fullCode">Idx macchina completo, con tavola/pallet di invio</param>
/// <param name="pzCountMes">Contapezzi MES (IOB) attuale</param>
/// <param name="pzCountImp">Contapezzi impianto (per la tavola indicata)</param>
protected virtual void trySendPzCountBlock(string fullCode, int pzCountMes, int pzCountImp)
{
lgDebug($"Chiamata trySendPzCountBlock MULTI | fullCode: {fullCode} | pzCountMes: {pzCountMes} | pzCountImp: {pzCountImp}");
// in primis HA SENSO procedere SOLO SE server MP è Online...
if (MPOnline)
{
// SOLO SE online la macchina...
if (IobOnline)
{
int qtyAdded = 0;
int numIncr = 0;
// verifico se la funzione SIA abilitata
if (enableSendPzCountBlock)
{
int delta = pzCountImp - pzCountMes;
// se è abilitata verifico differenza: se ho DELTA > minSendPzCountBlock -->
// invio un blocco <= maxSendPzCountBlock
if (delta > minSendPzCountBlock)
{
// init genObj display
newDisplayData currDispData = new newDisplayData();
// resta indietro di ALMENO minSendPzCountBlock pezzi x recuperare 1:1...
numIncr = delta > maxSendPzCountBlock + minSendPzCountBlock ? maxSendPzCountBlock : delta - minSendPzCountBlock;
// invio il num max di pezzi ammesso in blocco!
lastUrl = $"{urlAddPzCount}{numIncr}".Replace(IOBConfFull.General.CodIOB, fullCode);
string resp = utils.callUrlNow(lastUrl);
if (!string.IsNullOrEmpty(resp))
{
// dalla risposta (come numero) capisco SE ha aggiunto i pezzi (e quanti)
int.TryParse(resp, out qtyAdded);
if (qtyAdded > 0)
{
// aggiorno contapezzi ...
pzCountMes += qtyAdded;
lgInfo($"SEND incremento contapezzi: send: {numIncr} | resp: {qtyAdded} | contapezziMES: {pzCountMes}");
// invio conferma contapezzi..
string fullUrl = $"{urlSetPzCount}{pzCountMes}".Replace(IOBConfFull.General.CodIOB, fullCode);
string retVal = utils.callUrl(fullUrl);
// verifica se tutto OK
if (retVal != $"{pzCountMes}")
{
// errore salvataggio contapezzi
lgError($"trySendPzCountBlock: errore salvataggio contapezzi: contapezziMES {pzCountMes} | risposta: {retVal}");
}
}
else
{
lgError($"Richiesto incremento {numIncr} ma NON registrato su server MP-IO");
}
}
currDispData.newUrlCallData = lastUrl;
currDispData.counter = pzCountMes;
currDispData.semOut = Semaforo.SV;
raiseRefresh(currDispData);
}
}
}
else
{
lgError("Impossibile trySendPzCountBlock: IobOnline è false");
}
}
else
{
lgError("Impossibile trySendPzCountBlock: MPOnline è false");
}
}
/// <summary>
/// Effettua verifica se abilitato invio pezzi in blocco (caso macchina standard/singolo contapezzi) e nel caso
/// - invio in blocco pezzi
/// - aggiornamento del contapezzi (passato come ref) x nuovo valore post invio
/// </summary>
protected virtual void trySendPzCountBlock()
{
lgDebug($"Chiamata trySendPzCountBlock STD | pzCountMes: {contapezziIOB} | pzCountImp: {contapezziPLC}");
// in primis HA SENSO procedere SOLO SE server MP è Online...
if (MPOnline)
{
@@ -3947,10 +4024,6 @@ namespace IOB_WIN_FORM.Iob
numIncr = delta > maxSendPzCountBlock + minSendPzCountBlock ? maxSendPzCountBlock : delta - minSendPzCountBlock;
// invio il num max di pezzi ammesso in blocco!
lastUrl = $"{urlAddPzCount}{numIncr}";
if (!string.IsNullOrEmpty(forceMachName))
{
lastUrl = lastUrl.Replace(IOBConfFull.General.CodIOB, forceMachName);
}
string resp = utils.callUrlNow(lastUrl);
if (!string.IsNullOrEmpty(resp))
{
@@ -3963,10 +4036,6 @@ namespace IOB_WIN_FORM.Iob
lgInfo($"SEND incremento contapezzi: send: {numIncr} | resp: {qtyAdded} | contapezziIOB: {contapezziIOB}");
// invio conferma contapezzi..
string fullUrl = $"{urlSetPzCount}{contapezziIOB}";
if (!string.IsNullOrEmpty(forceMachName))
{
fullUrl = fullUrl.Replace(IOBConfFull.General.CodIOB, forceMachName);
}
string retVal = utils.callUrl(fullUrl);
// verifica se tutto OK
if (retVal != contapezziIOB.ToString())
@@ -5327,7 +5396,7 @@ namespace IOB_WIN_FORM.Iob
// provo invio
if (!isMulti)
{
trySendPzCountBlock("");
trySendPzCountBlock();
}
// verifica per evitare loop infinito invio fallito
if (oldContapezzi == contapezziIOB)
+1 -1
View File
@@ -94,7 +94,7 @@ namespace IOB_WIN_MBUS.IobModbusTCP
/// - invio in blocco pezzi
/// - aggiornamento del contapezzi (passato come ref) x nuovo valore post invio
/// </summary>
protected override void trySendPzCountBlock(string forceMachName)
protected override void trySendPzCountBlock()
{
// non fa nulla se non accettare lato IOB i pezzi del PLC... su GWMS NON è gestito il contapezzi
if (contapezziIOB != contapezziPLC)
+1 -1
View File
@@ -207,7 +207,7 @@ namespace IOB_WIN_SIEMENS.IobSiemens
/// - invio in blocco pezzi
/// - aggiornamento del contapezzi (passato come ref) x nuovo valore post invio
/// </summary>
protected override void trySendPzCountBlock(string forceMachName)
protected override void trySendPzCountBlock()
{
// non fa nulla se non accettare lato IOB i pezzi del PLC... su GWMS NON è gestito il contapezzi
if (contapezziIOB != contapezziPLC)
+1 -1
View File
@@ -440,7 +440,7 @@ namespace IOB_WIN_SIEMENS.IobSiemens
// verifico se variato contapezzi... e se passato ritardo minimo...
if ((contapezziPLC - contapezziIOB) > minSendPzCountBlock)
{
trySendPzCountBlock("");
trySendPzCountBlock();
}
// invio a server contapezzi (aggiornato)