update x test scrittura string
This commit is contained in:
@@ -153,7 +153,7 @@
|
||||
"name": "PPM",
|
||||
"description": "Velocita espressa come Pacchi Per Minuto",
|
||||
"memAddr": "41106",
|
||||
"tipoMem": "Real",
|
||||
"tipoMem": "RealLH",
|
||||
"index": 1106,
|
||||
"size": 2,
|
||||
"unit": "#",
|
||||
|
||||
@@ -540,15 +540,16 @@ namespace IOB_WIN_NEXT
|
||||
/// </summary>
|
||||
/// <param name="startAddr"></param>
|
||||
/// <param name="currRegVal">Valore in formato INT da registri</param>
|
||||
/// <param name="baseAddr">Indirizzo di base dei registri</param>
|
||||
/// <returns></returns>
|
||||
public bool writeInputReg(int startAddr, int[] currRegVal)
|
||||
public bool writeInputReg(int startAddr, int[] currRegVal, int baseAddr)
|
||||
{
|
||||
bool answ = false;
|
||||
if (currPLC.Connected)
|
||||
{
|
||||
try
|
||||
{
|
||||
currPLC.WriteMultipleRegisters(startAddr + deltaBase, currRegVal);
|
||||
currPLC.WriteMultipleRegisters(startAddr + deltaBase + (40000 - baseAddr), currRegVal);
|
||||
answ = true;
|
||||
}
|
||||
catch
|
||||
@@ -797,13 +798,13 @@ namespace IOB_WIN_NEXT
|
||||
CurrVal = ModbusClient.ConvertIntToRegisters(valInt);
|
||||
}
|
||||
|
||||
fatto = writeInputReg(currMem.index, CurrVal);
|
||||
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
|
||||
break;
|
||||
|
||||
case plcDataType.DInt:
|
||||
valUInt = getScaledUInt(currMem, true);
|
||||
CurrVal = ModbusClient.ConvertLongToRegisters(valInt);
|
||||
fatto = writeInputReg(currMem.index, CurrVal);
|
||||
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
|
||||
break;
|
||||
|
||||
//case plcDataType.Word:
|
||||
@@ -820,19 +821,23 @@ namespace IOB_WIN_NEXT
|
||||
case plcDataType.RealHL:
|
||||
valDouble = getScaledDouble(currMem);
|
||||
CurrVal = ModbusClient.ConvertFloatToRegisters((float)valDouble, ModbusClient.RegisterOrder.HighLow);
|
||||
fatto = writeInputReg(currMem.index, CurrVal);
|
||||
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
|
||||
break;
|
||||
|
||||
case plcDataType.FloatBADC:
|
||||
case plcDataType.RealLH:
|
||||
valDouble = getScaledDouble(currMem);
|
||||
CurrVal = ModbusClient.ConvertFloatToRegisters((float)valDouble, ModbusClient.RegisterOrder.LowHigh);
|
||||
fatto = writeInputReg(currMem.index, CurrVal);
|
||||
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
|
||||
break;
|
||||
|
||||
case plcDataType.String:
|
||||
CurrVal = ModbusClient.ConvertStringToRegisters(currMem.value);
|
||||
fatto = writeInputReg(currMem.index, CurrVal);
|
||||
CurrVal = ModbusClient.ConvertStringToRegisters(currMem.value.PadRight(currMem.size * 2));
|
||||
var regLen = ModbusClient.ConvertIntToRegisters(currMem.size * 2 - 2);
|
||||
Array.Copy(regLen, 0, CurrVal, CurrVal.Length - regLen.Length, regLen.Length);
|
||||
//CurrVal[CurrVal.Length - 2] = regLen[1];
|
||||
//CurrVal[CurrVal.Length - 1] = regLen[0];
|
||||
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1348,14 +1353,6 @@ namespace IOB_WIN_NEXT
|
||||
// valore string...
|
||||
valString = ModbusClient.ConvertRegistersToString(listInt, 0, item.Value.size);
|
||||
}
|
||||
//else if (item.Value.unit == "EPOCH")
|
||||
//{
|
||||
// // devo prendere i dati come UInt quindi li metto insieme upper/lower
|
||||
// UInt32 uint32 = (uint)listInt[0];
|
||||
// uint32 <<= 16;
|
||||
// uint32 |= (uint)listInt[1];
|
||||
// valore = (double)uint32;
|
||||
//}
|
||||
else
|
||||
{
|
||||
// valori numerici...
|
||||
@@ -1416,22 +1413,8 @@ namespace IOB_WIN_NEXT
|
||||
{
|
||||
// valore string...
|
||||
valString = ModbusClient.ConvertRegistersToString(listInt, 0, item.Value.size);
|
||||
valString = valString.Replace("\n", "").Replace("\r", "").Replace("\0", string.Empty).Trim();
|
||||
}
|
||||
//else if (item.Value.unit == "EPOCH")
|
||||
//{
|
||||
// // devo prendere i dati come UInt quindi li metto insieme upper/lower
|
||||
// var hVal = BitConverter.ToUInt16(BitConverter.GetBytes(listInt[0]), 0);
|
||||
// var lVal = BitConverter.ToUInt16(BitConverter.GetBytes(listInt[1]), 0);
|
||||
// // ricostruisco da due Uint16 un Uint32
|
||||
// UInt32 uint32 = hVal;
|
||||
// uint32 <<= 16;
|
||||
// uint32 |= lVal;
|
||||
// valore = (double)uint32;
|
||||
// //byte[] rawData = new byte[4];
|
||||
// //Array.Copy(BitConverter.GetBytes(listInt[0]), 0, rawData, 2, 2);
|
||||
// //Array.Copy(BitConverter.GetBytes(listInt[1]), 0, rawData, 0, 2);
|
||||
// //var valTest = BitConverter.ToUInt32(rawData, 0);
|
||||
//}
|
||||
else
|
||||
{
|
||||
valore = convertFromReg(listInt, item.Value.size, item.Value.tipoMem);
|
||||
|
||||
@@ -222,5 +222,6 @@ namespace IOB_WIN_NEXT
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user