示例#1
0
        /// <summary>
        /// 创建cit文件并写入头部和通道定义信息
        /// </summary>
        /// <param name="citPath">cit文件路径</param>
        /// <param name="headInfo">文件头部信息</param>
        /// <param name="channelInfo">通道定义信息</param>
        public void WriteCitHeadAndChannelInfo(string citPath, DataHeadInfo headInfo, List <DataChannelInfo> channelInfo)
        {
            CitFileHelper citHelper = new CitFileHelper();

            citHelper.WriteDataInfoHead(citPath, headInfo);
            citHelper.WriteDataChannelInfoHead(citPath, channelInfo);
            citHelper.WriteDataExtraInfo(citPath, "");
        }
示例#2
0
        /// <summary>
        /// 导出通道数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Export_Click(object sender, EventArgs e)
        {
            try
            {
                this.btn_Export.Enabled = false;

                GetChannelNames();
                if (channelNameList.Count == 0)
                {
                    MessageBox.Show("请选择至少一个通道");
                    return;
                }

                dataList.Clear();

                for (int i = 0; i < channelNameList.Count; i++)
                {
                    CitFileHelper citHelper = new CitFileHelper();

                    if (channelNameList[i].sNameEn == "sample")
                    {
                        double[] d = citHelper.GetSingleChannelDataNoConvert(filePathStr, 2);
                        dataList.Add(d);
                    }
                    else
                    {
                        double[] d = citHelper.GetSingleChannelData(filePathStr, citHelper.GetChannelId(channelNameList[i].sNameEn, filePathStr));
                        dataList.Add(d);
                    }
                }

                //使用中文名称
                if (ckb_Chinese.Checked)
                {
                    ExportDataTxt(true);
                }
                else
                {
                    ExportDataTxt(false);
                }

                MessageBox.Show("数据导出完成");

                this.btn_Export.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
示例#3
0
        /// <summary>
        /// 获取BNY数据并向cit文件中写入数据
        /// </summary>
        /// <param name="channelList"></param>
        private void GetBnyDataAndWriteCit(string citPath, string bnyPath, List <ChannelNew> channelList)
        {
            CitFileHelper citHelper = new CitFileHelper();

            int[] bnyChannelArr = channelList.Where(s => s.BNYChannelId >= 0).Select(s => s.BNYChannelId).ToArray();
            int   sampleNum     = 50000;
            long  startPosition = 0;
            long  endPosition   = 0;

            long bnyFileLength = common.GetBNYLastPosition(bnyPath);

            int    pageCount     = 0;
            double realPageCount = bnyFileLength * 1.0 / (sampleNum * BNYFile.GetChannelSize());

            if (realPageCount % ((int)realPageCount) > 0)
            {
                pageCount = ((int)realPageCount) + 1;
            }
            else
            {
                pageCount = (int)realPageCount;
            }

            List <float[]> bnyList    = new List <float[]>();
            List <float[]> resultList = new List <float[]>();

            float[] fvalue = new float[sampleNum];
            for (int i = 0; i < pageCount; i++)
            {
                bnyList       = common.GetBNYData(bnyPath, sampleNum, startPosition, ref endPosition);
                startPosition = endPosition;
                resultList.Clear();
                for (int j = 0; j < channelList.Count; j++)
                {
                    if (channelList[j].BNYChannelId >= 0)
                    {
                        if (bnyList[channelList[j].BNYChannelId].Length < sampleNum)
                        {
                            fvalue = new float[bnyList[channelList[j].BNYChannelId].Length];
                            if (channelList[j].BNYChannelId == 2)
                            {
                                if (channelList[j].dataChannelInfo.sNameEn == "KM")
                                {
                                    fvalue = bnyList[channelList[j].BNYChannelId].Select(p => ((float)(int)p)).ToArray();
                                }
                                else if (channelList[j].dataChannelInfo.sNameEn == "M")
                                {
                                    fvalue = bnyList[channelList[j].BNYChannelId].Select(p => (p - (int)p) * 1000).ToArray();
                                }
                                else
                                {
                                    fvalue = bnyList[channelList[j].BNYChannelId];
                                }
                            }
                            else
                            {
                                fvalue = bnyList[channelList[j].BNYChannelId];
                            }
                        }
                        else
                        {
                            if (channelList[j].BNYChannelId == 2)
                            {
                                if (channelList[j].dataChannelInfo.sNameEn == "KM")
                                {
                                    fvalue = bnyList[channelList[j].BNYChannelId].Select(p => ((float)(int)p)).ToArray();
                                }
                                else if (channelList[j].dataChannelInfo.sNameEn == "M")
                                {
                                    fvalue = bnyList[channelList[j].BNYChannelId].Select(p => (p - (int)p) * 1000).ToArray();
                                }
                                else
                                {
                                    fvalue = bnyList[channelList[j].BNYChannelId];
                                }
                            }
                            else
                            {
                                fvalue = bnyList[channelList[j].BNYChannelId];
                            }
                        }
                    }
                    else
                    {
                        fvalue = new float[bnyList[0].Length];
                    }
                    resultList.Add(fvalue);
                }
                citHelper.WriteChannelDataFloat(citPath, resultList);
                if (tokenSource.IsCancellationRequested)
                {
                    throw new OperationCanceledException();
                }
            }
        }
示例#4
0
        private void WriteBnyData(string fileName, string citPath, List <ChannelNew> channelNewList)
        {
            CitFileHelper citHelper = new CitFileHelper();

            using (FileStream fs = new FileStream(citPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
            {
                using (BinaryWriter bw = new BinaryWriter(fs, Encoding.Default))
                {
                    DataHeadInfo           dhi         = citHelper.GetDataInfoHead(citPath);
                    long                   pos         = bw.BaseStream.Length;
                    List <DataChannelInfo> channelList = citHelper.GetDataChannelInfoHead(citPath);
                    int    iChannelNumberSize          = dhi.iChannelNumber * 2;
                    byte[] dataArray = new byte[iChannelNumberSize];

                    List <Byte> dataList   = new List <Byte>();
                    short       tmpRmsData = 0;

                    Byte[] tmpBytes = new Byte[2];
                    while (true)
                    {
                        if (channelDataList.ContainsKey(fileName) && channelDataList[fileName].Count > 0)
                        {
                            List <float[]> channelData = channelDataList[fileName].Dequeue();
                            DateTime       dt2         = DateTime.Now;
                            if (channelData == null || isCancel)
                            {
                                break;
                            }
                            long iArrayLen = channelData[0].Length;
                            for (int k = 0; k < iArrayLen; k++)
                            {
                                if (citHelper.IsEncrypt(dhi))
                                {
                                    for (int iTmp = 0; iTmp < channelNewList.Count; iTmp++)
                                    {
                                        if (channelNewList[iTmp].BNYChannelId > 6)
                                        {
                                            tmpRmsData = (short)((channelData[iTmp][k] / 10 - channelList[iTmp].fOffset) * channelList[iTmp].fScale);
                                        }
                                        else
                                        {
                                            tmpRmsData = (short)((channelData[iTmp][k] - channelList[iTmp].fOffset) * channelList[iTmp].fScale);
                                        }
                                        tmpBytes = CitFileHelper.ByteXORByte(BitConverter.GetBytes(tmpRmsData));
                                        dataList.AddRange(tmpBytes);
                                    }
                                }
                                else
                                {
                                    for (int iTmp = 0; iTmp < channelNewList.Count; iTmp++)
                                    {
                                        try
                                        {
                                            if (channelNewList[iTmp].BNYChannelId > 6)
                                            {
                                                tmpRmsData = (short)((channelData[iTmp][k] / 10 - channelList[iTmp].fOffset) * channelList[iTmp].fScale);
                                            }
                                            else
                                            {
                                                tmpRmsData = (short)((channelData[iTmp][k] - channelList[iTmp].fOffset) * channelList[iTmp].fScale);
                                            }
                                            dataList.AddRange(BitConverter.GetBytes(tmpRmsData));
                                        }
                                        catch (Exception ex)
                                        {
                                            throw ex;
                                        }
                                    }
                                }
                                ///bw.BaseStream.Position = 100;
                                bw.Write(dataList.ToArray());
                                bw.Flush();

                                dataList.Clear();
                            }
                        }
                    }
                    //bw.Close();
                    //DateTime dt3 = DateTime.Now;
                    //Console.WriteLine("two :" + (dt3 - dt2).TotalSeconds.ToString());
                }

                //fs.Close();
            }
        }
示例#5
0
        private void GetTxtDataAndWriteCit(string txtPath, string citPath, List <ChannelNew> channelList)
        {
            CitFileHelper citHelper = new CitFileHelper();

            int[] bnyChannelArr = channelList.Where(s => s.BNYChannelId >= 0).Select(s => s.BNYChannelId).ToArray();
            int   sampleNum     = 50000;
            long  startPosition = 1;
            long  endPosition   = sampleNum;

            long   lineCount     = common.GetTextLineCount(txtTxtPath.Text);
            int    pageCount     = 0;
            double realPageCount = lineCount * 1.0 / (sampleNum);

            pageCount = (int)realPageCount;
            List <float[]> txtDataList = new List <float[]>();
            List <float[]> resultList  = new List <float[]>();

            float[] fvalue = new float[sampleNum];
            for (int i = 0; i < pageCount; i++)
            {
                txtDataList = common.GetTxtData(txtPath, startPosition, endPosition);
                long temp = endPosition;
                endPosition   = endPosition + sampleNum;
                startPosition = temp + 1;
                resultList.Clear();
                for (int j = 0; j < channelList.Count; j++)
                {
                    if (channelList[j].BNYChannelId >= 0)
                    {
                        if (channelList[j].BNYChannelId == 0)
                        {
                            if (channelList[j].dataChannelInfo.sNameEn == "KM")
                            {
                                fvalue = txtDataList[channelList[j].BNYChannelId].Select(p => ((float)(int)p)).ToArray();
                            }
                            else if (channelList[j].dataChannelInfo.sNameEn == "M")
                            {
                                var kmValues = txtDataList[channelList[j].BNYChannelId];

                                float[] fvalueNew = new float[sampleNum];

                                for (int k = 0; k < kmValues.Length; k++)
                                {
                                    if (k == 20861)
                                    {
                                    }

                                    string[] strValues = kmValues[k].ToString("F3").Split('.');
                                    if (strValues.Length == 1)
                                    {
                                        fvalueNew[k] = 0;
                                    }
                                    else
                                    {
                                        fvalueNew[k] = Convert.ToSingle(strValues[1]);
                                    }
                                }
                                fvalue = fvalueNew;
                            }
                            else
                            {
                                float aa1 = txtDataList[channelList[j].BNYChannelId][20860];
                                float aa2 = txtDataList[channelList[j].BNYChannelId][20861];
                                float aa3 = txtDataList[channelList[j].BNYChannelId][20862];

                                fvalue = txtDataList[channelList[j].BNYChannelId];
                            }
                        }
                        else
                        {
                            float aa1 = txtDataList[channelList[j].BNYChannelId][20860];
                            float aa2 = txtDataList[channelList[j].BNYChannelId][20861];
                            float aa3 = txtDataList[channelList[j].BNYChannelId][20862];

                            fvalue = txtDataList[channelList[j].BNYChannelId];
                        }
                    }
                    else
                    {
                        fvalue = new float[txtDataList[0].Length];
                    }
                    resultList.Add(fvalue);
                }
                citHelper.WriteChannelDataFloat(citPath, resultList);

                //if (tokenSource.IsCancellationRequested)
                //{
                //    throw new OperationCanceledException();
                //}
            }
            if (realPageCount % ((int)realPageCount) > 0)
            {
                startPosition = pageCount * sampleNum + 1;
                endPosition   = lineCount;
                txtDataList   = common.GetTxtData(txtPath, startPosition, endPosition);
                resultList.Clear();
                for (int j = 0; j < channelList.Count; j++)
                {
                    if (channelList[j].BNYChannelId >= 0)
                    {
                        if (channelList[j].BNYChannelId == 0)
                        {
                            if (channelList[j].dataChannelInfo.sNameEn == "KM")
                            {
                                fvalue = txtDataList[channelList[j].BNYChannelId].Select(p => ((float)(int)p)).ToArray();
                            }
                            else if (channelList[j].dataChannelInfo.sNameEn == "M")
                            {
                                //fvalue = txtDataList[channelList[j].BNYChannelId].Select(p => (p - (int)p) * 1000).ToArray();
                                var kmValues = txtDataList[channelList[j].BNYChannelId];

                                float[] fvalueNew = new float[sampleNum];

                                for (int k = 0; k < kmValues.Length; k++)
                                {
                                    string[] strValues = kmValues[k].ToString("F3").Split('.');
                                    if (strValues.Length == 1)
                                    {
                                        fvalueNew[k] = 0;
                                    }
                                    else
                                    {
                                        fvalueNew[k] = Convert.ToSingle(strValues[1]);
                                    }
                                }
                                fvalue = fvalueNew;
                            }
                            else
                            {
                                fvalue = txtDataList[channelList[j].BNYChannelId];
                            }
                        }
                        else
                        {
                            fvalue = txtDataList[channelList[j].BNYChannelId];
                        }
                    }
                    else
                    {
                        fvalue = new float[txtDataList[0].Length];
                    }
                    resultList.Add(fvalue);
                }
                citHelper.WriteChannelDataFloat(citPath, resultList);
            }
        }
示例#6
0
        /// <summary>
        /// 获取BNY数据并向cit文件中写入数据
        /// </summary>
        /// <param name="channelList"></param>
        private void GetBnyDataAndWriteCit(List <ChannelNew> channelList)
        {
            int[] bnyChannelArr = channelList.Where(s => s.BNYChannelId >= 0).Select(s => s.BNYChannelId).ToArray();

            int  sampleNum     = 1000;
            long startPosition = 0;
            long endPosition   = 0;

            long bnyFileLength = common.GetBNYLastPosition(bnyFilePath);

            int pageCount = Convert.ToInt32(bnyFileLength / (sampleNum * BNYFile.GetChannelSize()));

            List <float[]> bnyList = new List <float[]>();

            try
            {
                using (FileStream fs = new FileStream(createCitFilePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
                {
                    using (BinaryWriter bw = new BinaryWriter(fs, Encoding.Default))
                    {
                        DataHeadInfo           dhi             = citHelper.GetDataInfoHead(createCitFilePath);
                        List <DataChannelInfo> channelInfoList = citHelper.GetDataChannelInfoHead(createCitFilePath);
                        int    iChannelNumberSize = dhi.iChannelNumber * 2;
                        byte[] dataArray          = new byte[iChannelNumberSize];

                        List <Byte> dataList   = new List <Byte>();
                        short       tmpRmsData = 0;;
                        Byte[]      tmpBytes   = new Byte[2];
                        for (int i = 0; i < pageCount; i++)
                        {
                            bnyList       = common.GetBNYData(bnyFilePath, sampleNum, startPosition, ref endPosition);
                            startPosition = endPosition;

                            List <float[]> resultList = new List <float[]>();
                            //Action<float> action = new Action<float>({ });
                            for (int j = 0; j < channelList.Count; j++)
                            {
                                float[] fvalue = new float[sampleNum];

                                if (channelList[j].BNYChannelId >= 0)
                                {
                                    fvalue = bnyList[channelList[j].BNYChannelId];
                                }
                                resultList.Add(fvalue);
                            }

                            long iArrayLen = resultList[0].Length;
                            for (int k = 0; k < iArrayLen; k++)
                            {
                                if (citHelper.IsEncrypt(dhi))
                                {
                                    for (int iTmp = 0; iTmp < channelList.Count; iTmp++)
                                    {
                                        if (channelList[iTmp].BNYChannelId > 6)
                                        {
                                            tmpRmsData = (short)((resultList[iTmp][k] / 10 - channelInfoList[iTmp].fOffset) * channelInfoList[iTmp].fScale);
                                        }
                                        else
                                        {
                                            tmpRmsData = (short)((resultList[iTmp][k] - channelInfoList[iTmp].fOffset) * channelInfoList[iTmp].fScale);
                                        }
                                        tmpBytes = CitFileHelper.ByteXORByte(BitConverter.GetBytes(tmpRmsData));
                                        dataList.AddRange(tmpBytes);
                                    }
                                }
                                else
                                {
                                    for (int iTmp = 0; iTmp < channelList.Count; iTmp++)
                                    {
                                        try
                                        {
                                            if (channelList[iTmp].BNYChannelId > 6)
                                            {
                                                tmpRmsData = (short)((resultList[iTmp][k] / 10 - channelInfoList[iTmp].fOffset) * channelInfoList[iTmp].fScale);
                                            }
                                            else
                                            {
                                                tmpRmsData = (short)((resultList[iTmp][k] - channelInfoList[iTmp].fOffset) * channelInfoList[iTmp].fScale);
                                            }
                                            dataList.AddRange(BitConverter.GetBytes(tmpRmsData));
                                        }
                                        catch (Exception ex)
                                        {
                                            throw ex;
                                        }
                                    }
                                }
                                ///bw.BaseStream.Position = 100;
                                bw.Write(dataList.ToArray());
                                bw.Flush();

                                dataList.Clear();
                            }
                            if (token.IsCancellationRequested)
                            {
                                token.ThrowIfCancellationRequested();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }