private static void AssertToByteArrayAndBackEquals(string value, int reservedLength, params byte[] expected) { var convertedData = S7String.ToByteArray(value, reservedLength); CollectionAssert.AreEqual(expected, convertedData); var convertedBack = S7String.FromByteArray(convertedData); Assert.AreEqual(value, convertedBack); }
/// <summary> /// Given a S7 variable type (Bool, Word, DWord, etc.), it converts the bytes in the appropriate C# format. /// </summary> /// <param name="varType"></param> /// <param name="bytes"></param> /// <param name="varCount"></param> /// <param name="bitAdr"></param> /// <returns></returns> private object?ParseBytes(VarType varType, byte[] bytes, int varCount, byte bitAdr = 0) { if (bytes == null || bytes.Length == 0) { return(null); } switch (varType) { case VarType.Byte: if (varCount == 1) { return(bytes[0]); } else { return(bytes); } case VarType.Word: if (varCount == 1) { return(Word.FromByteArray(bytes)); } else { return(Word.ToArray(bytes)); } case VarType.Int: if (varCount == 1) { return(Int.FromByteArray(bytes)); } else { return(Int.ToArray(bytes)); } case VarType.DWord: if (varCount == 1) { return(DWord.FromByteArray(bytes)); } else { return(DWord.ToArray(bytes)); } case VarType.DInt: if (varCount == 1) { return(DInt.FromByteArray(bytes)); } else { return(DInt.ToArray(bytes)); } case VarType.Real: if (varCount == 1) { return(Types.Real.FromByteArray(bytes)); } else { return(Types.Real.ToArray(bytes)); } case VarType.LReal: if (varCount == 1) { return(Types.LReal.FromByteArray(bytes)); } else { return(Types.LReal.ToArray(bytes)); } case VarType.String: return(Types.String.FromByteArray(bytes)); case VarType.S7String: return(S7String.FromByteArray(bytes)); case VarType.S7WString: return(S7WString.FromByteArray(bytes)); case VarType.Timer: if (varCount == 1) { return(Timer.FromByteArray(bytes)); } else { return(Timer.ToArray(bytes)); } case VarType.Counter: if (varCount == 1) { return(Counter.FromByteArray(bytes)); } else { return(Counter.ToArray(bytes)); } case VarType.Bit: if (varCount == 1) { if (bitAdr > 7) { return(null); } else { return(Bit.FromByte(bytes[0], bitAdr)); } } else { return(Bit.ToBitArray(bytes, varCount)); } case VarType.DateTime: if (varCount == 1) { return(DateTime.FromByteArray(bytes)); } else { return(DateTime.ToArray(bytes)); } case VarType.DateTimeLong: if (varCount == 1) { return(DateTimeLong.FromByteArray(bytes)); } else { return(DateTimeLong.ToArray(bytes)); } default: return(null); } }
public void ReadMalformedStringSizeLargerThanCapacity() { Assert.ThrowsException <PlcException>(() => S7String.FromByteArray(new byte[] { 3, 5, 0, 1, 2 })); }
private static void AssertFromByteArrayEquals(string expected, params byte[] bytes) { var convertedString = S7String.FromByteArray(bytes); Assert.AreEqual(expected, convertedString); }