diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
index 2ae830f..7f4b3bc 100644
--- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs
+++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
@@ -2368,7 +2368,7 @@ namespace CMS_CORE_Library.S7Net
if (!useCache)
{
// refresh abilitazione canale x thermoCam | Write
- refreshRiscTermoCamAbilit();
+ refreshRiscTermoCamEnab();
// refresh ultima temp canale letta da thermoCam | Write
refreshRiscTermoCamTempAct();
// refresh temp canale impostata x thermoCam | Write
@@ -3087,7 +3087,7 @@ namespace CMS_CORE_Library.S7Net
///
/// Refresh dati ThermoCamera dal PLC x area command/status
///
- private void refreshRiscTermoCamAbilit()
+ private void refreshRiscTermoCamEnab()
{
// leggo DB664 x abilitazione ch alla termocamera
List currMem = new List();
@@ -3435,35 +3435,43 @@ namespace CMS_CORE_Library.S7Net
///
public override CmsError PLC_WWarmerChTCamEnab(Dictionary newData)
{
- // FIXME TODO serve nuova area termocamera
-#if false
- // memory area
- byte[] newMem = new byte[newData.Count];
+ // leggo DB664 x abilitazione ch alla termocamera
+ bool[] newMem = new bool[TCAM_CH_ENAB_DATA.Size * 8];
List currMem = new List();
// read actual data on memory...
- CmsError libraryError = MEM_RWByteList(R, 0, RISC_CHP_DATA.MemType, RISC_CHP_DATA.Address, RISC_CHP_DATA.SubAddress, 0, RISC_CHP_DATA.Size, ref currMem);
+ CmsError libraryError = MEM_RWByteList(R, 0, TCAM_CH_ENAB_DATA.MemType, TCAM_CH_ENAB_DATA.Address, TCAM_CH_ENAB_DATA.SubAddress, 0, TCAM_CH_ENAB_DATA.Size, ref currMem);
if (libraryError.IsError())
return libraryError;
- newMem = currMem.ToArray();
+
+ // Convert int into to true/false array
+ BitArray bArray = new BitArray(currMem.ToArray());
+ bArray.CopyTo(newMem, 0);
// update only given data...
foreach (var item in newData)
{
- newMem[item.Key - 1] = (byte)item.Value;
+ newMem[item.Key - 1] = item.Value;
}
// return as list...
- currMem = newMem.ToList();
+ currMem = boolsToByteArray(newMem).ToList();
+
// scrivo sul PLC array di byte...
- libraryError = MEM_RWByteList(W, 0, RISC_CHP_DATA.MemType, RISC_CHP_DATA.Address, RISC_CHP_DATA.SubAddress, 0, RISC_CHP_DATA.Size, ref currMem);
+ libraryError = MEM_RWByteList(W, 0, TCAM_CH_ENAB_DATA.MemType, TCAM_CH_ENAB_DATA.Address, TCAM_CH_ENAB_DATA.SubAddress, 0, TCAM_CH_ENAB_DATA.Size, ref currMem);
if (libraryError.IsError())
return libraryError;
-#endif
return NO_ERROR;
}
+ public static byte[] boolsToByteArray(bool[] bits)
+ {
+ byte[] ret = new byte[(bits.Length - 1) / 8 + 1];
+ bits.CopyTo(ret, 0);
+ return ret;
+ }
+
///
/// Set ThermoCamera mode