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 に答える