public list<tuple<double,double>>runtest())
{
_ dpg=新根(这个“英语”,错误);
_ dpg.init();
var filename=“dpg10export_”+datetime.now.toString(“yyyymmdd_hhmm”)+“.csv”;
list<tuple<double,double>>results=新列表<tuple<double,double>();
var测量=新测量();
var resultcode=runmeasurement(60,1000,2200,ref measurement,空/*TODO:ref progressbar?*);
使用(var filestream=new streamwriter(文件名))
{
var count=measurement.i_inc_values.count;
对于(var i=0;i<count;i++)
{
var item=measurement.i_inc_值[i+1];
var current=(float)convert.todouble(item);
项目=测量值。li_inc_值[i+1];
无功电感=(浮动)转换为双(项);
var line=电流.toString()+“;”+电感.toString()+“;”;
filestream.writeline(行);
currentlist.add(当前);
电感表。加(电感);
结果:添加(新的tuple<double,double>(电流,电感));
如果(i==0(i+1)%32==0)
{
console.writeline((i+1)+“:”+line);
}
}
}
返回结果;
}
此代码生成一个csv文件,其外观类似于此:。
0,22_0,44
0,32 0,54
0,44_0,65
这些值产生一条曲线,看起来像这样:
当你点击“获取波形”按钮时,上面的曲线就会生成。但是,我想显示所有已生成的曲线,以及一条趋势线。我怎样才能做到这一点?
void binddata(list<tuple<double,double>>results)
{
chart.series.clear();
var series1=new system.windows.forms.datavisualization.charting.series
{
name=“curr/induc”,
颜色=system.drawing.color.green,
isVisibleInLegend=真,
isxValueIndexed=真,
chartType=serieChartType.line
};
foreach(结果中的var i)
{
序列1.points.addxy(i.item2,i.item1);
}
chart.invalidate();
chart.series.add(序列1);
}
private void getwaveformbtn_click(对象发送器,事件参数e)
{
dpg10客户端.dpg10设置设置=新建dpg10客户端.dpg10设置();
DPG10仪器HEJ=新的DPG10仪器(设置);
list<tuple<double,double>>results=hej.runtest();
双电流、电感;
foreach(结果中的var i)
{
电流=I.item1;
电感=I.项2;
textbox waveforminput.text+=电流.toString()+电感.toString();
}
binddata(结果);
}
tl;dr
分析来自csv的信息以生成曲线,并基于这些文件创建趋势线。
标记为重复:该答案是关于直线的,这些值可以在曲线中波动。
运行测试功能:
public List<Tuple<double,double>> runTest()
{
_dpg = new Root(this, "english", false);
_dpg.Init();
var filename = "Dpg10Export_" + DateTime.Now.ToString("yyyyMMdd_HHmm") + ".csv";
List<Tuple<double, double>> results = new List<Tuple<double, double>>();
var measurement = new Measurement();
var resultCode = RunMeasurement(60, 1000, 2200, ref measurement, null /* TODO: ref ProgressBar? */);
using (var fileStream = new StreamWriter(filename))
{
var count = measurement.I_inc_Values.Count;
for (var i = 0; i < count; i++)
{
var item = measurement.I_inc_Values[i + 1];
var current = (float)Convert.ToDouble(item);
item = measurement.LI_inc_Values[i + 1];
var inductance = (float)Convert.ToDouble(item);
var line = current.ToString() + ";" + inductance.ToString() + ";";
fileStream.WriteLine(line);
currentList.Add(current);
inductanceList.Add(inductance);
results.Add(new Tuple<double, double>(current,inductance));
if (i == 0 || (i + 1) % 32 == 0)
{
Console.WriteLine((i + 1) + ": " + line);
}
}
}
return results;
}
此代码生成类似以下内容的csv文件:
0,22 | 0,44
0,32 | 0,54
0,44 | 0,65
这些值产生一条曲线,看起来像这样:
当你点击“获取波形”按钮时,上面的曲线就会生成。但是,我希望显示所有已生成的曲线,以及趋势线也。我怎样才能做到这一点?
void BindData(List<Tuple<double,double>> results)
{
chart.Series.Clear();
var series1 = new System.Windows.Forms.DataVisualization.Charting.Series
{
Name = "curr/induc",
Color = System.Drawing.Color.Green,
IsVisibleInLegend = true,
IsXValueIndexed = true,
ChartType = SeriesChartType.Line
};
foreach (var i in results)
{
series1.Points.AddXY(i.Item2,i.Item1);
}
chart.Invalidate();
chart.Series.Add(series1);
}
private void getWaveformBtn_Click(object sender, EventArgs e)
{
Dpg10Client.Dpg10Settings settings = new Dpg10Client.Dpg10Settings();
Dpg10Instrument hej = new Dpg10Instrument(settings);
List<Tuple<double,double>> results = hej.runTest();
double current, inductance;
foreach(var i in results)
{
current = i.Item1;
inductance = i.Item2;
textBoxWaveformInput.Text += current.ToString() + inductance.ToString();
}
BindData(results);
}
DR
从中分析信息CSV
文件以生成曲线,并基于这些文件创建趋势线。
标记为重复:答案是关于一条直线,这些值可以在曲线上波动。