check presenza dati in lettura/log

This commit is contained in:
Samuele E. Locatelli
2020-07-11 09:58:10 +02:00
parent b61dedf3fa
commit 72a38de46b
2 changed files with 40 additions and 33 deletions
+38 -31
View File
@@ -378,38 +378,45 @@ namespace IOB.WIN.FileExp
outVal = "";
// leggo!
var currMem = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte);
// converto lettura secondo il tipo!
switch (item.Value.DataType)
// check dati restituiti...
if (currMem.Length > 0)
{
case S7DataType.Bit:
// uso memSize
outVal = S7.Net.Types.Bit.FromByte(currMem[0], item.Value.bitAdr).ToString();
break;
case S7DataType.Byte:
outVal = S7.Net.Types.Byte.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.Word:
outVal = S7.Net.Types.Word.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.DWord:
outVal = S7.Net.Types.DWord.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.Real:
outVal = S7.Net.Types.Double.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.String:
// prendo 2° valore (num max valori)
int numChar = currMem[1];
// poi prendo la stringa...
for (int i = 2; i < numChar + 2; i++)
{
outVal += Char.ConvertFromUtf32(currMem[i]);
}
break;
default:
outVal = BitConverter.ToString(currMem);
break;
// converto lettura secondo il tipo!
switch (item.Value.DataType)
{
case S7DataType.Bit:
// uso memSize
outVal = S7.Net.Types.Bit.FromByte(currMem[0], item.Value.bitAdr).ToString();
break;
case S7DataType.Byte:
outVal = S7.Net.Types.Byte.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.Word:
outVal = S7.Net.Types.Word.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.DWord:
outVal = S7.Net.Types.DWord.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.Real:
outVal = S7.Net.Types.Double.FromByteArray(currMem.ToArray()).ToString();
break;
case S7DataType.String:
// prendo 2° valore (num max valori)
int numChar = currMem[1];
// poi prendo la stringa...
for (int i = 2; i < numChar + 2; i++)
{
outVal += Char.ConvertFromUtf32(currMem[i]);
}
break;
default:
outVal = BitConverter.ToString(currMem);
break;
}
}
else
{
lgError($"Errore: ricevuto 0 byte per DB{memoria.DbNum}.{memoria.indiceMem:000}");
}
newData.Add(outVal);
}
+2 -2
View File
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
// usando l'asterisco '*' come illustrato di seguito:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.2007.34")]
[assembly: AssemblyFileVersion("1.2.2007.34")]
[assembly: AssemblyVersion("1.2.2007.35")]
[assembly: AssemblyFileVersion("1.2.2007.35")]