public static double PowerParse(string folder) { string input = folder + @"\power.pt4"; FileStream pt4Stream = File.Open( input, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ); //Console.WriteLine("File source " + args[1]); BinaryReader pt4Reader = new BinaryReader(pt4Stream); // reader the file header PT4.Pt4Header header = new PT4.Pt4Header(); PT4.ReadHeader(pt4Reader, ref header); // read the Status Packet PT4.StatusPacket statusPacket = new PT4.StatusPacket(); PT4.ReadStatusPacket(pt4Reader, ref statusPacket); // determine the number of samples in the file long sampleCount = PT4.SampleCount(pt4Reader, header.captureDataMask); // pre-position input file to the beginning of the sample // data (saves a lot of repositioning in the GetSample // routine) pt4Reader.BaseStream.Position = PT4.sampleOffset; // process the samples sequentially, beginning to end PT4.Sample sample = new PT4.Sample(); double sum = 0; double powAvg = 0; double count = 0; for (long sampleIndex = 0; sampleIndex < sampleCount; sampleIndex++) { if (sampleIndex < 50000) continue; PT4.GetSample(sampleIndex, header.captureDataMask, statusPacket, pt4Reader, ref sample); sum += (sample.mainCurrent);//sample.mainVoltage); count++; } powAvg = sum / count; pt4Reader.Close(); return powAvg; }
public static double[] powerParseArr(string pt4file, int start) { string input = pt4file; FileStream pt4Stream = File.Open( input, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ); //Console.WriteLine("File source " + args[1]); BinaryReader pt4Reader = new BinaryReader(pt4Stream); // reader the file header PT4.Pt4Header header = new PT4.Pt4Header(); PT4.ReadHeader(pt4Reader, ref header); // read the Status Packet PT4.StatusPacket statusPacket = new PT4.StatusPacket(); PT4.ReadStatusPacket(pt4Reader, ref statusPacket); // determine the number of samples in the file long sampleCount = PT4.SampleCount(pt4Reader, header.captureDataMask); // pre-position input file to the beginning of the sample // data (saves a lot of repositioning in the GetSample // routine) pt4Reader.BaseStream.Position = PT4.sampleOffset; // process the samples sequentially, beginning to end PT4.Sample sample = new PT4.Sample(); List<double> ret = new List<double>(); int begin = start * 5000; for (long sampleIndex = begin; sampleIndex < sampleCount; sampleIndex++) { PT4.GetSample(sampleIndex, header.captureDataMask, statusPacket, pt4Reader, ref sample); powerSum += (sample.mainCurrent * sample.mainVoltage); ++powerCnt; if (powerCnt == 5000) { powerAvg = powerSum / powerCnt; //results[((sampleIndex + 1) / samplingRate) - 1] = powerAvg; ret.Add(powerAvg); powerSum = 0; powerCnt = 0; } } return ret.ToArray(); }
public static double[] powerParseArr(int powerIndex, string folder, int beginIndex, int avgDuration) { string input = folder + @"\power" + powerIndex + ".pt4"; FileStream pt4Stream = File.Open( input, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ); //Console.WriteLine("File source " + args[1]); BinaryReader pt4Reader = new BinaryReader(pt4Stream); // reader the file header PT4.Pt4Header header = new PT4.Pt4Header(); PT4.ReadHeader(pt4Reader, ref header); // read the Status Packet PT4.StatusPacket statusPacket = new PT4.StatusPacket(); PT4.ReadStatusPacket(pt4Reader, ref statusPacket); // determine the number of samples in the file long sampleCount = PT4.SampleCount(pt4Reader, header.captureDataMask); // pre-position input file to the beginning of the sample // data (saves a lot of repositioning in the GetSample // routine) pt4Reader.BaseStream.Position = PT4.sampleOffset; // process the samples sequentially, beginning to end PT4.Sample sample = new PT4.Sample(); powerSum = 0; powerCnt = 0; powerAvg = 0; double[] results = new double[sampleCount / avgDuration]; for (long sampleIndex = beginIndex; sampleIndex < sampleCount; sampleIndex++) { PT4.GetSample(sampleIndex, header.captureDataMask, statusPacket, pt4Reader, ref sample); powerSum += sample.mainCurrent * sample.mainVoltage; ++powerCnt; if (powerCnt == avgDuration) { powerAvg = powerSum / powerCnt; results[((sampleIndex + 1) / avgDuration) - 1] = powerAvg; powerSum = 0; powerCnt = 0; } } return results; }
public static double powerParse(string file, int beginIndex, int avgDuration) { string input = file; FileStream pt4Stream = File.Open( input, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ); //Console.WriteLine("File source " + args[1]); BinaryReader pt4Reader = new BinaryReader(pt4Stream); // reader the file header PT4.Pt4Header header = new PT4.Pt4Header(); PT4.ReadHeader(pt4Reader, ref header); // read the Status Packet PT4.StatusPacket statusPacket = new PT4.StatusPacket(); PT4.ReadStatusPacket(pt4Reader, ref statusPacket); // determine the number of samples in the file long sampleCount = PT4.SampleCount(pt4Reader, header.captureDataMask); // pre-position input file to the beginning of the sample // data (saves a lot of repositioning in the GetSample // routine) pt4Reader.BaseStream.Position = PT4.sampleOffset; // process the samples sequentially, beginning to end PT4.Sample sample = new PT4.Sample(); int startTime = beginIndex * avgDuration; for (long sampleIndex = startTime; sampleIndex < sampleCount; sampleIndex++) { PT4.GetSample(sampleIndex, header.captureDataMask, statusPacket, pt4Reader, ref sample); powerSum += (sample.mainCurrent * sample.mainVoltage); powerCnt++; } powerAvg = powerSum / powerCnt; pt4Reader.Close(); return powerAvg; }
public static ArrayList PowerParse(string folder) { string input = folder + @"\power.pt4"; ArrayList rets = new ArrayList(); FileStream pt4Stream = File.Open( input, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ); //Console.WriteLine("File source " + args[1]); BinaryReader pt4Reader = new BinaryReader(pt4Stream); // reader the file header PT4.Pt4Header header = new PT4.Pt4Header(); PT4.ReadHeader(pt4Reader, ref header); // read the Status Packet PT4.StatusPacket statusPacket = new PT4.StatusPacket(); PT4.ReadStatusPacket(pt4Reader, ref statusPacket); // determine the number of samples in the file long sampleCount = PT4.SampleCount(pt4Reader, header.captureDataMask); // pre-position input file to the beginning of the sample // data (saves a lot of repositioning in the GetSample // routine) pt4Reader.BaseStream.Position = PT4.sampleOffset; // process the samples sequentially, beginning to end PT4.Sample sample = new PT4.Sample(); //TextWriter tw = new StreamWriter(folder + @"\power.csv"); //Dictionary<double, double> powerTable = new Dictionary<double, double>(); double sum = 0; double powAvg = 0; for (long sampleIndex = 0; sampleIndex < sampleCount; sampleIndex++) { PT4.GetSample(sampleIndex, header.captureDataMask, statusPacket, pt4Reader, ref sample); //powerTable[sample.timeStamp] = sample.mainCurrent; sum += (sample.mainCurrent * Config.VOLT); int sampleRate = 5000; if (sampleIndex % sampleRate == 0) // 5000 HZ : calculate every 1 second 50 for 100hz { powAvg = sum / sampleRate; rets.Add(Math.Round(powAvg, 2)); powAvg = 0; sum = 0; } } // tw.Close(); pt4Reader.Close(); Console.WriteLine("Finish: Power"); return rets; }