私はST-Linkに接続されたプログラムを持っています。コンボボックスからファームウェアを選択することができる瞬間に、startを押すと、ST-LInkに接続された回路基板にファームウェアがプログラムされます。CLIからデータを読み取ることができません
これを行うには、CLIを使用してST-LINK_CLI.exeを使用してST-Linkにコマンドを送信します。ファームウェアがプログラムされると、コマンドプロンプトに「アプリケーションを実行して終了する」というメッセージが表示されます。ここでユーザーはenterを押し、アプリケーションはボード上で実行され、CLIは終了します。
しかし、私がする必要があるのは、ユーザーがEnterを押したときにプロンプトを表示せず、自動的に行うことだけです。
これを行うための私の考えは、CLIからの出力を読んで、ユーザーにプロンプトが表示されたときの出力を把握することでした。私はループを実行し、出力データを読み込み、ユーザーがEnterキーを押したときに出力データと一致すると、SendKeys.Send( "{ENTER}")を使用します。
ただし、データの読み込みに問題があります。動作していない、次 は「『System.InvalidOperationException』種類の未処理の例外がストリーム部の端にSystem.dllのとの点で発生しました:
string STPath = @"C:\Users\Falconex\Documents\FalconexTest\FalconexTest\ST-LINK Utility\ST-LINK_CLI.exe";
string path2 = @"C:\Users\Falconex\Documents\FalconexTest\FalconexTest\Firmware\PXL3-DELL-2B.SREC";
Process p = new Process();
p.StartInfo.FileName = STPath;
p.StartInfo.Arguments = "-ME -p " + firmwareLocation + " -v -Run ";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = false;
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
while (!p.StandardOutput.EndOfStream)
{
string line = p.StandardOutput.ReadLine();
File.WriteAllText("New.txt", line);
}
次はアップしますエラーメッセージです。
これが起こって?それともプロンプト問題の周りの別の方法がある場合にされた理由を誰もが知っていた場合、私は不思議でしたか?
おかげ ルーシー
これはビジーループです:
は、私はあなたが必要なものは、このようなものを使用してコードを置き換えることであると思われますか?そうであれば、送信されるキーの量とCPU使用量を制限するために、「スリープ」コール(おそらく50ミリ秒)を追加することをお勧めします。 –
それは良いアイデアです、ありがとう – lucycopp