Ejemplo n.º 1
0
        private IList <Data> SelectAndMove(DataBaseName path)
        {
            if (path.DataBaseType == (int)DataBaseType.Shake)
            {
                ArtAccDatum artdata  = null;
                string      errorstr = string.Empty;
                var         list     = new List <Data>();

                string[] files = BinaryFileHelper.GetFileNames(path.Location, "*.usb", TxtDateType.Vibration);
                //string[] files = Directory.GetFiles(path.Location,"*.usb");

                foreach (string file in files)
                {
                    DateTime lasTime;

                    DateTime acqtime = BinaryFileHelper.GetFileRecordTime(file, TxtDateType.Vibration);
                    //if (acqtime > lasTime)
                    {
                        if (BinaryFileHelper.Read(file, out artdata, out errorstr))
                        {
                            var pts = Path.GetDirectoryName(file).Split(Path.DirectorySeparatorChar);
                            int mod = -1;
                            int.TryParse(pts.Last(), out mod);
                            //DateTime acqtime = BinaryFileHelper.GetFileRecordTime(file, TxtDateType.Vibration);
                            for (int i = 0; i < artdata.MilliVolt.Length; i++)
                            {
                                Data data = new Data();
                                data.ChannelId = i + 1;
                                //data.MoudleNo = artdata.FileHeader.DeviceNum.ToString().Trim();
                                data.MoudleNo    = mod.ToString();
                                data.OFlag       = artdata.FileHeader.ADPara.Frequency;
                                data.DataBaseId  = (int)path.ID;
                                data.SafeTypeId  = (int)SensorCategory.Vibration;
                                data.ProjectCode = (short)ProjectInfoDic.GetInstance().GetProjectInfo().ProjectCode;
                                data.DataSet     = new List <double>();

                                foreach (float value in artdata.MilliVolt[i])
                                {
                                    data.DataSet.Add(value);
                                }
                                data.CollectTime = acqtime;
                                list.Add(data);
                            }

                            MoveFile(file);
                        }
                    }
                }
                return(list);
            }

            return(new List <Data>());
        }
Ejemplo n.º 2
0
        public static int AD_LSB_HALF = 32768;  // 当取偏移码时,其原点位置

        public static bool Read(string filename, out ArtAccDatum data, out string err)
        {
            bool flag = true;

            data = new ArtAccDatum();
            err  = "";
            try
            {
                if (!File.Exists(filename))
                {
                    err = "数据文件不存在";
                    return(false);
                }
                using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    var br = new BinaryReader(fs);
                    data.HeadSizeBytes = br.ReadInt32();
                    data.FileHeader    =
                        (FileHeader)
                        Serial2StructConverter.BytesToStruct(br.ReadBytes(data.HeadSizeBytes - 4), typeof(FileHeader));
                    int   nChannelCnt = data.FileHeader.ADPara.LastChannel - data.FileHeader.ADPara.FirstChannel + 1;
                    float PerLsbVolt  =
                        (float)((data.FileHeader.VoltTopRange - data.FileHeader.VoltBottomRange) / (float)AD_LSB_COUNT);
                    long DatumCnt = (fs.Length - data.HeadSizeBytes) / 2 / nChannelCnt; //计算数据项个数
                    data.ChannelCount = nChannelCnt;
                    data.DatumCount   = DatumCnt;
                    data.AllocSpace(); //分配数据空间
                    for (int i = 0; i < DatumCnt; i++)
                    {
                        for (int ch = 0; ch < nChannelCnt; ch++)
                        {
                            data.MilliVolt[ch][i] = (br.ReadUInt16() - AD_LSB_HALF) * PerLsbVolt;
                        }
                    }
                    Console.WriteLine(data.MilliVolt[nChannelCnt - 1][DatumCnt - 1]); //DEBUG最后一条数据
                    fs.Close();
                }
            }
            catch (Exception ex)
            {
                flag = false;
                err  = ex.Message;
            }
            return(flag);
        }
Ejemplo n.º 3
0
        public IList <Data> SelectByTime(DataBaseName path)
        {
            if (path.DataBaseType == (int)DataBaseType.Shake)
            {
                ArtAccDatum artdata  = null;
                string      errorstr = string.Empty;
                var         list     = new List <Data>();
                DateTime    readtime;
                DateTime    extratime   = new DateTime(2013, 1, 1);
                string[]    timeformats =
                {
                    "yyyy/MM/dd HH:mm:ss",     "yyyy/MM/dd HH:mm:ss.fff", "yyyy-MM-dd HH:mm:ss",
                    "yyyy-MM-dd HH:mm:ss.fff", "yyyyMMddHHmmss",          "yyyyMMddHHmmss.fff",
                    "yyyy-MM-dd h:mm:ss"
                };    //TIM_ 2014 05 03 16 17 07
                bool isSuccess = DateTime.TryParseExact(
                    ExtractionConfigDic.GetExtractionConfigDic().GetExtractionConfig((int)path.ID, 0.ToString(CultureInfo.InvariantCulture)).Acqtime,
                    timeformats,
                    CultureInfo.CurrentCulture,
                    DateTimeStyles.None,
                    out readtime);
                if (!isSuccess)
                {
                    readtime = new DateTime(2013, 1, 1);
                }
                string[] files = BinaryFileHelper.GetFileNames(path.Location, "*.usb", readtime, TxtDateType.Vibration);

                foreach (string file in files)
                {
                    if (BinaryFileHelper.Read(file, out artdata, out errorstr))
                    {
                        var acqtime = BinaryFileHelper.GetFileRecordTime(file, TxtDateType.Vibration);
                        if (acqtime > extratime)
                        {
                            extratime = acqtime;
                        }
                        var directoryName = Path.GetDirectoryName(file);
                        if (directoryName != null)
                        {
                            var pts = directoryName.Split(Path.DirectorySeparatorChar);
                            int mod = -1;
                            int.TryParse(pts.Last(), out mod);
                            for (var i = 0; i < artdata.MilliVolt.Length; i++)
                            {
                                var data = new Data
                                {
                                    ChannelId   = i + 1,
                                    MoudleNo    = mod.ToString(CultureInfo.InvariantCulture),
                                    OFlag       = artdata.FileHeader.ADPara.Frequency,
                                    DataBaseId  = (int)path.ID,
                                    SafeTypeId  = (int)SensorCategory.Vibration,
                                    ProjectCode = (short)ProjectInfoDic.GetInstance().GetProjectInfo().ProjectCode,
                                    DataSet     = new List <double>()
                                };

                                foreach (var value in artdata.MilliVolt[i])
                                {
                                    data.DataSet.Add(value);
                                }
                                data.CollectTime = acqtime;
                                list.Add(data);
                            }
                        }
                    }
                }// foreach
                if (extratime > new DateTime(2013, 1, 1))
                {
                    ExtractionConfigDic.GetExtractionConfigDic()
                    .UpdateExtractionConfig(
                        new ExtractionConfig
                    {
                        DataBaseId = (int)path.ID,
                        TableName  = 0.ToString(CultureInfo.InvariantCulture),
                        Acqtime    = extratime.ToString("yyyyMMddHHmmss.fff")
                    });
                }
                return(list);
            }

            return(new List <Data>());
        }