为什么命令行在使用 C# 时不返回输出

问题描述 投票:0回答:0

我有基本的 C# 形式,可以对微控制器进行编程,但我很难进行熔丝编程。

编程保险丝的命令行代码是:“atprogram.exe –t atmelice –i jtag -d atmega2561 write -fs --values E299FF”

  • 正如您在图像中看到的那样,在命令行中成功融合了程序
  • 在 Visual Studio 中,相同的命令行不返回任何内容。
  • 当我用芯片擦除代码形式替换保险丝代码时,返回结果。这只会在我对保险丝进行编程时发生。
  • 我也有轮胎 WaitForExit();还是什么都没有

原始C#文件可以从以下网址下载: Microchip Visual Studio 表单代码


public StreamReader RunProgram_atprogram(String programName, String cmd, String programPath) {
    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.CreateNoWindow = true;
    proc.StartInfo.FileName = programName;
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardError = true;
    proc.StartInfo.RedirectStandardInput = true;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.Start();
    if (programPath.Length > 13) {
        proc.StandardInput.WriteLine(programPath[0].ToString() + ":");
        if (cmd.Length != 0) {
            proc.StandardInput.WriteLine("cd " + programPath.Substring(0, (programPath.Length - 13)));
        }
    }
    proc.StandardInput.WriteLine(cmd);
    StreamReader reader = proc.StandardOutput;
    proc.StandardInput.WriteLine("exit");
    proc.Close();
    return reader;
}

  

private void program_Click(object sender, EventArgs e)
            {
                StreamReader reader;
                string outline;
                string failflag = null;
                string buffer = null;
               

            if ((textBox1.Text == "") || (textBox2.Text == ""))
            {
                MessageBox.Show("Please choose atpgrogram.exe application and programming file");
                return;
            }

            program_status.Clear();
            program_status.AppendText("Programming...");


            
            // Program Fuse

            reader = RunProgram_atprogram("cmd.exe", "atprogram.exe –t atmelice –i jtag -d atmega2561 write -fs --values E299FF", textBox1.Text);
            while (!reader.EndOfStream)
            {
                outline = reader.ReadLine();
                cmd_execution_info.AppendText(outline + "\r\n");

                if (outline.Length > 8)
                {
                    if (outline.Substring(0, 8) == "Firmware")
                    {
                        failflag = reader.ReadLine();
                        cmd_execution_info.AppendText(failflag + "\r\n");

                    }
                }

            }
            if (failflag != ("Chiperase completed successfully"))
            {
                 program_status.Clear();
                 program_status.AppendText("Fail");
                 return;
            }

如果您还有其他问题,请告诉我。

c# visual-studio command-line-interface
© www.soinside.com 2019 - 2024. All rights reserved.