예제 #1
0
        /// <summary>
        /// 将频谱扫描参数header,扫描项列表entries保存到文件fileName
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="entries"></param>
        /// <param name="header"></param>
        internal static void Save_Csv_Spectrum(string fileName, PointF[] entries, CsvReport_Spctrum_Header header)
        {
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fileName, false, Encoding.ASCII);

                string s1;
                s1 = "params " +
                     header.Start.ToString("0.#") + " " +
                     header.Stop.ToString("0.#") + " " +
                     header.RBW.ToString() + " " +
                     header.ATT.ToString();

                sw.WriteLine(header.Mac_Desc);
                sw.WriteLine(header.Date_Time);
                sw.WriteLine(s1);

                sw.WriteLine("Frequency(MHz), Field_Value(dBm)");

                for (int i = 0; i < entries.Length; i++)
                {
                    sw.WriteLine(entries[i].X.ToString("0.0000000") + ", " + entries[i].Y.ToString("0.0000000"));
                }

                sw.Flush();
                sw.Close();
                sw.Dispose();
            } catch {
                if (sw != null)
                {
                    sw.Close();
                    sw.Dispose();
                }
            }
        }
예제 #2
0
        /// <summary>
        /// 从频谱分析的CSV文件fileName读取信息,并将头部信息填充到header,将扫描项填充到列表entries
        /// 若成功则返回TRUE,
        /// 若出现文件被破坏(格式),或者读文件异常,转换异常等,则返回FALSE
        /// </summary>
        /// <param name="entries"></param>
        /// <param name="header"></param>
        /// <returns></returns>
        internal static bool Read_Csv_Spectrum(string fileName, out List <PointF> entries, out CsvReport_Spctrum_Header header)
        {
            int    ln;
            string sLine;

            char[]   chars;
            string[] sArray;
            PointF   spc_entry;

            StreamReader sr = null;

            //文件损坏指示
            bool bCrashed = false;

            try
            {
                //构造CSV文件的头部对象
                header = new CsvReport_Spctrum_Header();

                //建立流
                sr = new StreamReader(fileName, Encoding.ASCII);

                //略过第一行
                sr.ReadLine();

                //读取第二行的日期与时间值
                header.Date_Time = sr.ReadLine();

                //读取第三行,测试参数
                //从左到右,以params开头,每个参数项以空格隔开
                //依次为开始频率、结束频率、RBW、ATT
                chars    = new char[1];
                chars[0] = ' ';
                sArray   = sr.ReadLine().Split(chars);

                header.Start = float.Parse(sArray[1]);
                header.Stop  = float.Parse(sArray[2]);
                header.RBW   = int.Parse(sArray[3]);
                header.ATT   = int.Parse(sArray[4]);

                //略过第四
                sr.ReadLine();

                //一行文本包含的扫描项数量
                ln = 2;

                chars[0] = ',';
                entries  = new List <PointF>();

                //从第五行开始,读取扫描项数据
                sLine = sr.ReadLine();
                while (!String.IsNullOrEmpty(sLine))
                {
                    sArray = sLine.Split(chars);

                    if (sArray.Length != ln)
                    {
                        bCrashed = true;
                        break;
                    }

                    spc_entry   = new PointF();
                    spc_entry.X = float.Parse(sArray[0]);
                    spc_entry.Y = float.Parse(sArray[1]);

                    entries.Add(spc_entry);

                    //读取下一行,直到文件结束
                    sLine = sr.ReadLine();
                }

                sr.Close();
                sr.Dispose();
            }
            catch
            {
                entries  = null;
                header   = null;
                bCrashed = true;
                if (sr != null)
                {
                    sr.Close();
                    sr.Dispose();
                }
            }

            //返回值
            return(!bCrashed);
        }