使用C#外部执行后使gnuplot绘图窗口保持打开状态

时间:2018-06-19 22:05:38

标签: c# plot process gnuplot continuous

我要实现的是一个绘图窗口,该窗口不断更新(随着我的数据文件不断变化),一直保持打开状态,直到我手动关闭

我的gnuplot脚本结尾为:

...
pause 0.5 
reread

如果我从命令行使用此脚本调用gnuplot,则它会按预期运行

但是,如果我通过C#调用gnuplot ,并将相同的脚本作为参数传递,则绘图窗口打开0.5 s,紧接着关闭。 我使用以下代码来实现这一点:

Process plotProcess = new Process();
plotProcess.StartInfo.FileName = @"""C:\Program Files\gnuplot\bin\gnuplot.exe""";
plotProcess.StartInfo.UseShellExecute = false;
plotProcess.StartInfo.RedirectStandardInput = true;
plotProcess.StartInfo.CreateNoWindow = true;
plotProcess.Start();
StreamWriter sw = plotProcess.StandardInput;
String strInputText = @"GNUPLOTSCRIPT;pause 0.5;reread";
sw.WriteLine(strInputText);                      
sw.Flush();                 
sw.Close();

鉴于gnuplot脚本可从命令行运行,因此我想我没有为 plotProcess 调用正确的扩展方法。为了解决这个问题,我尝试了以下操作(不同顺序)

...
plotProcess.WaitForExit();
//sw.Flush();                 
//sw.Close();

这无济于事,或者完全冻结了我的进程,直到我不得不从任务管理器中将其杀死为止。
我很高兴有任何建议。

1 个答案:

答案 0 :(得分:0)

您是否尝试将gnuplot命令添加“ -persist”或更短的“ -p”标志? 即

plotProcess.StartInfo.FileName = @"""C:\Program Files\gnuplot\bin\gnuplot.exe -persist""";

这应该告诉gnuplot即使脚本完成后也要保持绘图窗口打开。另外,您可以将gnuplot脚本中的输出设置为持久性。参见例如here获取更多选项。

相关问题