Scratch write enab TCam Ch

This commit is contained in:
Samuele Locatelli
2020-10-24 16:07:43 +02:00
parent ca6dde4614
commit 481e432356
+20 -12
View File
@@ -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
/// <summary>
/// Refresh dati ThermoCamera dal PLC x area command/status
/// </summary>
private void refreshRiscTermoCamAbilit()
private void refreshRiscTermoCamEnab()
{
// leggo DB664 x abilitazione ch alla termocamera
List<byte> currMem = new List<byte>();
@@ -3435,35 +3435,43 @@ namespace CMS_CORE_Library.S7Net
/// <returns></returns>
public override CmsError PLC_WWarmerChTCamEnab(Dictionary<int, bool> 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<byte> currMem = new List<byte>();
// 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;
}
/// <summary>
/// Set ThermoCamera mode