public static string ConvertToString(ByteOrd fCSByteOrd) { switch (fCSByteOrd) { case ByteOrd.LittleEndian: return(LittleEndian); case ByteOrd.BigEndian: return(BigEndian); default: return(string.Empty); } }
/// <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); } } }