コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 private static ushort GetUshortFromLogData(csDataFrame objGetLogDataAns, int pointer)
 {
     return(csTools.BigEndianBytesToShort(new ArrayList()
     {
         objGetLogDataAns.Data[pointer],
         objGetLogDataAns.Data[pointer + 1]
     }));
 }
コード例 #6
0
 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]
     }));
 }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
 private static byte GetFormatFromLogData(csDataFrame objGetLogDataAns, int pointer)
 {
     return(Convert.ToByte(objGetLogDataAns.Data[pointer]));
 }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }