diff --git a/SiemensS7/Siemens-S7-Test/TestMainForm.cs b/SiemensS7/Siemens-S7-Test/TestMainForm.cs index f34fda3..55bc384 100644 --- a/SiemensS7/Siemens-S7-Test/TestMainForm.cs +++ b/SiemensS7/Siemens-S7-Test/TestMainForm.cs @@ -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);