/// <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(); } } }
/// <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); }