public bool ReadEvent(byte DestinationAddress, out byte Event, out string ErrorMessage) { Event = (byte)0; bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } ArrayList arrData = new ArrayList(); ArrayList data = this.get_data(new csDataFrame(ControlCharacters.TXStart, DestinationAddress, (byte)120, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data == null) { return(false); } csDataFrame csDataFrame = new csDataFrame(data); if (!csDataFrame.CRC) { return(false); } Event = (byte)csDataFrame.Data[0]; this.HandlePortClose(PortOpened); return(true); }
public bool GetSerialNo(byte DestinationAddress, out uint SerialNo, out string ErrorMessage) { ErrorMessage = ""; SerialNo = 0U; bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } ArrayList arrData = new ArrayList(); ArrayList data1 = this.get_data(new csDataFrame(ControlCharacters.TXStart, DestinationAddress, (byte)2, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data1 == null) { return(false); } csDataFrame csDataFrame = new csDataFrame(data1); if (!csDataFrame.CRC) { return(false); } ArrayList data2 = csDataFrame.Data; SerialNo = csTools.BigEndianBytesToInt(data2.GetRange(0, 4)); this.HandlePortClose(PortOpened); return(true); }
public bool GetType(byte bytDestinationAddress, out ArrayList arrTypeRev, out string ErrorMessage) { ErrorMessage = ""; arrTypeRev = (ArrayList)null; bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } this.ToString(); ArrayList arrData = new ArrayList(); ArrayList data = this.get_data(new csDataFrame(ControlCharacters.TXStart, bytDestinationAddress, (byte)1, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data == null) { return(false); } csDataFrame csDataFrame = new csDataFrame(data); if (!csDataFrame.CRC) { return(false); } arrTypeRev = csDataFrame.Data; this.HandlePortClose(PortOpened); return(true); }
public bool ReadRAM(byte bytDestinationAddress, ushort shoStartAddress, byte bytNumberOfBytes, ArrayList arrRAM, out string ErrorMessage) { ErrorMessage = ""; bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } ArrayList arrData = new ArrayList(); arrRAM = new ArrayList(); arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(shoStartAddress)); arrData.Add((object)bytNumberOfBytes); ArrayList data = this.get_data(new csDataFrame(ControlCharacters.TXStart, bytDestinationAddress, (byte)5, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data == null) { return(false); } csDataFrame csDataFrame = new csDataFrame(data); if (!csDataFrame.CRC) { return(false); } arrRAM.AddRange((ICollection)csDataFrame.Data); this.HandlePortClose(PortOpened); return(true); }
private static ushort GetUshortFromLogData(csDataFrame objGetLogDataAns, int pointer) { return(csTools.BigEndianBytesToShort(new ArrayList() { objGetLogDataAns.Data[pointer], objGetLogDataAns.Data[pointer + 1] })); }
private static double GetDoubleFromLogData(csDataFrame objGetLogDataAns, byte SignEx, int pointer) { return(csTools.ToFloat(SignEx, new ArrayList() { objGetLogDataAns.Data[pointer], objGetLogDataAns.Data[pointer + 1], objGetLogDataAns.Data[pointer + 2], objGetLogDataAns.Data[pointer + 3] })); }
public bool GetHistoricalHourData(byte DestinationAddress, ushort RegisterId, ushort TimeStamp1, ushort TimeStamp2, ArrayList arrValues, out byte UnitId, out string ErrorMessage) { UnitId = (byte)0; bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } ArrayList arrData = new ArrayList(); arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(RegisterId)); arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(TimeStamp1)); arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(TimeStamp2)); ArrayList data = this.get_data(new csDataFrame(ControlCharacters.TXStart, DestinationAddress, (byte)99, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data == null) { this.HandlePortClose(PortOpened); return(false); } csDataFrame csDataFrame = new csDataFrame(data); if (!csDataFrame.CRC || csDataFrame.Data.Count < 4) { this.HandlePortClose(PortOpened); return(false); } if ((int)csTools.BigEndianBytesToShort(new ArrayList() { csDataFrame.Data[0], csDataFrame.Data[1] }) != (int)RegisterId) { return(false); } UnitId = (byte)csDataFrame.Data[2]; byte num = (byte)csDataFrame.Data[3]; byte SignExp = (byte)csDataFrame.Data[4]; if ((int)(byte)csDataFrame.Data[5] == (int)byte.MaxValue) { int index = 6; while (index < csDataFrame.Data.Count) { arrValues.Add((object)csTools.ToFloat(SignExp, csDataFrame.Data.GetRange(index, (int)num))); index += (int)num; } } this.HandlePortClose(PortOpened); return(true); }
private bool GetHistoricalData(byte DestinationAddress, byte CommandId, ushort RegisterId, ushort StartRecord, byte NumberOfRecords, ArrayList arrValues, out byte numberOfDecimals, out byte UnitId, out string ErrorMessage) { UnitId = (byte)0; numberOfDecimals = (byte)0; bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } ArrayList arrData = new ArrayList(); arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(RegisterId)); arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(StartRecord)); arrData.Add((object)NumberOfRecords); ArrayList data = this.get_data(new csDataFrame(ControlCharacters.TXStart, DestinationAddress, CommandId, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data == null) { this.HandlePortClose(PortOpened); return(false); } csDataFrame csDataFrame = new csDataFrame(data); if (!csDataFrame.CRC || csDataFrame.Data.Count < 4) { this.HandlePortClose(PortOpened); return(false); } if ((int)csTools.BigEndianBytesToShort(new ArrayList() { csDataFrame.Data[0], csDataFrame.Data[1] }) != (int)RegisterId) { return(false); } UnitId = (byte)csDataFrame.Data[2]; byte num = (byte)csDataFrame.Data[3]; byte SignExp = (byte)csDataFrame.Data[4]; int index = 5; while (index < csDataFrame.Data.Count) { arrValues.Add((object)csTools.ToFloat(SignExp, out numberOfDecimals, csDataFrame.Data.GetRange(index, (int)num))); index += (int)num; } this.HandlePortClose(PortOpened); return(true); }
public bool GetHistoricalHourDataTimeStamps(byte DestinationAddress, ushort TimeStamp1, ushort TimeStamp2, ArrayList arrValues, out string ErrorMessage) { bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } ArrayList arrData1 = new ArrayList(); arrData1.AddRange((ICollection)csTools.ShortToBigEndianBytes((ushort)186)); arrData1.AddRange((ICollection)csTools.ShortToBigEndianBytes(TimeStamp1)); arrData1.AddRange((ICollection)csTools.ShortToBigEndianBytes(TimeStamp2)); ArrayList data1 = this.get_data(new csDataFrame(ControlCharacters.TXStart, DestinationAddress, (byte)99, arrData1, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data1 == null) { this.HandlePortClose(PortOpened); return(false); } csDataFrame csDataFrame1 = new csDataFrame(data1); if (!csDataFrame1.CRC || csDataFrame1.Data.Count < 4) { this.HandlePortClose(PortOpened); return(false); } if ((int)csTools.BigEndianBytesToShort(new ArrayList() { csDataFrame1.Data[0], csDataFrame1.Data[1] }) != 186) { this.HandlePortClose(PortOpened); return(false); } if ((int)(byte)csDataFrame1.Data[5] == 0) { this.HandlePortClose(PortOpened); return(true); } ArrayList arrData2 = new ArrayList(); arrData2.AddRange((ICollection)csTools.ShortToBigEndianBytes((ushort)187)); arrData2.AddRange((ICollection)csTools.ShortToBigEndianBytes(TimeStamp1)); arrData2.AddRange((ICollection)csTools.ShortToBigEndianBytes(TimeStamp2)); ArrayList data2 = this.get_data(new csDataFrame(ControlCharacters.TXStart, DestinationAddress, (byte)99, arrData2, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data2 == null) { this.HandlePortClose(PortOpened); return(false); } csDataFrame csDataFrame2 = new csDataFrame(data2); if (!csDataFrame2.CRC || csDataFrame2.Data.Count < 4) { this.HandlePortClose(PortOpened); return(false); } if ((int)csTools.BigEndianBytesToShort(new ArrayList() { csDataFrame2.Data[0], csDataFrame2.Data[1] }) != 187) { this.HandlePortClose(PortOpened); return(false); } if ((int)(byte)csDataFrame2.Data[5] == (int)byte.MaxValue) { int index = 6; while (index < csDataFrame1.Data.Count && index < csDataFrame2.Data.Count) { int year = 2000 + (int)(byte)csDataFrame1.Data[index]; int month = (int)(byte)csDataFrame1.Data[index + 1]; int day = (int)(byte)csDataFrame2.Data[index]; int hour = (int)(byte)csDataFrame2.Data[index + 1]; if (day != 0) { DateTime dateTime = new DateTime(year, month, day, hour, 0, 0); arrValues.Add((object)dateTime); } index += 2; } } this.HandlePortClose(PortOpened); return(true); }
private static byte GetFormatFromLogData(csDataFrame objGetLogDataAns, int pointer) { return(Convert.ToByte(objGetLogDataAns.Data[pointer])); }
public bool GetLogFromRecordIdTowardsPresent(byte DestinationAddress, byte LogId, ushort[] registers, byte noOfRecords, ushort fromRecordId, ref ushort lastRecordId, ref ushort newestRecordId, ref byte info, ref csKMPLogRegisters KMPLogRegisters, out string ErrorMessage) { bool PortOpened = false; byte bytCID = (byte)162; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } byte num1 = Convert.ToByte(registers.Length); ArrayList arrData = new ArrayList(); arrData.Add((object)LogId); arrData.Add((object)num1); foreach (ushort shoValue in registers) { arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(shoValue)); } arrData.Add((object)noOfRecords); arrData.Add((object)Convert.ToByte(128)); arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(fromRecordId)); ArrayList data = this.get_data(new csDataFrame(ControlCharacters.TXStart, DestinationAddress, bytCID, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data == null) { this.HandlePortClose(PortOpened); return(false); } csDataFrame objGetLogDataAns = new csDataFrame(data); if (!objGetLogDataAns.CRC || objGetLogDataAns.Data.Count < 4) { this.HandlePortClose(PortOpened); return(false); } byte num2 = (byte)objGetLogDataAns.Data[1]; KMPLogRegisters.Clear(); int num3 = objGetLogDataAns.Data.Count - 3; lastRecordId = Functions.GetUshortFromLogData(objGetLogDataAns, objGetLogDataAns.Data.Count - 5); newestRecordId = Functions.GetUshortFromLogData(objGetLogDataAns, objGetLogDataAns.Data.Count - 3); info = (byte)objGetLogDataAns.Data[objGetLogDataAns.Data.Count - 1]; ushort num4 = (ushort)0; ushort num5 = (ushort)0; int pointer1 = 2; while (num3 - pointer1 > 5) { num5 = Functions.GetUshortFromLogData(objGetLogDataAns, pointer1); pointer1 += 2; ++num4; if ((int)num4 == 1) { for (int index1 = 1; index1 <= (int)num2; ++index1) { csKMPLogRegister csKmpLogRegister = new csKMPLogRegister(noOfRecords); csKmpLogRegister.RegisterId = Functions.GetUshortFromLogData(objGetLogDataAns, pointer1); int index2 = pointer1 + 2; csKmpLogRegister.Unit = (byte)objGetLogDataAns.Data[index2]; int index3 = index2 + 1; csKmpLogRegister.Size = (byte)objGetLogDataAns.Data[index3]; int index4 = index3 + 1; csKmpLogRegister.SignEx = (byte)objGetLogDataAns.Data[index4]; int pointer2 = index4 + 1; csKmpLogRegister.Records[(int)num4 - 1] = Functions.GetDoubleFromLogData(objGetLogDataAns, csKmpLogRegister.SignEx, pointer2); pointer1 = pointer2 + 4; KMPLogRegisters.Add(csKmpLogRegister); } } else { for (int index = 1; index <= (int)num2; ++index) { csKMPLogRegister csKmpLogRegister = KMPLogRegisters[index - 1]; csKmpLogRegister.Records[(int)num4 - 1] = Functions.GetDoubleFromLogData(objGetLogDataAns, csKmpLogRegister.SignEx, pointer1); pointer1 += 4; } } } this.HandlePortClose(PortOpened); return(true); }
public bool GetData(byte bytDestinationAddress, byte bytNumberOfRegisters, ArrayList arrRegisters, out ArrayList arrValues, out ArrayList arrUnits, out ArrayList arrDecimals, out string ErrorMessage) { ErrorMessage = ""; arrValues = new ArrayList(); arrUnits = new ArrayList(); arrDecimals = new ArrayList(); bool PortOpened = false; if (!this.HandlePortOpen(out PortOpened, out ErrorMessage)) { return(false); } ArrayList arrData = new ArrayList(); arrData.Add((object)bytNumberOfRegisters); foreach (ushort shoValue in arrRegisters) { arrData.AddRange((ICollection)csTools.ShortToBigEndianBytes(shoValue)); } ArrayList data1 = this.get_data(new csDataFrame(ControlCharacters.TXStart, bytDestinationAddress, (byte)16, arrData, ControlCharacters.StopByte).GetCommBuffer(), out ErrorMessage); if (data1 == null) { this.HandlePortClose(PortOpened); return(false); } csDataFrame csDataFrame = new csDataFrame(data1); if (!csDataFrame.CRC) { this.HandlePortClose(PortOpened); return(false); } ushort num1 = (ushort)0; byte Decimals = (byte)0; byte num2; int index1; for (int index2 = 0; index2 < csDataFrame.Data.Count - 5; index2 = index1 + (int)num2) { num1 = csTools.BigEndianBytesToShort(csDataFrame.Data.GetRange(index2, 2)); int num3 = index2 + 2; ArrayList data2 = csDataFrame.Data; int index3 = num3; int num4 = 1; int num5 = index3 + num4; byte num6 = (byte)data2[index3]; ArrayList data3 = csDataFrame.Data; int index4 = num5; int num7 = 1; int num8 = index4 + num7; num2 = (byte)data3[index4]; ArrayList data4 = csDataFrame.Data; int index5 = num8; int num9 = 1; index1 = index5 + num9; byte SignExp = (byte)data4[index5]; arrValues.Add((object)csTools.ToFloat(SignExp, csDataFrame.Data.GetRange(index1, (int)num2), out Decimals)); arrUnits.Add((object)num6); arrDecimals.Add((object)Decimals); } this.HandlePortClose(PortOpened); return(true); }