Example #1
0
        public static string ConvertToString(ByteOrd fCSByteOrd)
        {
            switch (fCSByteOrd)
            {
            case ByteOrd.LittleEndian:
                return(LittleEndian);

            case ByteOrd.BigEndian:
                return(BigEndian);

            default:
                return(string.Empty);
            }
        }
Example #2
0
 /// <summary>
 /// 解析数据段
 /// </summary>
 /// <param name="stream">可读取的流</param>
 /// <param name="fileBeginOffset">此数据集相对于文件起点的位置</param>
 /// <param name="dataBegin">数据段开始位置,相对于数据集起点位置</param>
 /// <param name="dataEnd">数据段结束位置,相对于数据集起点位置</param>
 /// <param name="measurements">通道集合</param>
 /// <param name="tot">每个通道的数据量</param>
 /// <param name="dataType">数据集的数据类型,整个数据集的默认数据类型</param>
 /// <param name="byteOrd">字节排序方式</param>
 protected virtual void AnalyseData(Stream stream, long fileBeginOffset, long dataBegin, long dataEnd, IList <Measurement> measurements, uint tot, DataType dataType, ByteOrd byteOrd)
 {
     if (measurements == null)
     {
         throw new Exception("Measurement list object is null");
     }
     if (dataType == DataType.Unknown)
     {
         throw new Exception("FCS datatype is not supported");
     }
     if (stream.Length < (fileBeginOffset + dataEnd))
     {
         throw new Exception("Stream length is not enough");
     }
     stream.Seek(fileBeginOffset + dataBegin, SeekOrigin.Begin);
     for (uint i = 0; i < tot; i++)
     {
         foreach (var item in measurements)
         {
             byte[] bytes = new byte[item.PnBByteLength];
             if (item.PnBByteLength != stream.Read(bytes, 0, item.PnBByteLength))
             {
                 throw new Exception("Read data segment failed,stream length is not enough");
             }
             item.AddOneValue(bytes, byteOrd);
         }
     }
 }