如何在C#windows窗体应用程序visual studio 2010中运行AVRDUDE
我试图在visual studio 2010的C#应用程序中运行如何在C#windows窗体应用程序visual studio 2010中运行AVRDUDE,c#,visual-studio-2010,avrdude,winavr,C#,Visual Studio 2010,Avrdude,Winavr,我试图在visual studio 2010的C#应用程序中运行avrdude,并在RichTextox中获取其输出。以下是我的代码:- void proc_OutputDataReceived(object sender, DataReceivedEventArgs e) { if (e.Data != null) { string newLine = e.Data.Trim() + Environ
avrdude
,并在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添加到path系统变量。注意,avrdude将其数据输出到stderr而不是stdout。在命令提示符窗口中,用户可以看到这两个命令,但在代码中,您正在重定向OutputData。要重定向stderr,请改用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函数中,您可以使用上面复制的相同代码。avrdude既不在当前目录中,也不在搜索路径中。因此,如何添加avrdude的路径?