Demo update s7net endianness in byte management

This commit is contained in:
Samuele Locatelli
2020-06-08 10:01:03 +02:00
parent 26a3e0b7e6
commit 0c1ca623cb
+11 -4
View File
@@ -651,10 +651,15 @@ namespace Siemens_S7_Test
break;
case "byte":
default:
for (int i = 0; i < memByteRead.Length; i++)
// attenzione: byte sono GIRATI x cui DEVO invertire lettura pari/dispari...
for (int i = 0; i < memByteRead.Length / 2; i++)
{
byteVal = Convert.ToString(memByteRead[i], 2).PadLeft(8, '0');
contenuto += string.Format("B{0:000}: {1} | {2}{3}", i, byteVal, memByteRead[i], Environment.NewLine);
// dispari
byteVal = Convert.ToString(memByteRead[i * 2 + 1], 2).PadLeft(8, '0');
contenuto += string.Format("B{0:000}: {1} | {2}{3}", i * 2, byteVal, memByteRead[i * 2 + 1], Environment.NewLine);
// pari
byteVal = Convert.ToString(memByteRead[i * 2], 2).PadLeft(8, '0');
contenuto += string.Format("B{0:000}: {1} | {2}{3}", i * 2 + 1, byteVal, memByteRead[i * 2], Environment.NewLine);
}
break;
}
@@ -691,7 +696,9 @@ namespace Siemens_S7_Test
byte.TryParse(txtWriteVal1.Text, out num2write);
byte[] DB_Byte = new byte[1];
DB_Byte[0] = num2write;
currPLC.WriteBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, DB_Byte);
// attenzione endianness! invertire byte...
int fixIndex = memoria.indiceMem % 2 == 0 ? memoria.indiceMem + 1 : memoria.indiceMem - 1;
currPLC.WriteBytes(DataType.DataBlock, memoria.DbNum, fixIndex, DB_Byte);
titolo = string.Format("WRITE BLOCK MEM: {0}", txtWriteAddr1.Text);
contenuto = "";
contenuto += string.Format("DT: {0} | DbNum: {1} | indiceMem: {2} | num2write: {3}{4}{4}", DataType.DataBlock, memoria.DbNum, memoria.indiceMem, num2write, Environment.NewLine);