//固件修复按钮 private void button8_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { int i; button8.Text = "等待中..."; button6.Enabled = false; button5.Enabled = false; button8.Enabled = false; AllowSelect = false; //for (i = 0; i < 30; i++) while (true) { serialPort1.Write("l"); if (serialPort1.BytesToRead != 0 && serialPort1.ReadByte() == 'C') { break; } button8.Text += "."; if (button8.Text.Length > 6) { button8.Text = "等待中."; } System.Threading.Thread.Sleep(200); } /*if (i >= 30) * { * button6.Enabled = true; * button5.Enabled = true; * button8.Enabled = true; * AllowSelect = true; * return; * }*/ normalUpdate = false; //因为要访问UI资源,所以需要使用invoke方式同步ui this.Invoke((EventHandler)(delegate { button8.Text = "修复中."; } )); ymodem = new Ymodem.Ymodem(); ymodem.serialPort = serialPort1; ymodem.Path = textBox3.Text.ToString(); ymodem.PortName = comboBoxComNum.SelectedItem.ToString(); ymodem.BaudRate = Convert.ToInt32(comboBoxBaud.SelectedItem.ToString()); downloadThread = new System.Threading.Thread(ymodem.YmodemUploadFile); ymodem.NowDownloadProgressEvent += new EventHandler(NowDownloadProgressEvent); ymodem.DownloadResultEvent += new EventHandler(DownloadFinishEvent); downloadThread.Start(); } }
//固件升级按钮 private void button6_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.WriteLine("update"); System.Threading.Thread.Sleep(500); button6.Text = "升级中"; button6.Enabled = false; button5.Enabled = false; button8.Enabled = false; AllowSelect = false; ymodem = new Ymodem.Ymodem(); ymodem.serialPort = serialPort1; ymodem.Path = textBox3.Text.ToString(); ymodem.PortName = comboBoxComNum.SelectedItem.ToString(); ymodem.BaudRate = Convert.ToInt32(comboBoxBaud.SelectedItem.ToString()); downloadThread = new System.Threading.Thread(ymodem.YmodemUploadFile); ymodem.NowDownloadProgressEvent += new EventHandler(NowDownloadProgressEvent); ymodem.DownloadResultEvent += new EventHandler(DownloadFinishEvent); downloadThread.Start(); } }
private void downloadButton_Click(object sender, EventArgs e) { settings.pathlog = this.pathTextBox.Text; // settings.comlog = this.SerialPortComboBox.Text; settings.FileSizelog = this.labelFileSize.Text; settings.Save(); serialPort.PortName = SerialPortComboBox.Text; Regex r = new Regex(fileName);//("DWDM"); Match m = r.Match(Path.GetFileNameWithoutExtension(pathTextBox.Text.ToUpper())); if (m.Success)// "DWDM.bin") { Button button = (Button)sender; if (button.Text == "Update") { try { //serialPort.PortName = SerialPortComboBox.Text; // serialPort.BaudRate = Convert.ToInt32(BaudRateComboBox.SelectedItem.ToString()); serialPort.BaudRate = 115200; serialPort.Open(); } catch //错误处理 { MetroMessageBox.Show(this, "\r\n\r\n" + "The equipment was unable to connect. Please check the USB connection", "Error", MessageBoxButtons.OK); return; } serialPort.Write(updateCMD); //("upgrade\r"); //写数据 foh-100:upgrade ? \r\n dwdm:atcmd :FUNC:UPGR\r foh-8:upgrade\r System.Threading.Thread.Sleep(200); //延时200ms string str = serialPort.ReadExisting(); //字符串方式读 20200310- "dowload bin file enter 1 \r\nexecute app enter 2 \r\n-------------------------\r\n\0dowload bin file enter 1 \r\nexecute app enter 2 \r\n-------------------------\r\n\0" int index = 0; if (updateCMD == "upgrade\r") //foh-100 { index = str.IndexOf("Enter 9", index); if (index < 0) { index = 0; index = str.IndexOf("Enter 1", index); if (index < 0) { MetroMessageBox.Show(this, "\r\n\r\n" + "The equipment was unable to connect. Please check the USB connection", "Error", MessageBoxButtons.OK); serialPort.Close(); return; } } else { serialPort.Write("9"); //写数据 System.Threading.Thread.Sleep(200); //延时200ms str = serialPort.ReadExisting(); //字符串方式读 index = 0; index = str.IndexOf("Enter 1", index); if (index < 0) { MetroMessageBox.Show(this, "\r\n\r\n" + "The equipment was unable to connect. Please check the USB connection", "Error", MessageBoxButtons.OK); serialPort.Close(); return; } } } else { index = str.IndexOf("enter 0", index); //"Enter 9" if (index < 0) { index = 0; index = str.IndexOf("enter 1", index); //"Enter 1" if (index < 0) { MetroMessageBox.Show(this, "\r\n\r\n" + "The equipment was unable to connect. Please check the USB connection", "Error", MessageBoxButtons.OK); serialPort.Close(); return; } } else { serialPort.Write("0"); //写数据 //9 System.Threading.Thread.Sleep(200); //延时200ms str = serialPort.ReadExisting(); //字符串方式读 index = 0; index = str.IndexOf("enter 1", index); //"Enter 1" if (index < 0) { MetroMessageBox.Show(this, "\r\n\r\n" + "The equipment was unable to connect. Please check the USB connection", "Error", MessageBoxButtons.OK); serialPort.Close(); return; } } } serialPort.Write("1"); //写数据 // 1 System.Threading.Thread.Sleep(2000); //延时200ms serialPort.Close(); this.circularProgressBar1.Value = 0; //DownloadProgressBar button.Text = "Updating"; ymodem = new Ymodem.Ymodem(); ymodem.Path = pathTextBox.Text.ToString(); ymodem.PortName = SerialPortComboBox.SelectedItem.ToString(); ymodem.BaudRate = 115200;// Convert.ToInt32(BaudRateComboBox.SelectedItem.ToString()); downloadThread = new System.Threading.Thread(ymodem.YmodemUploadFile); ymodem.NowDownloadProgressEvent += new EventHandler(NowDownloadProgressEvent); ymodem.DownloadResultEvent += new EventHandler(DownloadFinishEvent); downloadThread.Start(); } } else { MetroMessageBox.Show(this, "\r\n\r\n" + "Please select a different file type and try again." + "\r\n" + "e.g. " + fileName + " ...", "Error", MessageBoxButtons.OK); } }