我有一個連接到ST-Link的程序。此刻,您可以從組合框中選擇固件,按下啓動鍵,它會將固件編程到與ST-Link相連的電路板上。無法從CLI讀取數據
爲此,我使用CLI使用ST-LINK_CLI.exe向ST-Link發送命令。固件編程後,它會在命令提示符下出現:「運行應用程序退出」。在這裏用戶按下Enter鍵,應用程序在板上運行,CLI退出。
但是,我需要做的是沒有提示用戶按下輸入,並自動做到這一點。
我的想法是從CLI讀取輸出,並找出用戶提示時的輸出結果。我想我可以做一個循環,輸出數據被讀入,當用戶必須按下輸入時它與輸出數據相匹配,我將使用SendKeys.Send(「{ENTER}」)。
但是,我無法讀取數據。以下是不工作:
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);
}
以下是出現的錯誤消息: 「‘System.InvalidOperationException’類型的未處理的異常出現在System.dll中和點流部分的結束。
我想知道是否有人知道爲什麼這發生?或者,如果有周圍的提示問題的另一種方式?
感謝 露西
這是一個繁忙的循環?如果是這樣,爲了限制發送的按鍵量和CPU使用量,增加一個「睡眠」呼叫(可能是50毫秒)可能是一個好主意。 –
這是一個好主意,謝謝 – lucycopp