1

jlink.exe という実行可能ファイルがあり、コンソール アプリケーションで使用したいと考えています。jlink.exe は .net アプリケーションではないため、参照してそのメソッドを呼び出すことはできません。その結果、出力を読んで使用したいと思います

Windows エクスプローラーからその exe を起動すると、次のようになります。 ここに画像の説明を入力

その後、コマンドを待ちます。入力すると、次のmem 88 2ように返されます。

ここに画像の説明を入力

今度は、標準出力を読み取る.netコンソールアプリケーションで同じことをしたいと思いますが、何らかの理由で出力を読み取ることができません。これは私が持っているものです:

    // change working directory
    Directory.SetCurrentDirectory(@"C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.4 Evaluation\arm\bin");

    Process p = new Process( )
    {
        StartInfo = new ProcessStartInfo( @"jlink.exe" )
        {
            UseShellExecute = false ,
            RedirectStandardOutput = true ,
            RedirectStandardInput = true
        }
    };

    p.Start( );                       

    StreamWriter standardInput = p.StandardInput;
    StreamReader standardOutput = p.StandardOutput;

    var line = string.Empty;

    while ( ( line = standardOutput.ReadLine( ) ) != null )
    {                
        Console.WriteLine( line );                
    }

そのコードを実行すると、黒いウィンドウが表示されるのはなぜですか...その実行可能ファイルを実行したときと同じ出力が得られません。そのコードを他の実行可能ファイルに対して実行すると、うまく機能します。

次に入力mem 88 2して ENTER を押しても、何も起こりません。もう一度エンターを押すと、最終的に必要なものを追加のコンテンツで取得できます。その実行可能ファイルでこの動作が発生するのはなぜですか?

編集

私はこのような同様の質問を見てきました:

process.standardoutput.ReadToEnd() は常に空ですか?

私は何か間違ったことをしているとは思いません。その実行可能ファイルには何か変なものがあると思います。この実行可能ファイルを使用するには、http: //supp.iar.com/Download/SW/?item =EWARM-EVALまたはhttp://www.iar.com/en/Products/IAR-Embedded-からダウンロードできます。ワークベンチ/ARM/ . 次にC:\Program Files (x86)\IAR Systems\Embedded Workbench 6.4 Evaluation\arm\bin、jlink.exe に移動して実行します (USB 経由で接続されたボードがない場合、エラーが発生しますが、問題ではありません。エラー メッセージも表示されません)。

4

0 に答える 0