3

我有一个 dat 文件insert.dat

内容如下:

1000    0.002322044 0.00291182
5000    0.000103257 0.000458963
10000   2.50E-05    0.000172019
20000   6.18E-06    6.03E-05
40000   2.51E-06    2.65E-05
60000   1.65E-06    1.71E-05
80000   1.21E-06    1.23E-05
100000  1.01E-06    9.97E-06

当我打开gnuplot.exe并键入带有线条的绘图insert.dat时,我得到了正确的输出,但是当我编写如下 C# 代码时:

private  void GNUPlot()
{
    string pgm = @"E:\gnuplot\bin\gnuplot.exe";

    Process extPro = new Process();
    extPro.StartInfo.FileName = pgm;
    extPro.StartInfo.UseShellExecute = false;
    extPro.StartInfo.Standardization = true;
    extPro.Start();

    StreamWriter gnupStWr = extPro.StandardInput;
    gnupStWr.WriteLine("plot \"insert.dat\" with lines ");
    gnupStWr.Flush();
}

我收到以下警告:

warning: Skipping unreadable file "insert.dat"

当我更换

gnupStWr.WriteLine("plot \"insert.dat\" with lines ");

gnupStWr.WriteLine("plot sin(x) ");

我得到了所需的Sin(x)图形输出。

insert.dat位于 的当前目录中gnuplot。我想要insert.dat绘制文件数据。

4

1 回答 1

3

问题似乎是gnuplot找不到请求的文件。进程的工作目录未设置为gnuplot目录,但可能设置为调用gnuplot的应用程序的目录。

编辑尝试在extPro.Start()命令之前的某处将以下任一行添加到您的代码中:

extPro.StartInfo.WorkingDirectory = @"E:\gnuplot\bin";

或者

Environment.CurrentDirectory = @"E:\gnuplot\bin";

如果这不起作用,可能是因为您的应用程序没有对该目录的读取权限。尝试将您的insert.dat文件放在任何客户端应用程序都可以访问的目录中。

顺便说一句,我也不认识Standardization您正在使用的属性?该行应该改为:

extPro.StartInfo.RedirectStandardInput = true;
于 2013-06-10T08:28:25.860 回答