コード例 #1
0
        protected override void InternalConverter(RmtpDataFrame pDataFrame, object pParameter)
        {
            var index = 0;

            IType  = pDataFrame.Data[index];
            index += 1;

            FscanSegment = BitConverter.ToInt16(pDataFrame.Data, index);
            index       += sizeof(short);

            StartFrequency = BitConverter.ToInt64(pDataFrame.Data, index);
            index         += sizeof(Int64);

            EndFrequency = BitConverter.ToInt64(pDataFrame.Data, index);
            index       += sizeof(Int64);

            Step   = BitConverter.ToInt64(pDataFrame.Data, index);
            index += sizeof(Int64);

            Points = BitConverter.ToInt32(pDataFrame.Data, index);
            index += sizeof(int);

            Antennafactors = BitConverter.ToInt32(pDataFrame.Data, index);
            index         += sizeof(int);

            FscanTypeCount = BitConverter.ToInt16(pDataFrame.Data, index);
            index         += sizeof(short);

            for (var i = 0; ; i++)
            {
                var freq = (StartFrequency + i * Step) / 1000; // 转成kHz
                if (freq > (EndFrequency / 1000))
                {
                    break;
                }
                if (!Freqs.Contains(freq))
                {
                    Freqs.Add(freq);
                }
            }

            for (var i = 0; i < FscanTypeCount; i++)
            {
                var name = Encoding.UTF8.GetString(pDataFrame.Data, index, 16).TrimEnd('$').TrimEnd('\0');
                index += 16;

                var value = BitConverter.ToSingle(pDataFrame.Data, index);
                index += sizeof(float);

                var unit = Encoding.UTF8.GetString(pDataFrame.Data, index, 10).TrimEnd('$').TrimEnd('\0');
                index += 10;

                ScanTypes.Add(new Tuple <string, long, string, int>(name, (long)value, unit, i));
            }
        }
コード例 #2
0
        protected override void InternalConverter(RmtpDataFrame pDataFrame, object pParameter)
        {
            var index = 0;

            IType  = pDataFrame.Data[index];
            index += 1;

            Antennafactors = BitConverter.ToInt32(pDataFrame.Data, index);
            index         += sizeof(int);

            MscanTypeCount = BitConverter.ToInt16(pDataFrame.Data, index);
            index         += sizeof(short);

            MscanPoint = BitConverter.ToInt16(pDataFrame.Data, index);
            index     += sizeof(short);

            Freqs.Clear();

            for (var i = 0; i < MscanPoint; i++)
            {
                Freqs.Add(BitConverter.ToInt64(pDataFrame.Data, index) / 1000000d); // 转成 MHz
                index += sizeof(Int64);
            }

            for (var i = 0; i < MscanTypeCount; i++)
            {
                var name = Encoding.UTF8.GetString(pDataFrame.Data, index, 16).TrimEnd('$').TrimEnd('\0');
                index += 16;

                var value = BitConverter.ToSingle(pDataFrame.Data, index);
                index += 4;

                var unit = Encoding.UTF8.GetString(pDataFrame.Data, index, 10).TrimEnd('$').TrimEnd('\0');
                index += 10;

                ScanTypes.Add(new Tuple <string, long, string, int>(name, (long)value, unit, i));
            }
        }
コード例 #3
0
 public override bool IngestValue(string sVal)
 {
     if (null == sVal)
     {
         Nulls++;
         sVal = "{NULL}";
     }
     else if ("" == sVal)
     {
         Empties++;
     }
     else if (string.IsNullOrWhiteSpace(sVal))
     {
         Blanks++;
     }
     if (!Freqs.ContainsKey(sVal))
     {
         Freqs.Add(sVal, 0);
     }
     Freqs[sVal]++;
     Count++;
     return(true);
 }