From bd44ce11d6eda1ffe1acc81629148b7fe8f771ac Mon Sep 17 00:00:00 2001 From: Luc Vandenbroucke Date: Thu, 14 Feb 2019 15:56:23 +0100 Subject: [PATCH] cleanup --- EpdBase/EpdBase.cpp | 71 ++++++++++--------- EpdBase/EpdBase.h | 13 ++++ EpdBaseClr/EpdBaseClr.cpp | 31 +++++++-- EpdBaseClr/EpdBaseClr.h | 3 +- eDosStation/EntryBadge.xaml.cs | 117 +++++++++++++++++++------------- eDosStation/EpdExit.xaml | 14 ++-- eDosStation/EpdExit.xaml.cs | 34 +++++++++- eDosStation/ShowEPDDose.xaml | 7 +- eDosStation/ShowEPDDose.xaml.cs | 8 +-- 9 files changed, 193 insertions(+), 105 deletions(-) diff --git a/EpdBase/EpdBase.cpp b/EpdBase/EpdBase.cpp index 185e996..f36f3dc 100644 --- a/EpdBase/EpdBase.cpp +++ b/EpdBase/EpdBase.cpp @@ -23,11 +23,13 @@ void EpdBase::Epd2U::StartDiscover() { FlushDiscoveryCache(port); DiscRV= Discover(port, DeviceIDs, MaxDevices, &DeviceCount); + Commit(); if (DiscRV == 1 && DeviceCount == 0) { OnRV = EpdOn(); Commit(); Sleep(1100); DiscRV = Discover(port, DeviceIDs, MaxDevices, &DeviceCount); + Commit(); } } @@ -96,70 +98,65 @@ WORD EpdBase::Epd2U::ReadStatus() EpdClock = RealTime = IssueCount = OffTime = OperatingStatus = ErrorStatus = AlarmStatus = OtherAlarms = EEPROMBadSectors = 0; ErrorSource = ErrorReason = ErrorData = 0; - - ReadStatusRV= ReadEpdStatus(&EpdClock, &RealTime, &IssueCount, &OffTime, &OperatingStatus, &ErrorStatus, &AlarmStatus, &OtherAlarms, &EEPROMBadSectors); - if (ReadStatusRV == 0) { - Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); - return ErrorReason; - } - EpdID = HardVersion = SoftVersion = FunctionFlags = 0; - ReadEpdIDRV = ReadEpdID( + + + CommitRV = ReadEpdStatus(&EpdClock, &RealTime, &IssueCount, &OffTime, &OperatingStatus, &ErrorStatus, &AlarmStatus, &OtherAlarms, &EEPROMBadSectors); + if (CommitRV==1) CommitRV= ReadEpdID( &EpdID, &HardVersion, &SoftVersion, &FunctionFlags); - if (ReadEpdIDRV == 0) { - Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); - return ErrorReason; - } - - CommitRV = Commit(); + if (CommitRV==1) CommitRV = Commit(); if(CommitRV == 0) { Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); return ErrorReason; } else { + if (CurrentDeviceID == 0) CurrentDeviceID = EpdID; time_t t = RealTime; TimeFunctions::UnixTimeToSystemTime(t, &tRealTime); DecodeStatus(); DecodeFunctionFlags(); } - if (ReadStatusRV == 1 && EPDIssued == 1) { - ReadWearerRV = 3; - ReadWearerRV = ReadWearer( + if (CommitRV == 1 && EPDIssued == 1) + { + CommitRV = ReadWearer( WearerID, WearerIDLength, WearerName, WearerNameLength); - CommitRV = Commit(); + if(CommitRV==1) CommitRV = Commit(); if (CommitRV == 0) { Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); return ErrorReason; } - for (int i = 0; i < WearerIDLength; i++) - if (WearerID[i] == 0xb) WearerID[i] = '0'; else WearerID[i] |= 0x30; - + else { + for (int i = 0; i < WearerIDLength; i++) + if (WearerID[i] == 0xb) WearerID[i] = '0'; else WearerID[i] |= 0x30; + } } - else - ReadWearerRV = 4; - - - return 1; + return CommitRV; } WORD EpdBase::Epd2U::EPDReadExtraStatus() { - CommitRV = ReadA2ConfigStatus( + byBatADC = bySupplyADC = 0; + /*CommitRV = ReadA2ConfigStatus( &byBatADC, &bySupplyADC, &byStatus3, &byStatus4); + if (CommitRV == 1) CommitRV = Commit();*/ + if (CommitRV == 1) CommitRV = ReadCounts(&D1, &D2, &D3, &D4, &CountsClock); if (CommitRV == 1) CommitRV = Commit(); - if (CommitRV == 0) Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); + if (CommitRV == 1) CommitRV = ReadBaseCounts(&BaseD1, &BaseD2, &BaseD3, &BaseD4, &BaseCountsClock); + if (CommitRV == 1) CommitRV = Commit(); + if (CommitRV == 0) + Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); return CommitRV; } @@ -221,11 +218,17 @@ WORD EpdBase::Epd2U::TurnOn() WORD EpdBase::Epd2U::WriteCal() { + + if (K6 > 2000) + { CommitRV = 0; + return 0; + } Password = 9; //((BYTE *)&Password)[0] = 9; CommitRV = MFRLogin(Password); if (CommitRV == 1) CommitRV = Commit(); + if (CommitRV == 1) CommitRV = MFRWriteCalFactors(K1, K2, K3, K4, K5, K6); if (CommitRV == 1) CommitRV = Commit(); if (CommitRV == 0) Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); @@ -359,8 +362,13 @@ WORD EpdBase::Epd2U::Issue() if (OKRV) OKRV = Commit(); if (OKRV) OKRV = WriteWearerName(WearerName,strlen((char *)WearerName)); if (OKRV) OKRV = Commit(); - if (OKRV) OKRV = ClearFailFlag(); // all actions have been completed - if (OKRV) OKRV = Commit(); + if (OKRV) OKRV = BaseLineCounts(); + if (OKRV == 0) + { + Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); + } + ClearFailFlag(); // all actions have been completed + Commit(); if (!DetectorsOn) { OKRV = EpdOn(); OKRV=Commit(); Sleep(1000); @@ -373,7 +381,8 @@ WORD EpdBase::Epd2U::Issue() else { FlushBuffers(port); - Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); EndSession(0x5E, 40); + Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); + EndSession(0x5E, 40); } //DeinitComms(port); diff --git a/EpdBase/EpdBase.h b/EpdBase/EpdBase.h index 179e172..31215a4 100644 --- a/EpdBase/EpdBase.h +++ b/EpdBase/EpdBase.h @@ -125,6 +125,19 @@ namespace EpdBase WORD FB; WORD HG; + DWORD D1; + DWORD D2; + DWORD D3; + DWORD D4; + DWORD CountsClock; + + DWORD BaseD1; + DWORD BaseD2; + DWORD BaseD3; + DWORD BaseD4; + DWORD BaseCountsClock; + + //Config WORD CountDownTime; DWORD ReturnTime; diff --git a/EpdBaseClr/EpdBaseClr.cpp b/EpdBaseClr/EpdBaseClr.cpp index 378ea95..15ce14b 100644 --- a/EpdBaseClr/EpdBaseClr.cpp +++ b/EpdBaseClr/EpdBaseClr.cpp @@ -25,7 +25,7 @@ int EpdBaseClr::Epd2::Connect() b->CurrentDeviceID = 0; epd->StartDiscover(); DiscRV = epd->DiscRV; - if (epd->DiscRV == 1 && epd->DeviceCount > 0) b->CurrentDeviceID = epd->DeviceIDs[0]; + if (epd->DiscRV == 1 && epd->DeviceCount >= 0) b->CurrentDeviceID = epd->DeviceIDs[0]; return DiscRV; } @@ -81,11 +81,11 @@ int EpdBaseClr::Epd2::GetDoses() } - if (Hp10Peak > 0 && epd->Hp10Time > 0) + if (epd->Hp10Time > 0) Hp10PeakTime = System::DateTime::Now.AddSeconds(-(epd->EpdClock - epd->Hp10Time)); else Hp10PeakTime = System::Nullable();; - if (Hp07Peak>0 && epd->Hp07Time>0) + if (epd->Hp07Time>0) Hp07PeakTime = System::DateTime::Now.AddSeconds(-(epd->EpdClock - epd->Hp07Time )); else Hp10PeakTime = System::Nullable(); @@ -96,7 +96,9 @@ int EpdBaseClr::Epd2::GetDoses() K2 = epd->K2; K3 = epd->K3; K4 = epd->K4; - SG= epd->SG; + K5 = epd->K5; + K6 = epd->K6; + SG = epd->SG; BC = epd->SG; FB = epd->FB; HG = epd->HG; @@ -145,9 +147,22 @@ int EpdBaseClr::Epd2::SetIssued() int EpdBaseClr::Epd2::WriteCalibration() { + + epd->K1 = K1; + epd->K2 = K2; + epd->K3 = K3; epd->K4 = K4; - int rv= epd->WriteCal(); + + epd->K5 = K5; + epd->K6 = K6; + + //epd->K1 = 903; + //epd->K2 = 613; + //epd->K5 = 13100; + //epd->K6 = 1310; + + int rv = epd->WriteCal(); return rv; } @@ -190,5 +205,11 @@ int EpdBaseClr::Epd2::ReadExtraStatus() BatADC = epd->byBatADC; SupplyADC = epd->bySupplyADC; + D1 = epd->D1 - epd->BaseD1; + D2 = epd->D2 - epd->BaseD2; + D3 = epd->D3 - epd->BaseD3; + D4 = epd->D4 - epd->BaseD4; + CountsClock = epd->CountsClock; + return rv; } \ No newline at end of file diff --git a/EpdBaseClr/EpdBaseClr.h b/EpdBaseClr/EpdBaseClr.h index 5daa521..6f0e8df 100644 --- a/EpdBaseClr/EpdBaseClr.h +++ b/EpdBaseClr/EpdBaseClr.h @@ -68,8 +68,7 @@ namespace EpdBaseClr { int HG; int QualityData; - - + unsigned int D1, D2, D3, D4, CountsClock; int epdType; int alarmStatus ; diff --git a/eDosStation/EntryBadge.xaml.cs b/eDosStation/EntryBadge.xaml.cs index 4c8d2ad..ca497e1 100644 --- a/eDosStation/EntryBadge.xaml.cs +++ b/eDosStation/EntryBadge.xaml.cs @@ -46,19 +46,21 @@ namespace eDosStation _User = null; } - private void LoadDoses() + private bool LoadDoses() { + bool rv = true; ep.GetStatus(); if (ep.Issued) { MessageBox.Show("EPD is currently issued\nPlease take an other", "EDP", MessageBoxButton.OK, MessageBoxImage.Hand, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification); this.Close(); - return; + return false; } statusEPD.Text = $"EPD: {ep.b.CurrentDeviceID}"; ep.ReadTresholds(); + return rv; //ep.Hp07THDose = } @@ -66,7 +68,7 @@ namespace eDosStation { dispatcherTimer.Stop(); ep.Connect(); - if (ep.DiscRV == 1 && ep.b.CurrentDeviceID > 0) + if (ep.DiscRV == 1 && ep.b.CurrentDeviceID >= 0) { EpdFound = true; DoEPD(); @@ -91,51 +93,71 @@ namespace eDosStation private void DoEPD() { - LoadDoses(); - - - bool isBG = (ep.epdType == 3); - int? VisitID = null; - using (var co = new System.Data.SqlClient.SqlConnection(Properties.Settings.Default.RemoteSQL)) + if (LoadDoses()) { - using (var cmd1 = new SqlCommand("VisitInit", co)) + bool isBG = (ep.epdType == 3); + int? VisitID = null; + using (var co = new System.Data.SqlClient.SqlConnection(Properties.Settings.Default.RemoteSQL)) { - cmd1.CommandType = CommandType.StoredProcedure; - var pa = new SqlParameter("PersID", SqlDbType.Int, 4); pa.Value = _User.PersID; cmd1.Parameters.Add(pa); - pa = new SqlParameter("ID_Task", SqlDbType.Int, 4); pa.Value = CurTaskRow.ID_Task; cmd1.Parameters.Add(pa); - pa = new SqlParameter("Inst_CODE", SqlDbType.Int, 4); pa.Value = CurTaskRow.Inst_CODE; cmd1.Parameters.Add(pa); - pa = new SqlParameter("EPD_InternalID", SqlDbType.Int, 4); pa.Value = (int)ep.EpdID; cmd1.Parameters.Add(pa); - pa = new SqlParameter("isBG", SqlDbType.Bit, 4); pa.Value = isBG; cmd1.Parameters.Add(pa); - pa = new SqlParameter("ID_Visit", SqlDbType.Int, 4); pa.Direction = ParameterDirection.Output; cmd1.Parameters.Add(pa); - co.Open(); - cmd1.ExecuteNonQuery(); - VisitID = (int?)cmd1.Parameters["ID_Visit"].Value; - co.Close(); + using (var cmd1 = new SqlCommand("VisitInit", co)) + { + cmd1.CommandType = CommandType.StoredProcedure; + var pa = new SqlParameter("PersID", SqlDbType.Int, 4); pa.Value = _User.PersID; cmd1.Parameters.Add(pa); + pa = new SqlParameter("ID_Task", SqlDbType.Int, 4); pa.Value = CurTaskRow.ID_Task; cmd1.Parameters.Add(pa); + pa = new SqlParameter("Inst_CODE", SqlDbType.Int, 4); pa.Value = CurTaskRow.Inst_CODE; cmd1.Parameters.Add(pa); + pa = new SqlParameter("EPD_InternalID", SqlDbType.Int, 4); pa.Value = (int)ep.EpdID; cmd1.Parameters.Add(pa); + pa = new SqlParameter("isBG", SqlDbType.Bit, 4); pa.Value = isBG; cmd1.Parameters.Add(pa); + pa = new SqlParameter("ID_Visit", SqlDbType.Int, 4); pa.Direction = ParameterDirection.Output; cmd1.Parameters.Add(pa); + co.Open(); + cmd1.ExecuteNonQuery(); + VisitID = (int?)cmd1.Parameters["ID_Visit"].Value; + co.Close(); + } } + + ep.WearerID = VisitID.ToString(); + ep.WearerName = _User.PersID.ToString(); + + ep.Hp07RateOn = CurTaskRow.HP07RateON; + ep.Hp07RateOff = CurTaskRow.HP07RateOFF; + ep.Hp10Rate1On = CurTaskRow.HP10Rate1ON; + ep.Hp10Rate1Off = CurTaskRow.HP10Rate1ON; + ep.Hp10Rate2On = CurTaskRow.HP10Rate2ON; + ep.Hp10Rate2Off = CurTaskRow.HP10Rate2ON; + ep.Hp10THDose1 = CurTaskRow.Hp10Dose1; + ep.Hp10THDose2 = CurTaskRow.Hp10Dose2; + ep.Hp07THDose = CurTaskRow.Hp07Dose; + + int? kx = null; + if (!CurTaskRow.IsFNGain_ANGainValueNull()) kx = (int)CurTaskRow.FNGain_ANGainValue; + if (kx != null && (ep.K3 != kx || ep.K4 != kx)) + { + ep.K3 = ep.K4 = kx.Value; + + //ep.K1 = 903; + //ep.K2 = 613; + //ep.K3 = 90; + //ep.K4 = 90; + //ep.K5 = 13100; + //ep.K6 = 1310; + + //ep.K1 = 857; + //ep.K2 = 595; + //ep.K3 = 100; + //ep.K4 = 100; + //ep.K5 = 13100; + //ep.K6 = 1310; + + if (ep.K6!=1310) + { + MessageBox.Show("Alarm"); + } + + ep.WriteCalibration(); + } + + ep.SetIssued(); } - - ep.WearerID = VisitID.ToString(); - ep.WearerName = _User.PersID.ToString(); - - ep.Hp07RateOn = CurTaskRow.HP07RateON; - ep.Hp07RateOff = CurTaskRow.HP07RateOFF; - ep.Hp10Rate1On = CurTaskRow.HP10Rate1ON; - ep.Hp10Rate1Off = CurTaskRow.HP10Rate1ON; - ep.Hp10Rate2On = CurTaskRow.HP10Rate2ON; - ep.Hp10Rate2Off = CurTaskRow.HP10Rate2ON; - ep.Hp10THDose1 = CurTaskRow.Hp10Dose1; - ep.Hp10THDose2 = CurTaskRow.Hp10Dose2; - ep.Hp07THDose = CurTaskRow.Hp07Dose; - - int kx = (int)CurTaskRow.FNGain_ANGainValue; - if (ep.K3 != kx || ep.K4 != kx) - { - ep.K3 = ep.K4 = kx; - ep.WriteCalibration(); - - } - - ep.SetIssued(); } private void GetEPD() @@ -144,10 +166,9 @@ namespace eDosStation ep = new EpdBaseClr.Epd2(Properties.Settings.Default.comport); ep.Connect(); - if (ep.DiscRV == 1 && ep.b.CurrentDeviceID > 0) + if (ep.DiscRV == 1 && ep.b.CurrentDeviceID >= 0) { EpdFound = true; - DoEPD(); } if (!EpdFound) @@ -283,12 +304,12 @@ namespace eDosStation getTaskListViewSource.View.MoveCurrentToFirst(); - //Real + ////Real //t = new System.Threading.Thread(() => Starter()); //t.Start(); - //Debug + ////Debug _User = new User("0428790A0B4E80",string.Empty); Dispatcher.Invoke(AskTask); } diff --git a/eDosStation/EpdExit.xaml b/eDosStation/EpdExit.xaml index 14e22dd..8d533ee 100644 --- a/eDosStation/EpdExit.xaml +++ b/eDosStation/EpdExit.xaml @@ -10,7 +10,7 @@ - + @@ -18,17 +18,17 @@ - - - + + + - - + + - + diff --git a/eDosStation/EpdExit.xaml.cs b/eDosStation/EpdExit.xaml.cs index 39c1419..22fef9e 100644 --- a/eDosStation/EpdExit.xaml.cs +++ b/eDosStation/EpdExit.xaml.cs @@ -39,6 +39,17 @@ namespace eDosStation private void LoadDoses() { + if (dispatcherTimer == null) + { + dispatcherTimer = new DispatcherTimer(); + dispatcherTimer.Interval = new TimeSpan(0, 0, 2); + } else + { + dispatcherTimer.Stop(); + dispatcherTimer.Tick += DispatcherTimer_TickTO; ; + } + + ep.GetStatus(); if (!ep.Issued) { @@ -49,6 +60,7 @@ namespace eDosStation if (ep.alarmStatus != 0) DosePanel.Background = AlarmBrush; else DosePanel.Background = GreenBrush; + int rv = ep.ReadExtraStatus(); //D1 BaseD1 ... Wearer.Text = $"Wearer: {ep.WearerName}"; EpdVisit.Text = $"Visit: {ep.WearerID}"; @@ -81,6 +93,8 @@ namespace eDosStation pa = new SqlParameter("K2", SqlDbType.Int); pa.Value = ep.K2; cmd1.Parameters.Add(pa); pa = new SqlParameter("K3", SqlDbType.Int); pa.Value = ep.K3; cmd1.Parameters.Add(pa); pa = new SqlParameter("K4", SqlDbType.Int); pa.Value = ep.K4; cmd1.Parameters.Add(pa); + pa = new SqlParameter("K5", SqlDbType.Int); pa.Value = ep.K5; cmd1.Parameters.Add(pa); + pa = new SqlParameter("K6", SqlDbType.Int); pa.Value = ep.K6; cmd1.Parameters.Add(pa); pa = new SqlParameter("SG", SqlDbType.Int); pa.Value = ep.SG; cmd1.Parameters.Add(pa); pa = new SqlParameter("BC", SqlDbType.Int); pa.Value = ep.BC; cmd1.Parameters.Add(pa); pa = new SqlParameter("FB", SqlDbType.Int); pa.Value = ep.FB; cmd1.Parameters.Add(pa); @@ -88,6 +102,13 @@ namespace eDosStation pa = new SqlParameter("QualityData", SqlDbType.Int); pa.Value = ep.QualityData; cmd1.Parameters.Add(pa); + pa = new SqlParameter("D1", SqlDbType.Int); pa.Value = ep.D1; cmd1.Parameters.Add(pa); + pa = new SqlParameter("D2", SqlDbType.Int); pa.Value = ep.D2; cmd1.Parameters.Add(pa); + pa = new SqlParameter("D3", SqlDbType.Int); pa.Value = ep.D3; cmd1.Parameters.Add(pa); + pa = new SqlParameter("D4", SqlDbType.Int); pa.Value = ep.D4; cmd1.Parameters.Add(pa); + + + pa = new SqlParameter("alarmStatus", SqlDbType.Int); pa.Value = ep.alarmStatus; cmd1.Parameters.Add(pa); pa = new SqlParameter("otherAlarms", SqlDbType.Int); pa.Value = ep.otherAlarms; cmd1.Parameters.Add(pa); pa = new SqlParameter("errorStatus", SqlDbType.Int); pa.Value = ep.errorStatus; cmd1.Parameters.Add(pa); @@ -102,12 +123,18 @@ namespace eDosStation ep.SetDeIssued(); - HpDose07.Text = ep.Hp07.ToString()+" µSv"; - HpDose10.Text = ep.Hp10.ToString() + " µSv"; + + dispatcherTimer.Start(); return; } + private void DispatcherTimer_TickTO(object sender, EventArgs e) + { + dispatcherTimer.Stop(); + this.Close(); + } + private void Window_Loaded(object sender, RoutedEventArgs e) { ep = new EpdBaseClr.Epd2(Properties.Settings.Default.comport); @@ -116,6 +143,7 @@ namespace eDosStation { EpdFound = true; statusEPD.Content = $"EPD: {ep.b.CurrentDeviceID}"; + LoadDoses(); } if (!EpdFound) @@ -134,7 +162,7 @@ namespace eDosStation { dispatcherTimer.Stop(); ep.Connect(); - if (ep.DiscRV == 1 && ep.b.CurrentDeviceID > 0) + if (ep.DiscRV == 1 && ep.b.CurrentDeviceID >= 0) { EpdFound = true; statusEPD.Content = $"EPD: {ep.b.CurrentDeviceID}"; diff --git a/eDosStation/ShowEPDDose.xaml b/eDosStation/ShowEPDDose.xaml index c215789..efdb774 100644 --- a/eDosStation/ShowEPDDose.xaml +++ b/eDosStation/ShowEPDDose.xaml @@ -30,7 +30,7 @@ - + @@ -43,10 +43,7 @@ - - - - + diff --git a/eDosStation/ShowEPDDose.xaml.cs b/eDosStation/ShowEPDDose.xaml.cs index 0f1c45c..882d356 100644 --- a/eDosStation/ShowEPDDose.xaml.cs +++ b/eDosStation/ShowEPDDose.xaml.cs @@ -46,10 +46,10 @@ namespace eDosStation HP10AlarmDose2.Text = $"Alarm HP10(2) {ep.Hp10THDose2:0.00} µSv"; HP07AlarmDose.Text = $"Alarm HP07 {ep.Hp07THDose:0.00} µSv"; - ep.ReadExtraStatus(); + //ep.ReadExtraStatus(); - BatVolt.Text = $" {ep.BatADC * 16.0} mV"; - SupplyVolt.Text = $" {ep.SupplyADC* 16.0} mV"; + //BatVolt.Text = $" {ep.BatADC * 16.0} mV"; + //SupplyVolt.Text = $" {ep.SupplyADC* 16.0} mV"; //int Hp10THDose2; //int Hp07THDose; @@ -59,7 +59,7 @@ namespace eDosStation { ep = new EpdBaseClr.Epd2(Properties.Settings.Default.comport); ep.Connect(); - if (ep.DiscRV == 1 && ep.b.CurrentDeviceID > 0) + if (ep.DiscRV == 1 && ep.b.CurrentDeviceID >= 0) { EpdFound = true; statusEPD.Content = $"EPD: {ep.b.CurrentDeviceID}";