private void btnUpdate_Click(object sender, EventArgs e) { FileStream fileStream = null; uint FileCount = 0; //Check fireware file if (m_clsOpenFileDlg.FileName == null) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Please select a file."); return; } if (false == File.Exists(m_clsOpenFileDlg.FileName)) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "The file doesn't exist."); return; } //if is running update progress, cancel it. if (m_clsBackThread.IsBusy == true) { m_clsBackThread.CancelAsync(); return; } //Check status if (DEV_MODE.NO == AskMode()) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Disconnected. Can't update."); return; } //Check file size if (fileStream == null) { fileStream = new FileStream(m_clsOpenFileDlg.FileName, FileMode.Open, FileAccess.Read, FileShare.None, 512, FileOptions.None); } if (fileStream.Length <= 0) { fileStream.Close(); return; } //Get version if (Result.OK != GetVersion(AskMode())) { fileStream.Close(); return; } //if is in ap mode , change to BL mode if (m_Mode == DEV_MODE.AP) { if (Result.OK != m_clsInterface.API_ControlResetToBootLoader()) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Turn to BL Mode unsuccessfully"); fileStream.Close(); return; } } //initial setting m_fileStream = fileStream; m_lFileSize = m_fileStream.Length; m_uiFileCount = (FileCount == 0) ? 1 : FileCount; m_strFilePath = m_clsOpenFileDlg.FileName; m_bTestMode = testModeToolStripMenuItem.Checked; //Disabel Item ControlItem(ENUM_ITEM_TYPE.MENU_SET_COM_PORT, false); ControlItem(ENUM_ITEM_TYPE.MENU_DEVICE_INTERFACE, false); ControlItem(ENUM_ITEM_TYPE.BTN_RELINK, false); ControlItem(ENUM_ITEM_TYPE.BTN_UPDATE_TEXT, "Stop"); //Create thread m_clsBackThread = new BackgroundWorker( ); m_clsBackThread.WorkerReportsProgress = true; m_clsBackThread.WorkerSupportsCancellation = true; m_clsBackThread.DoWork += new DoWorkEventHandler(MonitorUpdate); m_clsBackThread.ProgressChanged += new ProgressChangedEventHandler(BackgroundProgress); m_clsBackThread.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackgroundTaskCompleted); m_clsBackThread.RunWorkerAsync(!m_bTestMode); }
private void btnUpdate_Click(object sender, EventArgs e) { FileStream fileStream = null; uint FileCount = 0; //Check fireware file if (m_clsOpenFileDlg.FileName == null) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Please select a file."); return; } if (false == File.Exists(m_clsOpenFileDlg.FileName)) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "The file doesn't exist."); return; } //Add by Wayne for improve FW upgrade feature for integrate M03X model, 2015-03-31 //Check file name if (CGlobalFunc.CheckUpgradeFileName(m_clsOpenFileDlg.FileName) == false) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Invalid upgrade file."); return; } uint ModelNamefromFileName = 0x0; if (m_clsOpenFileDlg.FileName.IndexOf("RU-824-X") != -1) { ModelNamefromFileName = 0x38323458; } else if (m_clsOpenFileDlg.FileName.IndexOf("RU-824") != -1) { ModelNamefromFileName = 0x383234; } else if (m_clsOpenFileDlg.FileName.IndexOf("RU-861") != -1) { ModelNamefromFileName = 0x383631; } else if (m_clsOpenFileDlg.FileName.IndexOf("RU00-M02-X") != -1) { ModelNamefromFileName = 0x4D303258; } else if (m_clsOpenFileDlg.FileName.IndexOf("RU00-M03-X") != -1) { ModelNamefromFileName = 0x4D303358; } //Add by Wayne for supporting M.2/R2000 module, 2016-08-01 else if (m_clsOpenFileDlg.FileName.IndexOf("RU00-M06-X") != -1) { ModelNamefromFileName = 0x4D303658; } //End by Wayne for supporting M.2/R2000 module, 2016-08-01 //Add by Wayne for FWUpdateTool support M07 module, 2016-12-16 else if (m_clsOpenFileDlg.FileName.IndexOf("RU00-M07-X") != -1) { ModelNamefromFileName = 0x4D303758; } //End by Wayne for FWUpdateTool support M07 module, 2016-12-16 if (m_Mode == DEV_MODE.AP) { //Compare model name between upgrade file name and OEM register if (reader.uiModelNameMAJOR != ModelNamefromFileName) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "The upgrade file is incompatible with RFID module."); return; } } //End by Wayne for improve FW upgrade feature for integrate M03X model, 2015-03-31 //if is running update progress, cancel it. if (m_clsBackThread.IsBusy == true) { m_clsBackThread.CancelAsync(); return; } //Check status if (DEV_MODE.NO == AskMode()) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Disconnected. Can't update."); return; } //Check file size if (fileStream == null) { fileStream = new FileStream(m_clsOpenFileDlg.FileName, FileMode.Open, FileAccess.Read, FileShare.None, 512, FileOptions.None); } //Mod by Wayne for improve FW upgrade feature for integrate M03X model, 2015-03-31 //if (fileStream.Length <= 0) if (fileStream.Length != 204800) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Incorrect file size."); //End by Wayne for improve FW upgrade feature for integrate M03X model, 2015-03-31 fileStream.Close(); return; } //Get version if (Result.OK != GetVersion(AskMode())) { fileStream.Close(); return; } //if is in ap mode , change to BL mode if (m_Mode == DEV_MODE.AP) { if (Result.OK != m_clsInterface.API_ControlResetToBootLoader()) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Turn to BL Mode unsuccessfully"); fileStream.Close(); return; } //Mod by Wayne for enable functions to fit M06 requirement, 2016-10-21 //System.Threading.Thread.Sleep(500); //Add by Wayne for improve FW upgrade feature for integrate M03X model, 2015-03-31 System.Threading.Thread.Sleep(1000); //End by Wayne for enable functions to fit M06 requirement, 2016-10-21 } //Add by Wayne for improve FW upgrade feature for integrate M03X model, 2015-03-31 //Compare model name between upgrade file name and firmware(new model only) if (m_clsInterface.API_UpdateGetModelName(ref MainModel) == Result.OK) { ControlItem(ENUM_ITEM_TYPE.TEXT_MODEL, String.Format("RU00-{0}{1}{2}-{3}", (char)((MainModel >> 24) & 0xFF), (char)((MainModel >> 16) & 0xFF), (char)((MainModel >> 8) & 0xFF), (char)(MainModel & 0xFF))); if (MainModel != ModelNamefromFileName) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Model name is inconsistent."); fileStream.Close(); return; } uint UpdateKey = 0x0; if (m_clsInterface.API_UpdateGetUpdateKey(ref UpdateKey) == Result.OK) { int index = m_clsOpenFileDlg.FileName.IndexOf("Key"); string UpdateKey_Str = Convert.ToString(UpdateKey); ControlItem(ENUM_ITEM_TYPE.TEXT_KEY, String.Format("Key{0}", UpdateKey_Str.PadLeft(2, '0'))); if (UpdateKey_Str.PadLeft(2, '0') != m_clsOpenFileDlg.FileName.Substring(index + 3, 2)) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Update key is inconsistent."); fileStream.Close(); return; } } } //End by Wayne for improve FW upgrade feature for integrate M03X model, 2015-03-31 //initial setting m_fileStream = fileStream; m_lFileSize = m_fileStream.Length; m_uiFileCount = (FileCount == 0) ? 1 : FileCount; m_strFilePath = m_clsOpenFileDlg.FileName; m_bTestMode = testModeToolStripMenuItem.Checked; //Disabel Item ControlItem(ENUM_ITEM_TYPE.MENU_SET_COM_PORT, false); ControlItem(ENUM_ITEM_TYPE.MENU_DEVICE_INTERFACE, false); ControlItem(ENUM_ITEM_TYPE.BTN_RELINK, false); ControlItem(ENUM_ITEM_TYPE.BTN_UPDATE_TEXT, "Stop"); //Create thread m_clsBackThread = new BackgroundWorker( ); m_clsBackThread.WorkerReportsProgress = true; m_clsBackThread.WorkerSupportsCancellation = true; m_clsBackThread.DoWork += new DoWorkEventHandler(MonitorUpdate); m_clsBackThread.ProgressChanged += new ProgressChangedEventHandler(BackgroundProgress); m_clsBackThread.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BackgroundTaskCompleted); m_clsBackThread.RunWorkerAsync(!m_bTestMode); }