如何在c# windows窗体应用visual studio 2010中运行AVRDUDE
本文关键字:2010 studio 运行 AVRDUDE visual 应用 windows 窗体 | 更新日期: 2023-09-27 18:02:13
我试图在visual studio 2010中的c#应用程序中运行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
中没有显示任何东西。现在我决定使用引脚命令。因此,我替换这一行
string command = "/c avrdude ";
由这个 string command = "/c ping 192.168.1.1";
这一次我的代码工作得很好。所以,有人能告诉我为什么我的avrdude
在这个代码中不工作吗?
将avrdude添加到path系统变量中。注意,avrdude将其数据输出到标准输出,而不是标准输出。在命令提示符窗口中,两者对用户都是可见的,但是在您的代码中,您要重定向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函数中,可以使用上面复制的代码。