簡體   English   中英

如何在C#Windows窗體應用程序Visual Studio 2010中運行AVRDUDE

[英]How to run AVRDUDE in C# windows form application visual studio 2010

我試圖在Visual Studio 2010的C#應用​​程序中運行avrdude ,並在RichTextox.獲取其輸出RichTextox. 這是我的代碼:

void proc_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (e.Data != null)
            {
                string newLine = e.Data.Trim() + Environment.NewLine;
                MethodInvoker append = () => txtOutput.Text += newLine;
                txtOutput.BeginInvoke(append);
            }

        }
        private void btnAVRDUSR_Click(object sender, EventArgs e)
        {
            string command = "/c avrdude";

            ProcessStartInfo procStartInfo = new ProcessStartInfo("CMD", command);

            Process proc = new Process();
            proc.StartInfo = procStartInfo;
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            proc.Start();
            procStartInfo.CreateNoWindow = true;
            procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.UseShellExecute = false;
            proc.OutputDataReceived += new DataReceivedEventHandler(proc_OutputDataReceived);
            proc.Start();

            proc.BeginOutputReadLine();
            procStartInfo.CreateNoWindow = true;
            procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        }

此代碼在RichTextBox中未顯示任何內容。 現在,我決定使用pin命令。 所以,我替換這條線

string command = "/c avrdude ";

這樣

string command = "/c ping 192.168.1.1";

這次,我的代碼很棒。 因此,誰能告訴我為什么我的avrdude無法在此代碼中工作。

將avrdude添加到路徑系統變量。 請注意,avrdude將其數據輸出到stderr而不是stdout。 在命令提示符窗口中,這兩個對用戶都是可見的,但是在代碼中,您正在重定向OutputData。 要重定向標准錯誤,請改用ErrorData:

process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.ErrorDataReceived += Process_ErrorDataReceived;
process.StartInfo.FileName = "CMD.exe";
process.StartInfo.Arguments = AVRdudeCmd;
process.Start();
process.BeginErrorReadLine();

在ErrorDataReceived函數中,可以使用上面復制的相同代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM