Ejemplo n.º 1
0
        void FileTransProtocol_EndOfTransmit(object sender, EventArgs e)
        {
            SetEndTransmit();

            TimeSpan ts = DateTime.Now - startTime;

            ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 正在自动重启下位机...",
                                         ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds));

            this.BeginInvoke(new Action <FormFirmwareUpdate>(async(obj) => {
                m_flowSensor.DataRecved -= OnUartDataRecved;

                bool bRet = await m_flowSensor.StartOTARebootAsync();
                if (bRet)
                {
                    /* 重启前关闭串口 */
                    m_flowSensor.Close();

                    /* 等待重启完成 */
                    await Task.Delay(10000);

                    /* 重新开启串口 */
                    bRet = m_flowSensor.Open();
                    if (bRet)
                    {
                        /* 获取固件版本号 */
                        string ver = await m_flowSensor.BoardVersionAsync();

                        ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 下位机重启完成,固件版本号: " + ver,
                                                     ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds));
                    }
                    else
                    {
                        ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 获取下位机版本号失败!",
                                                     ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds));
                    }

                    buttonStart.Text = "关闭";
                }
                else
                {
                    ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 自动重启下位机失败!",
                                                 ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds));
                }
            }), this);
        }