Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#windows窗体应用程序visual studio 2010中运行AVRDUDE_C#_Visual Studio 2010_Avrdude_Winavr - Fatal编程技术网

如何在C#windows窗体应用程序visual studio 2010中运行AVRDUDE

如何在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

我试图在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
中显示任何内容。现在我决定使用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的路径?