GTB: - process bar activated

This commit is contained in:
Thomas Wiedebusch 2025-10-17 10:45:21 +02:00
parent 99b6c33b07
commit 5f62750cbb
3 changed files with 120 additions and 84 deletions

View File

@ -180,6 +180,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
btnUploadPWFile.Enabled = false;
btnReadStatus.Enabled = false;
btnRepairPassword.Enabled = false;
ddlLocation.Enabled = false;
}
/// <summary>
@ -205,6 +206,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
tbxFileToEraseDrive.Enabled = true;
btnUploadPWFile.Enabled = true;
btnReadStatus.Enabled = true;
ddlLocation.Enabled = true;
if (_repairPasswordEnabled)
btnRepairPassword.Enabled = true;
}
@ -262,6 +264,9 @@ namespace Xylem.Common.Ui.GenesisToolBox
/// <remarks date="2025-Oct-02" author="Thomas Wiedebusch">
/// - Catch error message on unknown data type and kill meter.
/// </remarks>
/// <remarks date="2025-Oct-17" author="Thomas Wiedebusch">
/// - Actions on pwdContainer error.
/// </remarks>
private void Connect()
{
try
@ -275,7 +280,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
}
lblOverall.Text = @"Login to Cordonel...";
ViewProgressPcb(true);
LowLevelActionControl(true);
_currentGenesis?.DisposeMeter();
//dispose old meter
@ -297,10 +302,29 @@ namespace Xylem.Common.Ui.GenesisToolBox
{
_meterBatch.MetersLogin();
if (!_currentGenesis.IsLoggedOn && String.IsNullOrEmpty(_currentGenesis.PcbId))
{
LowLevelActionControl(false);
LogErrorText("ERROR: Cannot read out PcbId! Access to Cordonel denied!");
return;
}
var retValPwdBuild = MeterPwdHandlerDb.RequestPwdFileFromDb(_currentGenesis.PcbId, out var pwdContainer);
// CASE 1: - The 'production password' is the 'Lvl8 password' as the login succeeded.
// Login failed and password cannot be acquired
if (!_currentGenesis.IsLoggedOn &&
(pwdContainer?.ListOfPasswords == null ||
pwdContainer.ListOfPasswords.Count < 8 ||
string.IsNullOrEmpty(pwdContainer.Skeleton)))
{
LowLevelActionControl(false);
LogErrorText("ERROR: Login with 'production password' failed and password file cannot be acquired " +
"from database!");
return;
}
// Password file exists
// CASE 1: - The 'production password' is the 'Lvl8 password' as the login succeeded.
if (retValPwdBuild && _currentGenesis.IsLoggedOn && pwdContainer.Skeleton.Equals(pwdContainer.Password))
{
// CASE 2: - Passwords are generated in database but password file is not installed or doesn't work.
@ -309,7 +333,8 @@ namespace Xylem.Common.Ui.GenesisToolBox
// If password file is initially not installed and the database password returned the SkeletonKey
// the login has been successfully executed with this SkeletonKey, so a repair of the password
// file needs to be enabled!
ShowPasswordRepairMessage(@"Password exists on database but the SkeletonKey is valid - [Repair Password] enabled");
ShowPasswordRepairMessage(
@"Password exists on database but the SkeletonKey is valid - [Repair Password] enabled");
}
if (!_currentGenesis.IsLoggedOn)
@ -318,14 +343,14 @@ namespace Xylem.Common.Ui.GenesisToolBox
Thread.Sleep(2000);
// Try to log in with password level 8 which may not be published to the database
var retVal = _currentGenesis.Login(Encoding.UTF8.GetString(pwdContainer.ListOfPasswords.Last()));
// CASE 3: - Passwords are generated in database and correctly installed. The login check will be done
// with the generated password, but the 'production password' is still the 'SkeletonKey'.
// - The database update of the production password went wrong!
if (_currentGenesis.IsLoggedOn && retVal)
{
ShowPasswordRepairMessage(@"Password file is installed as login Lvl8 works, password in database not updated" +
"- [Repair Password] enabled");
ShowPasswordRepairMessage(
@"Password file is installed as login Lvl8 works, password in database not updated" +
"- [Repair Password] enabled");
}
else
{
@ -353,7 +378,8 @@ namespace Xylem.Common.Ui.GenesisToolBox
else if (_currentGenesis.Region.Equals("NA"))
{
var url = ServiceUrls.GetExportDataServiceUrl();
var retStr = LocalWebRequest.GetRequestWithError(url + _currentGenesis.PcbId, out var errorCode, 30000);
var retStr = LocalWebRequest.GetRequestWithError(url + _currentGenesis.PcbId,
out var errorCode, 30000);
if (errorCode == HttpStatusCode.OK.GetHashCode())
{
var retExport = JsonConvert.DeserializeObject<List<PwdExport>>(retStr);
@ -394,8 +420,8 @@ namespace Xylem.Common.Ui.GenesisToolBox
}
MessageBox.Show(sb.ToString());
}// use skeletonKey
// Retry login if not skeletonKey
} // use skeletonKey
// Retry login if not skeletonKey
else
{
_meterBatch.MetersLogin();
@ -450,19 +476,18 @@ namespace Xylem.Common.Ui.GenesisToolBox
LogText("");
lblConnectPcb.ForeColor = Color.Green;
CheckUpdateEnabled();
LogPcAndCordonelTime();
LogInstalledMeterFw();
}));
}).ContinueWith(delegate
{
ViewProgressPcb(false);
LowLevelActionControl(false);
});
}
catch (Exception ex)
{
ViewProgressPcb(false);
LowLevelActionControl(false);
MessageBox.Show(ex.Message, @"FAILED", MessageBoxButtons.OK, MessageBoxIcon.Error);
LogErrorText(ex.Message);
// Dispose meter
@ -541,6 +566,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
{
ViewProcessControl(false);
_progressBarOn = false;
CheckUpdateEnabled();
}));
}
}
@ -1311,7 +1337,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
LogText("");
_currentGenesis.Logout();
LowLevelActionControl(false);
LowLevelActionControl(false);
// reboot the meter to take the new settings
btnRebootMeter_Click(this, null);
}
@ -1338,15 +1364,20 @@ namespace Xylem.Common.Ui.GenesisToolBox
LogText(msg);
lblActualProcess.Text = msg;
LowLevelActionControl(true);
_currentGenesis.ReLogin();
Task.Factory.StartNew(() =>
{
LowLevelActionControl(true);
_currentGenesis.ReLogin();
_currentGenesis.StoreAllConfigurations();
_currentGenesis.StoreAllConfigurations();
//add a blank line to separate next operation
LogText("");
_currentGenesis.Logout();
LowLevelActionControl(false);
//add a blank line to separate next operation
LogText("");
_currentGenesis.Logout();
}).ContinueWith(delegate
{
LowLevelActionControl(false);
});
}
@ -1673,7 +1704,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
_meterFile = new MeterFile(_currentGenesis);
}
ViewProgressPcb(true);
LowLevelActionControl(true);
//reset timer
_startTime = DateTimeOffset.UtcNow;
var sbMSG = new StringBuilder();
@ -1736,8 +1767,8 @@ namespace Xylem.Common.Ui.GenesisToolBox
{
Invoke(new Action(() =>
{
ViewProgressPcb(false);
}));
LowLevelActionControl(false);
}));
});
}
@ -2021,7 +2052,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
return;
}
ViewProgressPcb(true);
LowLevelActionControl(true);
var sbMSG = new StringBuilder();
var genesisStatus = new GenesisStatus();
Task.Factory.StartNew(() =>
@ -2031,7 +2062,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
{
Invoke(new Action(() =>
{
ViewProgressPcb(false);
LowLevelActionControl(false);
if (sbMSG.ToString().Contains(GenesisStatusHandler.ERROR_MARKER))
{
LogErrorText(sbMSG.ToString());

View File

@ -29,7 +29,7 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.btnWrite = new System.Windows.Forms.Button();
this.btnLedOff = new System.Windows.Forms.Button();
this.btnRead = new System.Windows.Forms.Button();
this.lblConfigVersion = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
@ -67,13 +67,13 @@
//
// btnWrite
//
this.btnWrite.Location = new System.Drawing.Point(432, 132);
this.btnWrite.Name = "btnWrite";
this.btnWrite.Size = new System.Drawing.Size(129, 53);
this.btnWrite.TabIndex = 1;
this.btnWrite.Text = "Led Off";
this.btnWrite.UseVisualStyleBackColor = true;
this.btnWrite.Click += new System.EventHandler(this.btnWrite_Click);
this.btnLedOff.Location = new System.Drawing.Point(432, 132);
this.btnLedOff.Name = "btnLedOff";
this.btnLedOff.Size = new System.Drawing.Size(129, 53);
this.btnLedOff.TabIndex = 1;
this.btnLedOff.Text = "Led Off";
this.btnLedOff.UseVisualStyleBackColor = true;
this.btnLedOff.Click += new System.EventHandler(this.btnLedOff_Click);
//
// btnRead
//
@ -404,7 +404,7 @@
this.Controls.Add(this.grpSetup);
this.Controls.Add(this.barOverallProgressUpdate);
this.Controls.Add(this.btnRead);
this.Controls.Add(this.btnWrite);
this.Controls.Add(this.btnLedOff);
this.Name = "FrmQsTool";
this.Text = "Cordonel QS Tools";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmQsTool_FormClosing);
@ -418,7 +418,7 @@
}
#endregion
private System.Windows.Forms.Button btnWrite;
private System.Windows.Forms.Button btnLedOff;
private System.Windows.Forms.Button btnRead;
private System.Windows.Forms.Label lblConfigVersion;
private System.Windows.Forms.Label label9;

View File

@ -159,7 +159,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
private void DisableToolButtons()
{
btnRead.Enabled = false;
btnWrite.Enabled = false;
btnLedOff.Enabled = false;
}
/// <summary>
@ -168,7 +168,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
private void EnableToolButtons()
{
btnRead.Enabled = true;
btnWrite.Enabled = true;
btnLedOff.Enabled = true;
}
/// <summary>
@ -236,7 +236,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
}
lblOverall.Text = @"Login to Cordonel...";
ViewProgressPcb(true);
LowLevelActionControl(true);
_currentGenesis?.DisposeMeter();
//dispose old meter
@ -258,60 +258,62 @@ namespace Xylem.Common.Ui.GenesisToolBox
{
_meterBatch.MetersLogin();
if (!_currentGenesis.IsLoggedOn)
if (!_currentGenesis.IsLoggedOn && String.IsNullOrEmpty(_currentGenesis.PcbId))
{
LowLevelActionControl(false);
LogErrorText("ERROR: Cannot read out PcbId! Access to Cordonel denied!");
return;
}
Invoke(new Action(() =>
{
lblConnectPcb.Text = StrPartPcbConnected;
tbxPcbId.Text = _currentGenesis.PcbId;
tbxPcbId.Visible = true;
tbxMeterFw.Text = _currentGenesis.FwVersion;
tbxMeterMeterSize.Text = _currentGenesis.MeterSize;
tbxMeterLutCrc.Text = _currentGenesis.LutCrc;
tbxRegion.Text = _currentGenesis.Region;
LogText("Meter FW Version:\t" + _currentGenesis.FwVersion);
LogText("Meter LUT CRC:\t" + _currentGenesis.LutCrc);
LogText("Meter Size:\t" + _currentGenesis.MeterSize);
LogText("Meter Region:\t" + _currentGenesis.Region);
if (_currentGenesis.RadioFrequencyMhz != null)
{
tbxRadio.Text = $@"{_currentGenesis.RadioFrequencyMhz}";
LogText("Radio frequency:\t" + $"{_currentGenesis.RadioFrequencyMhz} MHz");
}
lblConnectPcb.Text = StrPartPcbConnected;
tbxPcbId.Text = _currentGenesis.PcbId;
tbxPcbId.Visible = true;
tbxMeterFw.Text = _currentGenesis.FwVersion;
tbxMeterMeterSize.Text = _currentGenesis.MeterSize;
tbxMeterLutCrc.Text = _currentGenesis.LutCrc;
tbxRegion.Text = _currentGenesis.Region;
LogText("Meter FW Version:\t" + _currentGenesis.FwVersion);
LogText("Meter LUT CRC:\t" + _currentGenesis.LutCrc);
LogText("Meter Size:\t" + _currentGenesis.MeterSize);
LogText("Meter Region:\t" + _currentGenesis.Region);
if (_currentGenesis.RadioFrequencyMhz != null)
{
tbxRadio.Text = $@"{_currentGenesis.RadioFrequencyMhz}";
LogText("Radio frequency:\t" + $"{_currentGenesis.RadioFrequencyMhz} MHz");
}
LogText("");
LogText("'Configuration.json' version: " + _currentGenesis.InterfaceInfo.InterfaceVersion);
lblConfigVersion.Text = @"Interface Version: " + _currentGenesis.InterfaceInfo.InterfaceVersion;
lblConfigVersion.ForeColor = _currentGenesis.InterfaceSupportsFwVersion ? Color.Green : Color.Red;
if (!_currentGenesis.InterfaceSupportsFwVersion)
{
var text = "INTERFACE VERSION OUTDATED!\n" +
"The loaded \'configuration.json\' " +
$"version: {_currentGenesis.InterfaceInfo.InterfaceVersion}\n" +
$"does NOT support the Cordonel FW version: {_currentGenesis.FwVersion}!";
MessageBox.Show(text, @"FAILED", MessageBoxButtons.OK, MessageBoxIcon.Error);
LogText(text);
}
else
{
LogText($"\'Configuration.json\' supports installed FW version: {_currentGenesis.FwVersion}");
}
LogText("");
LogText("'Configuration.json' version: " + _currentGenesis.InterfaceInfo.InterfaceVersion);
lblConfigVersion.Text = @"Interface Version: " + _currentGenesis.InterfaceInfo.InterfaceVersion;
lblConfigVersion.ForeColor = _currentGenesis.InterfaceSupportsFwVersion ? Color.Green : Color.Red;
if (!_currentGenesis.InterfaceSupportsFwVersion)
{
var text = "INTERFACE VERSION OUTDATED!\n" +
"The loaded \'configuration.json\' " +
$"version: {_currentGenesis.InterfaceInfo.InterfaceVersion}\n" +
$"does NOT support the Cordonel FW version: {_currentGenesis.FwVersion}!";
MessageBox.Show(text, @"FAILED", MessageBoxButtons.OK, MessageBoxIcon.Error);
LogText(text);
}
else
{
LogText($"\'Configuration.json\' supports installed FW version: {_currentGenesis.FwVersion}");
}
LogText("");
lblConnectPcb.ForeColor = Color.Green;
CheckUpdateEnabled();
LogText("");
lblConnectPcb.ForeColor = Color.Green;
CheckUpdateEnabled();
LogPcAndCordonelTime();
LogInstalledMeterFw();
LogPcAndCordonelTime();
LogInstalledMeterFw();
}));
}).ContinueWith(delegate { ViewProgressPcb(false); });
}).ContinueWith(delegate { LowLevelActionControl(false); });
}
catch (Exception ex)
{
ViewProgressPcb(false);
LowLevelActionControl(false);
MessageBox.Show(ex.Message, @"FAILED", MessageBoxButtons.OK, MessageBoxIcon.Error);
LogErrorText(ex.Message);
// Dispose meter
@ -327,7 +329,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
private void CheckUpdateEnabled()
{
if (_currentGenesis != null && _currentGenesis.IsLoggedOn)
if (_currentGenesis != null )
{
SetCordonelAccessEnabled();
return;
@ -353,6 +355,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
{
ViewProcessControl(false);
_progressBarOn = false;
CheckUpdateEnabled();
}));
}
}
@ -660,12 +663,11 @@ namespace Xylem.Common.Ui.GenesisToolBox
private void btnReadLifetime_Click(Object sender, EventArgs e)
{
ViewProgressPcb(true);
LowLevelActionControl(true);
var sbMSG = new StringBuilder();
var genesisStatus = new GenesisStatus();
Task.Factory.StartNew(() =>
{
try
{
@ -802,18 +804,21 @@ namespace Xylem.Common.Ui.GenesisToolBox
// buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Information);
}
}
}).ContinueWith(delegate { Invoke(new Action(() => { ViewProgressPcb(false); })); });
}).ContinueWith(delegate { Invoke(new Action(() => { LowLevelActionControl(false); })); });
}
private void btnWrite_Click(Object sender, EventArgs e)
private void btnLedOff_Click(Object sender, EventArgs e)
{
if (!_currentGenesis.IsLoggedOn)
{
_currentGenesis.ReLogin();
}
SetActualProcessAndLog("Set sample rate to 2 Hz");
_currentGenesis.WriteRegister(Register.Genesisflow.SampleRate, 2);
SetActualProcessAndLog("Switch LED OFF");
_currentGenesis.WriteRegister(Register.Genesisflow.LedMode, 0);
SetActualProcessAndLog("Set trigger active");
_currentGenesis.WriteRegister(Register.Genesisflow.TriggerActive, 1);
}