diff --git a/EpdBase/EpdBase.cpp b/EpdBase/EpdBase.cpp index 0c21598..eb18b3d 100644 --- a/EpdBase/EpdBase.cpp +++ b/EpdBase/EpdBase.cpp @@ -213,7 +213,7 @@ WORD EpdBase::Epd2U::ReadStatus() IssueCount = OperatingStatus = ErrorStatus = AlarmStatus = OtherAlarms = EEPROMBadSectors = 0; RealTime = EpdClock = OffTime = EpdID = 0; ErrorSource = ErrorReason = ErrorData = 0; - HardVersion = SoftVersion = FunctionFlags = 0; + HardVersion = HardVersionMinor= SoftVersion = FunctionFlags = 0; if (port == 0) { EpdID = 4567; diff --git a/EpdBase/EpdBase.h b/EpdBase/EpdBase.h index 88b7b26..29df418 100644 --- a/EpdBase/EpdBase.h +++ b/EpdBase/EpdBase.h @@ -79,7 +79,7 @@ namespace EpdBase //Identification DWORD EpdID=0; - WORD HardVersion; + WORD HardVersion, HardVersionMinor; WORD SoftVersion; WORD FunctionFlags; diff --git a/EpdBase3/Epd3Base.cpp b/EpdBase3/Epd3Base.cpp index a35d208..967db41 100644 --- a/EpdBase3/Epd3Base.cpp +++ b/EpdBase3/Epd3Base.cpp @@ -64,7 +64,7 @@ Epd3Base::Epd3U::Epd3U(int _comport) IssueCount = OtherAlarms = EEPROMBadSectors = 0; RealTime = EpdClock = OffTime = EpdID = 0; ErrorSource = ErrorReason = ErrorData = 0; - HardVersion = SoftVersion = FunctionFlags = 0; + HardVersion = HardVersionMinor= SoftVersion = FunctionFlags = 0; K1 = K2 = K3 = K4 = K4 = K6 = 0.0F; HG = SG = BC = FB = 0; @@ -183,7 +183,7 @@ int Epd3Base::Epd3U::OpenDev(DiscoveryId DeviceID) { Dll3RV = Connect3(epdComsHandle, DeviceID, true); } - else { Dll3RV = 0; } + else { Dll3RV = r_InvalidCommsHandle; } return Dll3RV; } @@ -193,7 +193,7 @@ int Epd3Base::Epd3U::ReOpenDev() { Dll3RV = Connect3(epdComsHandle, Epd, true); } - else { Dll3RV = 0; } + else { Dll3RV = r_InvalidCommsHandle; } //no handle .. return Dll3RV; } @@ -327,11 +327,12 @@ void Epd3Base::Epd3U::SetTime() //Only R3 int Epd3Base::Epd3U::ReadStatus() { int r; //0=ok + int step = 0; uint8_t length = 0; countsRead = 0; utc = 0; seconds = 0; memset(WearerID, 0, WearerIDLength + 1); memset(WearerName, 0, WearerNameLength + 1); - + r = SetResponseTimeout(epdComsHandle, 2000); Error = 0; if (port == 0) { EpdID = 4567; @@ -352,10 +353,10 @@ int Epd3Base::Epd3U::ReadStatus() IssueCount = OtherAlarms = EEPROMBadSectors = 0; RealTime = EpdClock = OffTime = EpdID = 0; ErrorSource = ErrorReason = ErrorData = 0; - HardVersion = SoftVersion = FunctionFlags = 0; + HardVersion = HardVersionMinor = SoftVersion = FunctionFlags = 0; - r = SetResponseTimeout(epdComsHandle, 2000); - + ReOpenDev(); + step = 1; token = BeginReadStatus(epdComsHandle, nullptr); r = Commit3(epdComsHandle); r = EndReadStatus(epdComsHandle, token, &epd3status); @@ -375,6 +376,7 @@ int Epd3Base::Epd3U::ReadStatus() MarkNumber_t MarkNumber; VersionNumber_t VersionNumber; + step = 2; token = BeginReadEpdIdentities(epdComsHandle, nullptr); r = Commit3(epdComsHandle); r = EndReadEpdIdentities(epdComsHandle, token, &EpdID32, (EpdTypes*)&EpdType, &capabilities, &MarkNumber, &VersionNumber, NULL, 0); @@ -387,10 +389,12 @@ int Epd3Base::Epd3U::ReadStatus() isBG = (EpdType == EpdTypes::Mk2BetaGamma || EpdType == EpdTypes::Mk3BetaGamma); isNG = (EpdType == EpdTypes::Mk2Neutron || EpdType == EpdTypes::Mk3Neutron); HardVersion = MarkNumber.Major; + HardVersionMinor = MarkNumber.Minor; SoftVersion = VersionNumber.Major; VersionOK = true; DecodeStatus(); //Alarm status... + step = 3; token = BeginReadCounts(epdComsHandle, nullptr, 0, nullptr); r = Commit3(epdComsHandle); r = EndReadCounts(epdComsHandle, token, Counts, MaxCounts, &countsRead, &utc, &seconds); @@ -403,6 +407,7 @@ int Epd3Base::Epd3U::ReadStatus() decodeCounters(countsRead); //HG,SG .. //Wearer + step = 4; if (EPDIssued) { IdString_t mk3WearerID; //Mk2 EPDs only support Name and Primary ID @@ -417,6 +422,7 @@ int Epd3Base::Epd3U::ReadStatus() if (mk3WearerID.Length > WearerNameLength) mk3WearerID.Length = WearerNameLength; memcpy(WearerName, mk3WearerID.Utf8String, mk3WearerID.Length); WearerName[mk3WearerID.Length] = 0; + step = 5; token = BeginReadWearerId(epdComsHandle, static_cast(WearerIdType::WearerId_Primary), nullptr); r = Commit3(epdComsHandle); r = EndReadWearerId(epdComsHandle, token, &mk3WearerID); @@ -434,10 +440,12 @@ int Epd3Base::Epd3U::ReadStatus() //Times //1601-01-01T00:00:00Z. //MK2 .. some utc... but no real time clock + step = 6; if (utc == 0) { token = BeginReadRTC(epdComsHandle, nullptr); r = Commit3(epdComsHandle); r = EndReadRTC(epdComsHandle, token, &utc); //EpdClock for MK2 + if (r) goto error; EpdClock = utc; utc = TimeFunctions::NowToEpdTime(true); } @@ -450,7 +458,10 @@ int Epd3Base::Epd3U::ReadStatus() FileTimeToSystemTime(&fUTC, &tRealTime); return r; + error: + Error = r; + ErrorStep = step; return r; } @@ -463,6 +474,7 @@ int Epd3Base::Epd3U::ConnectAndStatus(int tokenSourceTimeout) { WORD dllStatus; int rv = 1; + Error = 0; ErrorStep = 0; if (CommsInitialized == 0) StartCom(); if (CommsInitialized) { dllStatus = StartDiscover(tokenSourceTimeout); @@ -472,6 +484,7 @@ int Epd3Base::Epd3U::ConnectAndStatus(int tokenSourceTimeout) else rv = 0; } else rv = 1; + return rv; } /// @@ -692,6 +705,7 @@ WORD Epd3Base::Epd3U::ReadCal() decodeSensitivities(numSensitivities); return r; error: + Error = r; return r; } /// @@ -760,6 +774,7 @@ error: /// 0 OK WORD Epd3Base::Epd3U::ReadDoses() { + int step = 0; int32_t r = 1; eDosDose07Warning = eDosDose07Alarm = eDosDose10Warning = eDosDose10Alarm = eDosRate07Warning = eDosRate07Alarm = eDosRate10Warning = eDosRate10Alarm = eDosBatteryWarning = 0; @@ -777,13 +792,16 @@ WORD Epd3Base::Epd3U::ReadDoses() numDoses = 0; utc = 0; SetResponseTimeout(epdComsHandle, 2000); + step = 1; token = BeginReadDoses(epdComsHandle, nullptr, 0, nullptr); r = Commit3(epdComsHandle); if (!r) r = EndReadDoses(epdComsHandle, token, doses, MaxDoses, &numDoses, &utc); if (r != 0) goto error; + decodeDoses(numDoses); + step = 2; token = BeginReadTotalDoses(epdComsHandle, nullptr, 0, nullptr); r = Commit3(epdComsHandle); if (!r) r = EndReadTotalDoses(epdComsHandle, token, totdoses, MaxDoses, &numtotDoses, &utc); @@ -791,14 +809,17 @@ WORD Epd3Base::Epd3U::ReadDoses() goto error; decodetotDoses(numtotDoses); + step = 3; token = BeginReadQualityData(epdComsHandle, nullptr); r = Commit3(epdComsHandle); if (!r) r = EndReadQualityData(epdComsHandle, token, &quality); if (r != 0) goto error; + Knocks = quality.Knocks; Resets = quality.PowerCycles; + step = 4; token = BeginReadPeakRates(epdComsHandle, nullptr, 0, nullptr); r = Commit3(epdComsHandle); if (!r) r = EndReadPeakRates(epdComsHandle, token, peakRates, MaxPeakRates, &numRates); @@ -806,6 +827,7 @@ WORD Epd3Base::Epd3U::ReadDoses() goto error; decodePeakRates(numRates); + step = 5; r= ReadSensitivitiesAndTresholds(); //K1 .. K6, SG , BC ,FB , HG if (r != 0) goto error; @@ -882,34 +904,43 @@ WORD Epd3Base::Epd3U::PrepareForIssue() int rv = 0; int step = 0; if (port == 0) return 0; - - rv = ReOpenDev(); ++step; - if (WriteConfig32) - rv = WriteConfig(); - if (rv != 0) - goto error; - - ++step; + + step = 1; if (DetectorsOn) { - token = BeginEpdOnOff(epdComsHandle, 0, nullptr); rv = Commit3(epdComsHandle); if (!rv) rv = EndEpdOnOff(epdComsHandle, token); + rv = ReOpenDev(); } - ++step; - rv = ReOpenDev(); - ++step; - rv = ClearDoses(); - if (rv != 0) goto error; - ++step; + + step = 2; + if (WriteConfig32) { + rv = WriteConfig(); + if (rv != 0) + goto error; + } + + step = 3; + rv = ReOpenDev(); + + step = 4; + rv = ClearDoses(); + if (rv != 0) + goto error; + + step = 5; rv = ClearAlarms(); if (rv != 0) goto error; + + return rv; error: + ErrorStep = step; + Error = rv; return rv; } @@ -996,12 +1027,18 @@ error: WORD Epd3Base::Epd3U::DeIssue() { int r = 1; + int ErrorStep = 0; if (port == 0) return 0; if (CurrentDeviceID==0) return 0; + ReOpenDev(); + ErrorStep = 1; r = ClearAlarms(); + + ErrorStep = 2; r = ClearDoses(); + ErrorStep = 3; if (EPDIssued) { token = BeginDeissueEPD(epdComsHandle, nullptr); r = Commit3(epdComsHandle); @@ -1010,21 +1047,28 @@ WORD Epd3Base::Epd3U::DeIssue() r = 0; // goto error; } + ErrorStep = 4; token = BeginEpdOnOff(epdComsHandle, 0, nullptr); r = Commit3(epdComsHandle); r = EndEpdOnOff(epdComsHandle, token); if (r != 0) goto error; + + ErrorStep = 5; EndCom(); return r; + error: + Error = r; return r; } WORD Epd3Base::Epd3U::WriteWearer() { int32_t r = 0; + int step = 0; + token = BeginSetBaselineCounters(epdComsHandle, nullptr); r = Commit3(epdComsHandle); r = EndSetBaselineCounters(epdComsHandle, token); @@ -1038,6 +1082,7 @@ WORD Epd3Base::Epd3U::WriteWearer() { mk3WearerID.Length = 23; memcpy(mk3WearerID.Utf8String, WearerName, 23); + step = 1; token = BeginWriteWearerId(epdComsHandle, mk3WearerID, nullptr); r = Commit3(epdComsHandle); r = EndWriteWearerId(epdComsHandle, token); @@ -1048,6 +1093,7 @@ WORD Epd3Base::Epd3U::WriteWearer() { mk3WearerID.Length = 13; memcpy(mk3WearerID.Utf8String, WearerID, 13); + step = 2; token = BeginWriteWearerId(epdComsHandle, mk3WearerID, nullptr); r = Commit3(epdComsHandle); r = EndWriteWearerId(epdComsHandle, token); @@ -1056,7 +1102,9 @@ WORD Epd3Base::Epd3U::WriteWearer() { return r; - error: +error: + ErrorStep = step; + Error = r; return r; } /// @@ -1077,7 +1125,7 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) if (r != 0) goto error; } - ++step; //1 + /*if (isMK3) { token = BeginEnableProtectedSession_R3(epdComsHandle, 1, nullptr); @@ -1086,20 +1134,21 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) if (r != 0) goto error; }*/ - + step = 1; + ReOpenDev(); + + step = 2; r = WriteAlarmTresholds(); if (r != 0) goto error; - ++step;//2 + + step = 3; r = WriteWearer(); if (r != 0) goto error; - /*r = WriteCal(); - if (r != 0) - goto error;*/ - ++step;//3 + step = 4; //EPDIssued //if (!DetectorsOn) { token = BeginEpdOnOff(epdComsHandle, 1, nullptr); @@ -1111,19 +1160,22 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) r=0; //} - ++step;//4 + step = 5; + ReOpenDev(); + tries = 1; token = BeginIssueEPD(epdComsHandle, nullptr); r = Commit3(epdComsHandle); r = EndIssueEPD(epdComsHandle, token); if (r != 0) { tries++; + if (r == r_ErrorNotConnected) ReOpenDev(); Sleep(500); token = BeginIssueEPD(epdComsHandle, nullptr); r = Commit3(epdComsHandle); r = EndIssueEPD(epdComsHandle, token); } - if (r) + if (r) goto error; /*if (isMK3) { @@ -1134,18 +1186,21 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) goto error; }*/ - ++step;//5 + step = 6; if (isMK3) { r = DisCon(EndSessionControl); //stops protected session if (r) goto error; } - ++step; + + step = 7; EndCom(); return r; error: + ErrorStep = step; + Error = r; return r; } @@ -1195,8 +1250,6 @@ WORD Epd3Base::Epd3U::WriteCal() token = BeginWriteSensitivities_R2(epdComsHandle, nullptr, (uint16_t)K1, (uint16_t)K2, (uint16_t)K3, (uint16_t)K4, (uint16_t)K5, (uint16_t)K6); r = Commit3(epdComsHandle); - if (r != 0) - goto error; if (r != 0) goto error; r = EndWriteSensitivities_R2(epdComsHandle, token); @@ -1219,13 +1272,32 @@ int Epd3Base::Epd3U::GetAll(bool Closeconnection) return rv; } -int Epd3Base::Epd3U::GetAllDeissue() +int Epd3Base::Epd3U::GetAllDeissue(bool reconnect) { int rv = 0; + int step = 0; + + if (reconnect) + rv = ReOpenDev(); + if (!rv) goto error; + + step = 1; rv = ReadDoses(); //0 = success + if (!rv) goto error; //rv = ReadAlarmTresholds(); //0 = success + + step = 2; rv = EPDReadExtraStatus(); + if (!rv) goto error; + + step = 3; rv = DeIssue(); //does close + if (!rv) goto error; + + return rv; +error: + Error = rv; + ErrorStep = step; return rv; } @@ -1233,29 +1305,35 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain,float ChirpRate) { int rv = 0; int step = 0; + + ReOpenDev(); if (isNG) { + step = 1; float kx = gain; rv = ReadCal(); if (rv != 0 || K6 != 1310) { rv = 1; goto error; } - ++step; if (K3 != kx || K4 != kx) { + step = 2; K3 = K4 = kx; rv = WriteCal(); if (rv != 0) goto error; } } - ++step; + step = 3; SetChirp( ChirpRate); - ++step; + step = 4; rv = PrepareForIssue(); if (rv != 0) goto error; - ++step; + step = 5; if (!rv) rv = Issue(true); // data already loaded if (rv != 0) goto error; + return rv; error: + Error = rv; + ErrorStep = step; return rv; } @@ -1377,6 +1455,7 @@ int Epd3Base::Epd3U::SetChirp(float Sensitivity) { uint32_t r = 1; uint8_t enable = 0; + if (Sensitivity > 0.001F) { enable = 1; token = BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, nullptr); diff --git a/EpdBase3/Epd3Base.h b/EpdBase3/Epd3Base.h index 40e0656..01d3606 100644 --- a/EpdBase3/Epd3Base.h +++ b/EpdBase3/Epd3Base.h @@ -32,6 +32,7 @@ namespace Epd3Base { WORD WriteConfig32 = 1; WORD Error = 0; + WORD ErrorStep = 0; WORD ErrorSource; WORD ErrorReason; WORD ErrorData; @@ -108,7 +109,7 @@ namespace Epd3Base { //Identification DWORD EpdID = 0; - WORD HardVersion; + WORD HardVersion, HardVersionMinor; WORD SoftVersion; WORD FunctionFlags; @@ -266,7 +267,7 @@ namespace Epd3Base { void decodePeakRates(int count); public: int GetAll(bool Closeconnection); - int GetAllDeissue(); + int GetAllDeissue(bool reconnect); int IssueAndCheck(float gain, float ChirpRate); int SetChirp(float Sensitivity); WORD ReadCal(); diff --git a/EpdBaseClr/AssemblyInfo.cpp b/EpdBaseClr/AssemblyInfo.cpp index e8df1be..bda829e 100644 --- a/EpdBaseClr/AssemblyInfo.cpp +++ b/EpdBaseClr/AssemblyInfo.cpp @@ -11,7 +11,7 @@ using namespace System::Security::Permissions; [assembly:AssemblyConfigurationAttribute(L"")]; [assembly:AssemblyCompanyAttribute(L"SCK CEN")]; [assembly:AssemblyProductAttribute(L"EpdBaseClr")]; -[assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2019-2021 Luc Vandenbroucke")]; +[assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2019-2024 Luc Vandenbroucke")]; [assembly:AssemblyTrademarkAttribute(L"")]; [assembly:AssemblyCultureAttribute(L"")]; diff --git a/EpdBaseClr/EpdBaseClr.cpp b/EpdBaseClr/EpdBaseClr.cpp index 8836873..70f6321 100644 --- a/EpdBaseClr/EpdBaseClr.cpp +++ b/EpdBaseClr/EpdBaseClr.cpp @@ -182,7 +182,7 @@ int EpdBaseClr::Epd2::AfterGetStatus(EpdBase::Epd2U *epd) operatingStatus = epd->OperatingStatus; hasAlarm = epd->hasAlarm; EpdID = epd->EpdID; - HardVersion = epd->HardVersion; + HardVersion = epd->HardVersion; SoftVersion = epd->SoftVersion; FunctionFlags = epd->FunctionFlags; CountsClock = epd->EpdClock; @@ -207,6 +207,7 @@ int EpdBaseClr::Epd2::AfterGetStatus(Epd3Base::Epd3U* epd) hasAlarm = epd->hasAlarm; EpdID = epd->EpdID; HardVersion = epd->HardVersion; + HardVersionMinor = epd->HardVersionMinor; SoftVersion = epd->SoftVersion; FunctionFlags = epd->FunctionFlags; CountsClock = epd->EpdClock; @@ -339,7 +340,12 @@ int EpdBaseClr::Epd2::ClearAlarms() int EpdBaseClr::Epd2::SetDeIssued() { int rv = 0; - if (isMK3) rv = epd3->DeIssue(); + ErrorStep = 0; ErrorRV = 0; + if (isMK3) { + rv = epd3->DeIssue(); + ErrorStep = epd3->ErrorStep; + ErrorRV = epd3->Error; + } else rv = epd->DeIssue(); return rv; } @@ -348,7 +354,12 @@ int EpdBaseClr::Epd2::PrepareForIssue() { int rv = 0; PrepareForIssueError = 0; - if (isMK3) rv= epd3->PrepareForIssue(); + ErrorStep = 0; ErrorRV = 0; + if (isMK3) { + rv = epd3->PrepareForIssue(); + ErrorStep = epd3->ErrorStep; + ErrorRV = epd3->Error; + } else rv= epd->PrepareForIssue(); if (rv != 0) PrepareForIssueError = epd->Error; return rv; @@ -360,7 +371,12 @@ int EpdBaseClr::Epd2::PrepareForIssue() int EpdBaseClr::Epd2::SetIssued() { int rv = 0; - if (isMK3) rv=SetIssued(epd3); + ErrorStep = 0; ErrorRV = 0; + if (isMK3) { + rv=SetIssued(epd3); + ErrorStep = epd3->ErrorStep; + ErrorRV = epd3->Error; + } else rv=SetIssued(epd); return rv; } @@ -369,15 +385,15 @@ int EpdBaseClr::Epd2::BeforeSetIssued(Epd3Base::Epd3U* epd) int rv = 0; SetIssuedError = 0; epd->Hp07THDose = (float)Hp07THDose; - epd->Hp10THDose1 = Hp10THDose1; - epd->Hp10THDose2 = Hp10THDose2; + epd->Hp10THDose1 = (float)Hp10THDose1; + epd->Hp10THDose2 = (float)Hp10THDose2; - epd->Hp10Rate1On = Hp10Rate1On; - epd->Hp10Rate2On = Hp10Rate2On; - epd->Hp07RateOn = Hp07RateOn; - epd->Hp10Rate1Off = Hp10Rate1Off; - epd->Hp10Rate2Off = Hp10Rate2Off; - epd->Hp07RateOff = Hp07RateOff; + epd->Hp10Rate1On = (float)Hp10Rate1On; + epd->Hp10Rate2On = (float)Hp10Rate2On; + epd->Hp07RateOn = (float)Hp07RateOn; + epd->Hp10Rate1Off = (float)Hp10Rate1Off; + epd->Hp10Rate2Off = (float)Hp10Rate2Off; + epd->Hp07RateOff = (float)Hp07RateOff; memset(epd->WearerID, ' ', WearerIDLength); epd->WearerID[WearerIDLength] = 0; char* str1 = (char*)(void*)Runtime::InteropServices::Marshal::StringToHGlobalAnsi(WearerID); @@ -571,10 +587,10 @@ int EpdBaseClr::Epd2::AfterReadTresholds(Epd3Base::Epd3U* epd) Hp07Total = (double)epd->Hp07Total; K1 = (int)epd->K1; - K2 = epd->K2; - K3 = epd->K3; - K4 = epd->K4; - K5 = epd->K5; + K2 = (int)epd->K2; + K3 = (int)epd->K3; + K4 = (int)epd->K4; + K5 = (int)epd->K5; K6 = (int)epd->K6; SG = epd->SG; BC = epd->BC; @@ -640,9 +656,7 @@ int EpdBaseClr::Epd2::ReadExtraStatus(Epd3Base::Epd3U* epd) return rv; } - - -int EpdBaseClr::Epd2::AfterGetDoses(EpdBase::Epd2U* epd) +int EpdBaseClr::Epd2::AfterGetDoses(EpdBase::Epd2U* epd) { eDoshasAlarm = eDosHasFault = false; int rv = 0; @@ -709,7 +723,6 @@ int EpdBaseClr::Epd2::AfterGetDoses(EpdBase::Epd2U* epd) return rv; } - /// /// Get Doses and tresholds, and close if requested /// @@ -731,8 +744,9 @@ int EpdBaseClr::Epd2::GetAll(bool close) } return rv; } -int EpdBaseClr::Epd2::GetAllDeissue() +int EpdBaseClr::Epd2::GetAllDeissue(bool reconnect) { + ErrorRV = ErrorStep = 0; int rv = 0; if (!isMK3) { rv = epd->GetAllDeissue(); @@ -741,7 +755,9 @@ int EpdBaseClr::Epd2::GetAllDeissue() } else { - rv = epd3->GetAllDeissue(); + rv = epd3->GetAllDeissue(reconnect); + ErrorRV = epd3->Error; + ErrorStep = epd3->ErrorStep; rv = AfterGetDoses(epd3); rv = AfterReadTresholds(epd3); } @@ -761,7 +777,7 @@ int EpdBaseClr::Epd2::IssueAndCheck(float gain,float ChirpRate) } else { - BeforeSetIssued(epd3); + BeforeSetIssued(epd3); //geen interactie met epd rv = epd3->IssueAndCheck(gain, ChirpRate); } return rv; @@ -802,7 +818,7 @@ void EpdBaseClr::Epd2::InitData() otherAlarms = 0; errorStatus = 0; operatingStatus = 0; - HardVersion = 0; + HardVersion = 0; HardVersionMinor = 0; SoftVersion = 0; FunctionFlags = 0; CountsClock = 0; @@ -815,13 +831,20 @@ void EpdBaseClr::Epd2::InitData() int EpdBaseClr::Epd2::ConnectAndStatus() { int rv = 1; + int step = 0; + ErrorStep = ErrorRV = 0; + if (!onlyMK2) epd->EndCom(); //indien Mk2 + InitData(); //Sleep(100); - if (onlyMK2) + step = 1; + if (onlyMK2 || !epd3) rv = epd->ConnectAndStatus(tokenSourceTimeout); - else + else { rv = epd3->ConnectAndStatus(tokenSourceTimeout); + } + if (rv==0) { if (onlyMK2) { DeviceCount = epd->DeviceCount; @@ -860,8 +883,13 @@ int EpdBaseClr::Epd2::ConnectAndStatus() else { if (epd == nullptr) ConnectError = 99; else ConnectError = epd->Error; + goto error; } return rv; +error: + ErrorStep = step; + ErrorRV = rv; + return rv; } void EpdBaseClr::Epd2::WaitEpd() { @@ -879,7 +907,7 @@ void EpdBaseClr::Epd2::WaitEpd() _EpdTO(this, gcnew EpdTOEventArgs(0, 0)); // epd3->ConnectTries, epd3->ConnectTimerFired)); } else if (rv > 0 && _EpdError != nullptr) { - _EpdError(this, gcnew EpdErrorEventArgs(rv)); + _EpdError(this, gcnew EpdErrorEventArgs(rv,ErrorRV,ErrorStep)); } return; } diff --git a/EpdBaseClr/EpdBaseClr.h b/EpdBaseClr/EpdBaseClr.h index 32f1fac..92d0aec 100644 --- a/EpdBaseClr/EpdBaseClr.h +++ b/EpdBaseClr/EpdBaseClr.h @@ -19,6 +19,7 @@ namespace EpdBaseClr { public: int deviceID; bool isIssued, isBG, isMK3; + EpdEventArgs(int epdID, bool epdIssued, bool isBG, bool isMK3) : EventArgs() { @@ -43,10 +44,19 @@ namespace EpdBaseClr { { public: int returnValue; + int ErrorRV; int ErrorStep; EpdErrorEventArgs(int ReturnValue) : EventArgs() { + ErrorRV= ErrorStep = 0; this->returnValue = ReturnValue; } + EpdErrorEventArgs(int ReturnValue, int errorRV, int errorStep) : EventArgs() + { + this->ErrorRV = errorRV; + this->ErrorStep = errorStep; + this->returnValue = ReturnValue; + } + }; public ref class EpdTOEventArgs : EventArgs { @@ -156,6 +166,8 @@ namespace EpdBaseClr { int ConnectError; int ReadDosesRV; int DeviceCount = 0; + int ErrorStep=0; + int ErrorRV = 0; double Hp07; double Hp10; @@ -202,7 +214,7 @@ namespace EpdBaseClr { int errorStatus ; int operatingStatus ; unsigned int EpdID ; - int HardVersion ; + int HardVersion, HardVersionMinor; int SoftVersion ; int FunctionFlags ; @@ -296,13 +308,14 @@ namespace EpdBaseClr { int tokenSourceTimeout; int readRetries; System::Threading::Tasks::Task^ waitTask; + int SetDeIssued(); public: - int SetDeIssued(); + System::Threading::Tasks::Task^ Wait(int timeout, int Retries); void WaitEnd(); int GetAll(bool close); - int GetAllDeissue(); + int GetAllDeissue(bool reconnect); int IssueAndCheck(float gain, float ChirpRate); private: diff --git a/EpdBaseClr/EpdBaseClr.vcxproj b/EpdBaseClr/EpdBaseClr.vcxproj index 3c49e48..9cd1dad 100644 --- a/EpdBaseClr/EpdBaseClr.vcxproj +++ b/EpdBaseClr/EpdBaseClr.vcxproj @@ -125,7 +125,11 @@ RequireAdministrator + UseLinkTimeCodeGeneration + + %signer% $(TargetPath) + diff --git a/EpdBaseClr/app.rc b/EpdBaseClr/app.rc index d972c47..099c146 100644 Binary files a/EpdBaseClr/app.rc and b/EpdBaseClr/app.rc differ diff --git a/eDosStation/DataInterface.cs b/eDosStation/DataInterface.cs index a96923b..a4af149 100644 --- a/eDosStation/DataInterface.cs +++ b/eDosStation/DataInterface.cs @@ -281,6 +281,25 @@ namespace eDosStation if (oldState == ConnectionState.Closed) localConnection.Close(); } + + public int? ParaIntValue(SqlCommand cmd, string name) + { + int? rv = null; + if (cmd.Parameters.Contains(name) && cmd.Parameters[name].Value != DBNull.Value) rv = (int?)cmd.Parameters[name].Value; + return rv; + } + public bool? ParaBoolValue(SqlCommand cmd, string name) + { + bool? rv = null; + if (cmd.Parameters.Contains(name) && cmd.Parameters[name].Value != DBNull.Value) rv = (bool?)cmd.Parameters[name].Value; + return rv; + } + public string ParaStringValue(SqlCommand cmd, string name) + { + string rv = null; + if (cmd.Parameters.Contains(name) && cmd.Parameters[name].Value != DBNull.Value) rv = (string)cmd.Parameters[name].Value; + return rv; + } public int VisitInfo(int EpdVisitID, out string name) { int? rv = 0; @@ -292,10 +311,10 @@ namespace eDosStation checkCon(true); VisitInfoCommand.Connection = localConnection; VisitInfoCommand.ExecuteScalar(); - rv = (int?)VisitInfoCommand.Parameters["RETURN_VALUE"].Value; - bool? hasExited = (bool?)VisitInfoCommand.Parameters["hasExited"].Value; - bool? isManualExit = (bool?)VisitInfoCommand.Parameters["isManualExit"].Value; - name = (string )VisitInfoCommand.Parameters["name"].Value; + rv = ParaIntValue(VisitInfoCommand, "RETURN_VALUE"); + bool? hasExited = ParaBoolValue(VisitInfoCommand, "hasExited"); + bool? isManualExit = ParaBoolValue(VisitInfoCommand, "isManualExit"); + name = ParaStringValue(VisitInfoCommand, "name"); } catch (System.Exception ex) { diff --git a/eDosStation/EntryBadge.xaml.cs b/eDosStation/EntryBadge.xaml.cs index c51e6ab..95060ce 100644 --- a/eDosStation/EntryBadge.xaml.cs +++ b/eDosStation/EntryBadge.xaml.cs @@ -15,10 +15,7 @@ namespace eDosStation public partial class EntryBadge : Window { - private enum eEntryState { none, getuser, gettask, getepd, epdtimeout, epdError, epdOK, final, - NotAllowed, - Initial - } + private enum eEntryState { none, getuser, gettask, getepd, epdtimeout, epdError, epdOK, final, NotAllowed, Initial } private eEntryState EntryState; bool taskLoading = false; const int PageTimeout = 10000; @@ -64,7 +61,7 @@ namespace eDosStation EntryState = eEntryState.epdError; System.Diagnostics.Debug.WriteLine("ERROR "); Dispatcher.InvokeAsync(() => { - MessageBox.Show($"EPD Error {e.returnValue}"); + MessageBox.Show($"EPD Error {e.returnValue} {e.ErrorRV} {e.ErrorStep}"); Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); }); }); } @@ -550,6 +547,7 @@ namespace eDosStation } EpdReading = false; dispatcherTimer?.Stop(); + dispatcherTimer = null; this.Close(); } @@ -651,14 +649,12 @@ namespace eDosStation else ShowAndEnd(null,null); } } - private void ShowAndEnd(object sender, EventArgs e) { dispatcherTimer?.Stop(); dispatcherTimer = null; endPage(); } - private void CountDown(object sender, EventArgs e) { double v = (ResultTime - DateTime.Now).TotalSeconds; diff --git a/eDosStation/EpdExit.xaml b/eDosStation/EpdExit.xaml index 9e269a7..252efda 100644 --- a/eDosStation/EpdExit.xaml +++ b/eDosStation/EpdExit.xaml @@ -62,7 +62,7 @@ - + diff --git a/eDosStation/EpdExit.xaml.cs b/eDosStation/EpdExit.xaml.cs index c873b00..8dabaa9 100644 --- a/eDosStation/EpdExit.xaml.cs +++ b/eDosStation/EpdExit.xaml.cs @@ -27,8 +27,6 @@ namespace eDosStation thisStation = curStation; dataInterface = curStation.dataInterface; - - } private void CountDown(object sender, EventArgs e) @@ -61,7 +59,6 @@ namespace eDosStation EpdReading = false; dispatcherTimer?.Stop(); Dispatcher.InvokeAsync(() => LoadDoses()); - } private void startEPDRead() @@ -115,7 +112,7 @@ namespace eDosStation { Dispatcher.InvokeAsync(() => { - rv = ep.SetDeIssued(); + //rv = ep.SetDeIssued(); endWithMessage("This EPD is not issued"); }); return; @@ -126,9 +123,10 @@ namespace eDosStation return; } - if (int.TryParse(ep.WearerID, out EpdVisitID) && EpdVisitID % 100 != thisStation.ID_Station) + int station = EpdVisitID % 100; + if (int.TryParse(ep.WearerID, out EpdVisitID) && station != thisStation.ID_Station) { - endWithMessage($"This EPD was issued on another station (ID:{EpdVisitID % 100})"); + endWithMessage($"This EPD was issued on another station (ID:{station})"); return; } @@ -137,11 +135,10 @@ namespace eDosStation int Exited = dataInterface.VisitInfo(EpdVisitID, out WearerFullName); if (Exited>0) { - endWithMessage($"This EPD was already returned or had a manual exit (ID:{EpdVisitID % 100})"); + endWithMessage($"This EPD was already returned or had a manual exit (ID:{station})"); return; } - //bool NoTimeout = false; if (ep.alarmStatus != 0) @@ -162,9 +159,9 @@ namespace eDosStation ok.IsSelected = true; } - rv = ep.GetAllDeissue(); + rv = ep.GetAllDeissue(true); //reconnect if (rv != 0) - MessageBox.Show($"GetDoses {rv} er:{ep.GetDosesError}"); + MessageBox.Show($"GetDoses {rv} rv:{ep.ErrorRV} step:{ep.ErrorStep} er:{ep.GetDosesError}"); Wearer.Text = $"{ep.WearerName}"; Wearer.Name = WearerFullName; @@ -190,7 +187,7 @@ namespace eDosStation } l.Dispose(); } - Name.Text = ""; + PersonName.Text = string.Empty; return; } @@ -215,19 +212,17 @@ namespace eDosStation catch (System.Exception ex) { thisStation.splunkLog.WriteException(null, "StartEpd", ex); - MessageBox.Show($"{ex.Message}"); + MessageBox.Show(ex.Message); ep = null; } - - if (ep!=null) + if (ep != null) { ResultTime = DateTime.Now.AddSeconds(thisStation.ScreenEPDTimeout); - Progress.Value= Progress.Maximum = thisStation.ScreenEPDTimeout; + Progress.Value = Progress.Maximum = thisStation.ScreenEPDTimeout; dispatcherTimer.Start(); startEPDRead(); } - } private void BCloseExit_Click(object sender, RoutedEventArgs e) diff --git a/eDosStation/MainWindow.xaml.cs b/eDosStation/MainWindow.xaml.cs index 83f5fd0..e2a98b7 100644 --- a/eDosStation/MainWindow.xaml.cs +++ b/eDosStation/MainWindow.xaml.cs @@ -10,6 +10,7 @@ namespace eDosStation /// public partial class MainWindow : Window { + const string className = "MainWindow"; public DataInterface dataInterface; public Station thisStation; DispatcherTimer bgTimer; @@ -25,10 +26,10 @@ namespace eDosStation private void Button_Click(object sender, RoutedEventArgs e) { string ers = string.Empty; + if (thisStation.RestartCom && (thisStation.RestartComFirst == true)) { - ers = devcon.Restart(); - if (!string.IsNullOrEmpty(ers)) thisStation.splunkLog?.WriteSplunkLog("Restart USB error", LSWLib.CLog.iseverity.err, null, ers); ; + thisStation.DeviceRestart(); } var w = new ShowEPDDose(thisStation); @@ -36,64 +37,65 @@ namespace eDosStation if (thisStation.RestartCom && (thisStation.RestartComFirst == true)) { - ers = devcon.Restart(); - if (!string.IsNullOrEmpty(ers)) thisStation.splunkLog?.WriteSplunkLog("Restart USB error", LSWLib.CLog.iseverity.err, null, ers); ; + thisStation.DeviceRestart(); } - thisStation.splunkLog?.WriteSplunkLog("Show Dose done", LSWLib.CLog.iseverity.info); } private void BEntry_Click(object sender, RoutedEventArgs e) { + const string module = "BEntry_Click"; string ers = string.Empty; - thisStation.splunkLog?.WriteSplunkLog("Entry", LSWLib.CLog.iseverity.info); + thisStation.splunkLog?.WriteSplunkLog(module, LSWLib.CLog.iseverity.info); + string step = "DeviceRestart"; try { if (thisStation.RestartCom && (thisStation.RestartComFirst == true)) { - ers = devcon.Restart(); - if (!string.IsNullOrEmpty(ers)) thisStation.splunkLog?.WriteSplunkLog("Restart USB error", LSWLib.CLog.iseverity.err, null, ers); ; + thisStation.DeviceRestart(); } } catch (System.Exception ex) { - thisStation.splunkLog.WriteException(null, "Devcon, rqstart 2", ex); + thisStation.splunkLog?.WriteException(module, step, ex); } + step = "EntryBadge"; try { var w = new EntryBadge(thisStation); w.ShowDialog(); #if SimulateEPD - simulData = w.simulData; + simulData = w.simulData; #endif w = null; } catch (System.Exception ex) { - thisStation.splunkLog.WriteException(null, "Start entry", ex); + thisStation.splunkLog?.WriteException(module, step, ex); } + + step = "DeviceReset2"; try { if (thisStation.RestartCom && !(thisStation.RestartComFirst == true)) { - ers = devcon.Restart(); - if (!string.IsNullOrEmpty(ers)) thisStation.splunkLog?.WriteSplunkLog("Restart USB error", LSWLib.CLog.iseverity.err, null, ers); ; + thisStation.DeviceRestart(); } } catch (System.Exception ex) { - thisStation.splunkLog.WriteException(null, "Devcon, rqstart 2", ex); + thisStation.splunkLog.WriteException(module, step, ex); } thisStation.splunkLog?.WriteSplunkLog("Entry done", LSWLib.CLog.iseverity.info); } private void BExit_Click(object sender, RoutedEventArgs e) { + const string module = "BExit_Click"; string ers = string.Empty; - thisStation.splunkLog?.WriteSplunkLog("Exit", LSWLib.CLog.iseverity.info); - if (thisStation.RestartCom && thisStation.RestartComFirst==true) + thisStation.splunkLog?.WriteSplunkLog(module, LSWLib.CLog.iseverity.info); + if (thisStation.RestartCom && thisStation.RestartComFirst) { - ers = devcon.Restart(); - if (!string.IsNullOrEmpty(ers)) thisStation?.splunkLog.WriteSplunkLog("Restart USB error", LSWLib.CLog.iseverity.err, null, ers); ; + ers = thisStation.DeviceRestart(); } var w = new EpdExit(thisStation); @@ -102,17 +104,23 @@ namespace eDosStation #endif w.ShowDialog(); w = null; - if (thisStation.RestartCom && !(thisStation.RestartComFirst==true)) + if (thisStation.RestartCom && !(thisStation.RestartComFirst)) { - ers = devcon.Restart(); - if (!string.IsNullOrEmpty(ers)) thisStation?.splunkLog.WriteSplunkLog("Restart USB error", LSWLib.CLog.iseverity.err, null, ers); ; + ers = thisStation.DeviceRestart(); } thisStation.splunkLog?.WriteSplunkLog("Exit Done", LSWLib.CLog.iseverity.info); } private void MenuItem_Click(object sender, RoutedEventArgs e) { - Settings s = new Settings(thisStation); - s.ShowDialog(); + const string module = "MenuSettings"; + try + { + var s = new Settings(thisStation); + s.ShowDialog(); + } catch (System.Exception ex) + { + thisStation?.splunkLog?.WriteException(className, module, ex); + } } private void setLocalStatus() { diff --git a/eDosStation/Properties/AssemblyInfo.cs b/eDosStation/Properties/AssemblyInfo.cs index f628de4..35a5bfd 100644 --- a/eDosStation/Properties/AssemblyInfo.cs +++ b/eDosStation/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.14.0.0")] -[assembly: AssemblyFileVersion("2.14.0.0")] +[assembly: AssemblyVersion("2.15.0.0")] +[assembly: AssemblyFileVersion("2.15.0.0")] diff --git a/eDosStation/Resources/BuildDate.txt b/eDosStation/Resources/BuildDate.txt index 6baa7e1..142e2b9 100644 --- a/eDosStation/Resources/BuildDate.txt +++ b/eDosStation/Resources/BuildDate.txt @@ -1 +1 @@ -Thu 05/16/2024 15:51:50.20 +Fri 05/24/2024 15:12:34.56 diff --git a/eDosStation/Settings.xaml.cs b/eDosStation/Settings.xaml.cs index 068b336..f618f9f 100644 --- a/eDosStation/Settings.xaml.cs +++ b/eDosStation/Settings.xaml.cs @@ -15,7 +15,7 @@ namespace eDosStation public byte Value { get; set; } public beepclass(string txt, byte val) { - Text = txt; Value = val; + Text = txt; Value = val; } } @@ -24,78 +24,142 @@ namespace eDosStation public string Text { get; set; } public readerclass(string txt) { - Text = txt; + Text = txt; } } public partial class Settings : Window { - public LSWDesfirePublic.CCard dfReader = null; - private System.Threading.Tasks.Task ReaderTask = null; - User _User; + const string className = "Settings"; + //private System.Threading.Tasks.Task ReaderTask; + //User _User; Station thisStation; - ObservableCollection beepValues = new ObservableCollection(); - ObservableCollection readerValues = new ObservableCollection(); - public Settings( Station tStation) + ObservableCollection beepValues; + ObservableCollection readerValues; + public Settings(Station tStation) { - thisStation = tStation; - InitializeComponent(); + try + { + //_User = null; + thisStation = null; + //dfReader = null; ReaderTask = null; + beepValues = new ObservableCollection(); + readerValues = new ObservableCollection(); + InitializeComponent(); + if (tStation != null) thisStation = tStation; + if (tStation != null) tStation.splunkLog?.WriteSplunkLog(className, LSWLib.CLog.iseverity.info, "created"); + } + catch (System.Exception ex) + { + if (tStation != null) tStation.splunkLog?.WriteException(className, className, ex); + } } private void BOK_Click(object sender, RoutedEventArgs e) { - string thiscom = cComPort.SelectedItem.ToString().Replace("COM",""); - thisStation.ComPort = int.Parse(thiscom); - - DataSet1.InstallationRow ir = CIns1.SelectedItem as DataSet1.InstallationRow; - thisStation.Inst_CODE1 = ir.Inst_CODE; - thisStation.Inst_Name1 = ir.InstallationName; - - ir = CIns2.SelectedItem as DataSet1.InstallationRow; - thisStation.Inst_CODE2 = ir.Inst_CODE; - thisStation.Inst_Name2 = ir.InstallationName; - - thisStation.useBeep = (byte)tBeep.SelectedValue; - - if (cbValidation.IsChecked == null) cbValidation.IsChecked = false; - thisStation.useTestButtons = cbValidation.IsChecked.Value; - thisStation.Reader = (string)cbReaders.SelectedValue; - thisStation.checkUser = cbCheckUsers.IsChecked != null ? cbCheckUsers.IsChecked.Value : false; - thisStation.RestartCom = cbRestartCom.IsChecked != null ? cbRestartCom.IsChecked.Value : false; - thisStation.EPDTimeOut = int.Parse(tEPDTimeout.Text); - - thisStation.OnlyMK2 = cbOnlyMK2.IsChecked != null ? cbOnlyMK2.IsChecked.Value : false; - - thisStation.RestartComFirst = cbRestartComFirst.IsChecked != null ? cbRestartComFirst.IsChecked.Value : false; - - thisStation.AllowMultipleEPD = cbAllowMultipleEPD.IsChecked != null ? cbAllowMultipleEPD.IsChecked.Value : false; - - //thisStation.WriteConfig32 = cbWriteConfig32.IsChecked != null ? cbWriteConfig32.IsChecked.Value : false; - thisStation.Update(); - this.Close(); - if (thisStation.Error > 0) + const string module = "BOK_Click"; + string step="init"; + try { - MessageBox.Show($"Error {thisStation.ErrorMessage}"); + step = "comport"; + string thiscom = cComPort.SelectedItem.ToString().Replace("COM", string.Empty); + thisStation.ComPort = int.Parse(thiscom); + + DataSet1.InstallationRow ir; + step = "code1"; + ir = CIns1.SelectedItem as DataSet1.InstallationRow; + if (ir != null) + { + thisStation.Inst_CODE1 = ir.Inst_CODE; + thisStation.Inst_Name1 = ir.InstallationName; + } else + { + thisStation.Inst_CODE1 = 0; + thisStation.Inst_Name1 = string.Empty; + } + + step = "code2"; + ir = CIns2.SelectedItem as DataSet1.InstallationRow; + if (ir != null) + { + thisStation.Inst_CODE2 = ir.Inst_CODE; + thisStation.Inst_Name2 = ir.InstallationName; + } + else + { + thisStation.Inst_CODE2 = 0; + thisStation.Inst_Name2 = string.Empty; + } + + step = "usebeep"; + if (tBeep.HasItems && tBeep.SelectedIndex != -1) { + thisStation.useBeep = (byte)tBeep.SelectedValue; + } else + thisStation.useBeep = (byte)0b00011110; + + step = "validation++"; + if (cbValidation.IsChecked == null) cbValidation.IsChecked = false; + thisStation.useTestButtons = cbValidation.IsChecked.Value; + step = "Reader"; + thisStation.Reader = (string)cbReaders.SelectedValue; + step = "checkUser"; + thisStation.checkUser = cbCheckUsers.IsChecked != null ? cbCheckUsers.IsChecked.Value : false; + thisStation.RestartCom = cbRestartCom.IsChecked != null ? cbRestartCom.IsChecked.Value : false; + step = "EPDTimeOut"; + thisStation.EPDTimeOut = int.Parse(tEPDTimeout.Text); + + step = "OnlyMK2"; + thisStation.OnlyMK2 = cbOnlyMK2.IsChecked != null ? cbOnlyMK2.IsChecked.Value : false; + + step = "RestartComFirst"; + thisStation.RestartComFirst = cbRestartComFirst.IsChecked != null ? cbRestartComFirst.IsChecked.Value : false; + + step = "AllowMultipleEPD"; + thisStation.AllowMultipleEPD = cbAllowMultipleEPD.IsChecked != null ? cbAllowMultipleEPD.IsChecked.Value : false; + + //thisStation.WriteConfig32 = cbWriteConfig32.IsChecked != null ? cbWriteConfig32.IsChecked.Value : false; + step = "Update"; + thisStation.Update(); + + if (thisStation.Error > 0) + { + thisStation?.splunkLog?.WriteSplunkLog(module, LSWLib.CLog.iseverity.err, thisStation.ErrorMessage); + MessageBox.Show($"Error {thisStation.ErrorMessage}"); + } + } + catch (System.Exception ex) + { + thisStation?.splunkLog?.WriteException(module, step, ex); + } + thisStation?.splunkLog?.WriteSplunkLog(module, LSWLib.CLog.iseverity.info, "done"); + this.Close(); } private void BCancel_Click(object sender, RoutedEventArgs e) { + const string module = "BCancel_Click"; + thisStation?.splunkLog?.WriteSplunkLog(module, LSWLib.CLog.iseverity.info, "saved"); this.Close(); } private void Window_Loaded(object sender, RoutedEventArgs e) { + string step = "devcon"; string eDosCom = null; - try { - eDosCom = devcon.FindEdosCom(); + eDosCom = thisStation?.find(); + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info, eDosCom); } - catch { } + catch (System.Exception ex) + { + thisStation?.splunkLog?.WriteException(className, step, ex); + } + + step = "GetReaderList"; try { - using (var a = new LSWDesfirePublic.CCard()) { a.GetReaderList(); @@ -103,30 +167,46 @@ namespace eDosStation } cbReaders.ItemsSource = readerValues; cbReaders.SelectedValue = thisStation.Reader; - } catch (System.Exception ex) - { - MessageBox.Show($"Readers err {ex.Message}"); - } - - - try { - foreach (string cn in System.IO.Ports.SerialPort.GetPortNames()) - { - cComPort.Items.Add(cn); - } + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); } catch (System.Exception ex) { - MessageBox.Show($"Serial err {ex.Message}"); + thisStation?.splunkLog?.WriteException(className, step, ex); + MessageBox.Show($"Readers err {ex.Message}"); } - beepValues.Add(new beepclass("Loud High freq Beep" , 0b00010111 )); - beepValues.Add(new beepclass("Loud Low freq Beep" , 0b00011111 )); - beepValues.Add(new beepclass("Normal High freq Beep", 0b00010110 )); - beepValues.Add(new beepclass("Normal Low freq Beep" , 0b00011110 )); - beepValues.Add(new beepclass("No Beep (only led)" , 0b00011010 )); + step = "GetPortNames"; + try + { + foreach (string cn in System.IO.Ports.SerialPort.GetPortNames()) + { + cComPort.Items.Add(cn); + } + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); + } + catch (System.Exception ex) + { + thisStation?.splunkLog?.WriteException(className, step, ex); + MessageBox.Show($"Serial err {ex.Message}"); + } + step = "BeepValues"; + try + { + beepValues.Add(new beepclass("Loud High freq Beep", 0b00010111)); + beepValues.Add(new beepclass("Loud Low freq Beep", 0b00011111)); + beepValues.Add(new beepclass("Normal High freq Beep", 0b00010110)); + beepValues.Add(new beepclass("Normal Low freq Beep", 0b00011110)); + beepValues.Add(new beepclass("No Beep (only led)", 0b00011010)); + tBeep.ItemsSource = beepValues; + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); + } + catch (System.Exception ex) + { + thisStation?.splunkLog?.WriteException(className, step, ex); + MessageBox.Show($"Serial err {ex.Message}"); + } // 7 6 5 4 3210 // 1 0 0 1 1 1 0 0 1 1 1 0 0001 @@ -160,17 +240,28 @@ namespace eDosStation //beepValues.Add(new beepclass("Beep", 22)); //beepValues.Add(new beepclass("No Beep", 18)); - tBeep.ItemsSource = beepValues; - string thisComport = $"COM{thisStation.ComPort}"; - if (!string.IsNullOrEmpty(eDosCom)) thisComport = eDosCom; - if (!cComPort.Items.Contains(thisComport)) cComPort.Items.Add(thisComport); - cComPort.SelectedItem = thisComport; + step = "Select com"; + try + { + string thisComport = $"COM{thisStation.ComPort}"; + if (!string.IsNullOrEmpty(eDosCom)) thisComport = eDosCom; + if (!cComPort.Items.Contains(thisComport)) cComPort.Items.Add(thisComport); + cComPort.SelectedItem = thisComport; + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); + } + catch (System.Exception ex) + { + thisStation?.splunkLog?.WriteException(className, step, ex); + MessageBox.Show($"Serial err {ex.Message}"); + } - try { - DataSet1.InstallationDataTable tbInstallations; - using (var ta = new DataSet1TableAdapters.InstallationTableAdapter()) - tbInstallations = ta.GetData(); + step = "tbInstallations"; + try + { + DataSet1.InstallationDataTable tbInstallations; + using (var ta = new DataSet1TableAdapters.InstallationTableAdapter()) + tbInstallations = ta.GetData(); tbInstallations.AddInstallationRow(0, "-"); foreach (DataSet1.InstallationRow r in tbInstallations.Rows) { @@ -179,112 +270,123 @@ namespace eDosStation } CIns1.SelectedValue = thisStation.Inst_CODE1; CIns2.SelectedValue = thisStation.Inst_CODE2; + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); } catch (System.Exception ex) { - MessageBox.Show($"SerINstallations err {ex.Message}"); + thisStation?.splunkLog?.WriteException(className, step, ex); + MessageBox.Show($"SetINstallations err {ex.Message}"); } + + step = "setCheckBoxes"; try { tBeep.SelectedValue = thisStation.useBeep; cbValidation.IsChecked = thisStation.useTestButtons; - cbCheckUsers.IsChecked= thisStation.checkUser; + cbCheckUsers.IsChecked = thisStation.checkUser; cbRestartCom.IsChecked = thisStation.RestartCom; tEPDTimeout.Text = thisStation.EPDTimeOut.ToString(); cbRestartComFirst.IsChecked = thisStation.RestartComFirst; cbOnlyMK2.IsChecked = thisStation.OnlyMK2; cbAllowMultipleEPD.IsChecked = thisStation.AllowMultipleEPD; + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); } catch (System.Exception ex) { + thisStation?.splunkLog?.WriteException(className, step, ex); MessageBox.Show($"Settings err {ex.Message}"); } - try { + step = "CheckCon"; + try + { bool rv = thisStation.dataInterface.checkCon(false); + thisStation.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); } catch (System.Exception ex) { + thisStation?.splunkLog?.WriteException(className, step, ex); MessageBox.Show($"Interface check {ex.Message}"); } - //StartReader(); + step = "endLoaded"; + thisStation?.splunkLog?.WriteSplunkLog(step, LSWLib.CLog.iseverity.info); } #region BadgeReader - public void StartReader() - { - if (dfReader == null) - { - dfReader = new LSWDesfirePublic.CCard(); - dfReader.GetReaderList(); - if (dfReader.readersList.Contains(thisStation.Reader)) - { - dfReader.SetReader(thisStation.Reader); - dfReader.Badged += DFReader_Badged; - dfReader.BadgeTO += DfReader_BadgeTO; - dfReader.BadgeError += DfReader_BadgeError; - ReaderTask = dfReader.Wait(5000, 10); - } - else - { - StringBuilder er = new StringBuilder($"Badgelezer \"{thisStation.Reader}\" niet gevonden!.\nDeze lezers zijn beschikbaar:\n"); - dfReader.GetReaderList(); - foreach (string r in dfReader.readersList) er.AppendLine($"-> {r}"); - MessageBox.Show(er.ToString(), "Badge Lezer", MessageBoxButton.OK, MessageBoxImage.Exclamation); - dfReader.Dispose(); dfReader = null; - } - } - } - void CheckBadge() - { - thisStation.splunkLog?.KvSet(LSWLib.CLog.skeys.persID, _User.PersID); - thisStation.splunkLog?.WriteSplunkLog("CheckBadge", LSWLib.CLog.iseverity.info, _User.PersID.ToString(), null); - //Dispatcher.InvokeAsync(() => { ShowUserInfo(); }); - } - public void showBadge(int persID, string csn) - { - //CSN.Text = csn; - //Site.Text = string.Empty; - //Code.Text = persID.ToString(); - _User = thisStation.dataInterface.GetUser(null, persID.ToString(), true); - Dispatcher.InvokeAsync(CheckBadge, DispatcherPriority.Normal); - } - private void DfReader_BadgeError(LSWDesfirePublic.CCard Sender, LSWDesfirePublic.BadgeErrorEventArgs e) - { - // endPage(); - } - private void DfReader_BadgeTO(LSWDesfirePublic.CCard Sender, EventArgs e) - { - //this.Dispatcher.InvokeAsync(new Action(() => endPage()), DispatcherPriority.Normal); - } - private void DFReader_Badged(LSWDesfirePublic.CCard Sender, LSWDesfirePublic.BadgeEventArgs e) - { - if (e.PersID > 0) - this.Dispatcher.InvokeAsync(new Action(() => showBadge(e.PersID, e.UID)), DispatcherPriority.Background); - else - { - string msg = $"No PersID found on badge {e.UID}"; - MessageBox.Show(msg, "Error", MessageBoxButton.OK); - thisStation.splunkLog?.WriteSplunkLog("Badged", LSWLib.CLog.iseverity.warning, null, msg); - } - } - private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - //try - //{ - // if (dfReader != null ) - // { - // dfReader.WaitEnd(); - // System.Threading.Thread.Sleep(2000); - // dfReader.Dispose(); - // dfReader = null; - // } - //} - //catch (System.Exception ex) - //{ - // System.Diagnostics.Debug.WriteLine(ex.Message); - //} - } + //public void StartReader() + //{ + // if (dfReader == null) + // { + // dfReader = new LSWDesfirePublic.CCard(); + // dfReader.GetReaderList(); + // if (dfReader.readersList.Contains(thisStation.Reader)) + // { + // dfReader.SetReader(thisStation.Reader); + // dfReader.Badged += DFReader_Badged; + // dfReader.BadgeTO += DfReader_BadgeTO; + // dfReader.BadgeError += DfReader_BadgeError; + // ReaderTask = dfReader.Wait(5000, 10); + // } + // else + // { + // StringBuilder er = new StringBuilder($"Badgelezer \"{thisStation.Reader}\" niet gevonden!.\nDeze lezers zijn beschikbaar:\n"); + // dfReader.GetReaderList(); + // foreach (string r in dfReader.readersList) er.AppendLine($"-> {r}"); + // MessageBox.Show(er.ToString(), "Badge Lezer", MessageBoxButton.OK, MessageBoxImage.Exclamation); + // dfReader.Dispose(); dfReader = null; + // } + // } + //} + //void CheckBadge() + //{ + // thisStation.splunkLog?.KvSet(LSWLib.CLog.skeys.persID, _User.PersID); + // thisStation.splunkLog?.WriteSplunkLog("CheckBadge", LSWLib.CLog.iseverity.info, _User.PersID.ToString(), null); + // //Dispatcher.InvokeAsync(() => { ShowUserInfo(); }); + //} + //public void showBadge(int persID, string csn) + //{ + // //CSN.Text = csn; + // //Site.Text = string.Empty; + // //Code.Text = persID.ToString(); + // _User = thisStation.dataInterface.GetUser(null, persID.ToString(), true); + // Dispatcher.InvokeAsync(CheckBadge, DispatcherPriority.Normal); + //} + //private void DfReader_BadgeError(LSWDesfirePublic.CCard Sender, LSWDesfirePublic.BadgeErrorEventArgs e) + //{ + // // endPage(); + //} + //private void DfReader_BadgeTO(LSWDesfirePublic.CCard Sender, EventArgs e) + //{ + // //this.Dispatcher.InvokeAsync(new Action(() => endPage()), DispatcherPriority.Normal); + //} + //private void DFReader_Badged(LSWDesfirePublic.CCard Sender, LSWDesfirePublic.BadgeEventArgs e) + //{ + // if (e.PersID > 0) + // this.Dispatcher.InvokeAsync(new Action(() => showBadge(e.PersID, e.UID)), DispatcherPriority.Background); + // else + // { + // string msg = $"No PersID found on badge {e.UID}"; + // MessageBox.Show(msg, "Error", MessageBoxButton.OK); + // thisStation.splunkLog?.WriteSplunkLog("Badged", LSWLib.CLog.iseverity.warning, null, msg); + // } + //} + //private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + //{ + // //try + // //{ + // // if (dfReader != null ) + // // { + // // dfReader.WaitEnd(); + // // System.Threading.Thread.Sleep(2000); + // // dfReader.Dispose(); + // // dfReader = null; + // // } + // //} + // //catch (System.Exception ex) + // //{ + // // System.Diagnostics.Debug.WriteLine(ex.Message); + // //} + //} #endregion } } diff --git a/eDosStation/ShowEPDDose.xaml.cs b/eDosStation/ShowEPDDose.xaml.cs index 63fe619..8353fca 100644 --- a/eDosStation/ShowEPDDose.xaml.cs +++ b/eDosStation/ShowEPDDose.xaml.cs @@ -25,6 +25,8 @@ namespace eDosStation { InitializeComponent(); thisStation = curStation; + EpdReading = false; + FinalTimeOut = false; EntryState = eEntryState.none; } @@ -43,6 +45,7 @@ namespace eDosStation } } + #region EPD Callback private void Ep_EpdTO(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdTOEventArgs e) { System.Diagnostics.Debug.WriteLine("TIME OUT"); @@ -53,17 +56,20 @@ namespace eDosStation { System.Diagnostics.Debug.WriteLine("ERROR "); Dispatcher.InvokeAsync(() => { - MessageBox.Show($"EPD Error {e.returnValue}"); + MessageBox.Show($"EPD Error {e.returnValue} {e.ErrorRV} {e.ErrorStep}"); Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); }); }); } private void Ep_EpdRead(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdEventArgs e) { - EpdReading = false; dispatcherTimer?.Stop(); + EpdReading = false; + dispatcherTimer?.Stop(); Dispatcher.InvokeAsync(() => LoadDoses()); } + #endregion + private void LoadDoses() { int rv = 0; @@ -82,7 +88,7 @@ namespace eDosStation { hasAlarm.Text = "Yes"; } else - hasAlarm.Text = "no"; + hasAlarm.Text = "No"; epdid.Text = ep.EpdID.ToString(); var stype = new StringBuilder(); diff --git a/eDosStation/Station.cs b/eDosStation/Station.cs index a21ad48..3d18dc8 100644 --- a/eDosStation/Station.cs +++ b/eDosStation/Station.cs @@ -41,6 +41,13 @@ namespace eDosStation public double InfoScreenTimeout { get; internal set; } public bool WriteConfig32 { get; internal set; } + + public const int defInst_CODE1 = 1; + public const int defInst_CODE2 = 11; + public const string defInst_Name1 = "BR1"; + public const string defInst_Name2 = "Venus"; + + public cDevCon DevCon; public bool Changed = false; public int Error = 0; public string ErrorMessage; @@ -63,10 +70,10 @@ namespace eDosStation Error = 0; ErrorMessage = string.Empty; ComPort = 0; - Inst_CODE1 = 1; - Inst_CODE2 = 11; - Inst_Name1 = "BR1"; - Inst_Name2 = "Venus"; + Inst_CODE1 = defInst_CODE1; + Inst_CODE2 = defInst_CODE2; + Inst_Name1 = defInst_Name1; + Inst_Name2 = defInst_Name2; TestCSN = System.Configuration.ConfigurationManager.AppSettings["TestCSN"]; TestCode = System.Configuration.ConfigurationManager.AppSettings["TestCode"]; insComments = new StringBuilder(); @@ -121,7 +128,7 @@ namespace eDosStation RestartComFirst = rs.BoolOrDefault("RestartComFirst", false); OnlyMK2 = rs.BoolOrDefault("OnlyMK2", false); AllowMultipleEPD = rs.BoolOrDefault("AllowMultipleEPD", false); - WriteConfig32 = false; // rs.BoolOrDefault("WriteConfig32", false); + WriteConfig32 = true; // rs.BoolOrDefault("WriteConfig32", false); } else { @@ -138,7 +145,7 @@ namespace eDosStation EPDTimeOut = 10000; EPDRetries = 2; AllowMultipleEPD = false; - WriteConfig32 = false; + WriteConfig32 = true; } rs.Close(); splunkLog.WriteSplunkLog("StationInit", spl1.iseverity.info); @@ -193,12 +200,11 @@ namespace eDosStation } co?.Close(); } + DevCon = new cDevCon(ComPort, splunkLog); } private void CmdSetParams(SqlCommand cmd) { - //for (int ix = 0; ix < cmd.Parameters.Count; ix++) - // System.Diagnostics.Debug.WriteLine(cmd.Parameters[ix].ParameterName); - + try { cmd.SetIfExists("ComPort", ComPort); @@ -228,10 +234,10 @@ namespace eDosStation } catch (System.Exception ex) { - splunkLog.WriteException("Station", "SetParams", ex); + splunkLog?.WriteException("Station", "SetParams", ex); Error = 1; ErrorMessage = ex.Message; - if (stationLog != null) stationLog.WriteLine($"GetStationSettings error {ex.Message} {System.DateTime.Now}"); + stationLog?.WriteLine($"GetStationSettings error {ex.Message} {System.DateTime.Now}"); } } private void UpdateToDb(SqlConnection co, SqlCommand cmd) @@ -243,14 +249,15 @@ namespace eDosStation cmd.Parameters.Clear(); SqlCommandBuilder.DeriveParameters(cmd); CmdSetParams(cmd); - splunkLog.KvAddCommand(spl1.skeys.sqlQuery, cmd); + splunkLog?.KvAddCommand(spl1.skeys.sqlQuery, cmd); cmd.ExecuteNonQuery(); + splunkLog?.WriteSplunkLog(taskName,spl1.iseverity.info); } catch (System.Exception ex) { - splunkLog.WriteException(moduleName, taskName, ex); - if (stationLog != null) stationLog.WriteLine($"{taskName} error {ex.Message} co {co.DataSource} {System.DateTime.Now}"); + splunkLog?.WriteException(moduleName, taskName, ex); + stationLog?.WriteLine($"{taskName} error {ex.Message} co {co.DataSource} {System.DateTime.Now}"); } - splunkLog.KvClear(); + splunkLog?.KvClear(); } public void Update() { @@ -262,26 +269,46 @@ namespace eDosStation try { co = dataInterface.getCon(true); - splunkLog.KvAddCommand(spl1.skeys.sqlQuery,cmd); + splunkLog?.KvAddCommand(spl1.skeys.sqlQuery,cmd); UpdateToDb(co, cmd); co.Close(); co = dataInterface.getConCentral(true); - splunkLog.KvClear(spl1.skeys.sqlQuery); - splunkLog.KvAddCommand(spl1.skeys.sqlQuery, cmd); + splunkLog?.KvClear(spl1.skeys.sqlQuery); + splunkLog?.KvAddCommand(spl1.skeys.sqlQuery, cmd); UpdateToDb(co, cmd); + splunkLog?.WriteSplunkLog(taskName,spl1.iseverity.info); } catch (System.Exception ex) { Error = 1; ErrorMessage = ex.Message; - splunkLog.WriteException(moduleName, taskName, ex); - if (stationLog != null) stationLog.WriteLine($"{taskName} error {ex.Message} co {co.DataSource} {System.DateTime.Now}"); + splunkLog?.WriteException(moduleName, taskName, ex); + stationLog?.WriteLine($"{taskName} error {ex.Message} co {co.DataSource} {System.DateTime.Now}"); } co?.Close(); - splunkLog.KvClear(); + splunkLog?.KvClear(); } } + + + public string find() + { + string rv = "COM" + ComPort.ToString(); + if (DevCon != null) + { + if (DevCon.hasCommand) rv = DevCon.FindEdosCom(); + else rv = DevCon.comdefault; + } + return rv; + } + public string DeviceRestart() + { + string er = null; + if (DevCon != null && DevCon.hasCommand) er=DevCon.Restart(); + if (!string.IsNullOrEmpty(er)) splunkLog?.WriteSplunkLog("DeviceRestart", spl1.iseverity.err, er); + return er; + } } } diff --git a/eDosStation/app.manifest b/eDosStation/app.manifest index 4cacae2..d9b173e 100644 --- a/eDosStation/app.manifest +++ b/eDosStation/app.manifest @@ -1,72 +1,72 @@ - -> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - + +> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + diff --git a/eDosStation/cDevCon.cs b/eDosStation/cDevCon.cs new file mode 100644 index 0000000..6ee69e4 --- /dev/null +++ b/eDosStation/cDevCon.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using cspl = LSWLib.CLog; + +namespace eDosStation +{ + public class cDevCon + { + public StringBuilder error = null; + public bool hasError; + public bool hasCommand; + public string DevConFolder, DevConExePath; + public string comdefault; + cspl spl; + System.Diagnostics.Process DevConProcess = null; + + const string usbIdentifier = @"USB\VID_0EBB&PID_0340&MI_00"; + const string cDevConFolder = "extra"; + const string cDevConexe = "devcon.exe"; + const string className = "devcon"; + + public static bool IsAdministrator() + { + return (new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent())) + .IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator); + } + public cDevCon(int iCOM, cspl _spl) + { + spl = _spl; + comdefault = "COM" + iCOM.ToString(); + hasCommand = false; + DevConProcess = null; + error = new StringBuilder(); + hasError = false; + if (IsAdministrator()) + { + DevConFolder = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, cDevConFolder); + if (System.IO.Directory.Exists(DevConFolder)) + { + DevConExePath = System.IO.Path.Combine(DevConFolder, cDevConexe); + if (System.IO.File.Exists(DevConExePath)) hasCommand = true; + } + } + else spl?.WriteSplunkLog("cDecCon", cspl.iseverity.warning, "No Admin"); + } + private string ExecuteDevcon(string command) + { + const string module = "ExecuteDevcon"; + if (!hasCommand) return string.Empty; + hasError = false; + error.Clear(); + StringBuilder sb = new StringBuilder(); + try + { + using (DevConProcess = new System.Diagnostics.Process()) + { + DevConProcess.StartInfo.WorkingDirectory = DevConFolder; + DevConProcess.StartInfo.FileName = DevConExePath; + DevConProcess.StartInfo.Arguments = $"{command} \"{usbIdentifier}\""; + DevConProcess.StartInfo.RedirectStandardOutput = true; + DevConProcess.StartInfo.UseShellExecute = false; + DevConProcess.Start(); + var i = DevConProcess.StandardOutput; + if (i!=null) + while (!i.EndOfStream) + { + sb.AppendLine(i.ReadLine()); + } + DevConProcess.WaitForExit(); + spl?.WriteSplunkLog(module, cspl.iseverity.info); + } + } + catch (System.Exception ex) + { + spl?.WriteException(className, module, ex); + hasError = true; + sb.Clear(); + error.Append(ex.Message); + } + return sb.ToString(); + } + + public string FindEdosCom() + { + const string module = "FindEdosCom"; + string eDosCom = comdefault; + if (hasCommand) + try + { + string cp = ExecuteDevcon("find"); + if (!string.IsNullOrEmpty(cp)) + { + var ix = cp.IndexOf("(COM"); + if (ix >= 0) eDosCom = cp.Substring(ix + 1, 4); + } + } + catch (System.Exception ex) + { + spl?.WriteException(className, module, ex); + } + return eDosCom; + } + + public string Restart() + { + string rv = string.Empty; + error.Clear(); + hasError = false; + if (hasCommand) + { + rv = ExecuteDevcon("restart"); + if (hasError) rv = error.ToString(); + } + return rv; + } + } +} diff --git a/eDosStation/devcon.cs b/eDosStation/devcon.cs deleted file mode 100644 index 13d4598..0000000 --- a/eDosStation/devcon.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace eDosStation -{ - class devcon - { - static StringBuilder error = null; - static bool hasError; - static private string ExecuteDevcon(string command) - { - StringBuilder sb = new StringBuilder(); - System.Diagnostics.Process p = null; - string curPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "extra"); - string devcon; - - if (System.IO.Directory.Exists(curPath)) - { - devcon = System.IO.Path.Combine(curPath, "devcon.exe"); - if (System.IO.File.Exists(devcon)) - { - try - { - using (p = new System.Diagnostics.Process()) - { - p.StartInfo.WorkingDirectory = curPath; - p.StartInfo.FileName = devcon; - p.StartInfo.Arguments = $"{command} \"USB\\VID_0EBB&PID_0340&MI_00\""; - p.StartInfo.RedirectStandardOutput = true; - p.StartInfo.UseShellExecute = false; - p.Start(); - var i = p.StandardOutput; - while (!i.EndOfStream) - { - sb.AppendLine(i.ReadLine()); - } - p.WaitForExit(); - } - } catch(System.Exception ex) - { - hasError = true; - error.Append(ex.Message); - } - } - } - return sb.ToString(); - } - - static public string FindEdosCom() - { - string eDosCom = null; - try - { - string cp = devcon.ExecuteDevcon("find"); - var ix = cp.IndexOf("(COM"); - if (ix >= 0) eDosCom = cp.Substring(ix + 1, 4); - } - catch { } - return eDosCom; - } - - static public string Restart() - { - error = new StringBuilder(); hasError = false; - string cp = devcon.ExecuteDevcon("restart"); - if (hasError) return error.ToString(); else return string.Empty; - } - } -} diff --git a/eDosStation/eDosStation.csproj b/eDosStation/eDosStation.csproj index 129d025..0079566 100644 --- a/eDosStation/eDosStation.csproj +++ b/eDosStation/eDosStation.csproj @@ -303,7 +303,7 @@ DataSet1.xsd - + EntryBadge.xaml @@ -489,7 +489,7 @@ - "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe" sign /sha1 857150b64ef7d3e679c8cbde425d2a0b5e58ffaa /fd sha256 /d "Integrity & Authenticity" /tr "http://timestamp.digicert.com" $(TargetPath) + %25signer%25 $(TargetPath) diff --git a/eDosStation/eDosStation.tar b/eDosStation/eDosStation.tar new file mode 100644 index 0000000..d87261d Binary files /dev/null and b/eDosStation/eDosStation.tar differ diff --git a/eDosStation/eDosStation.zip b/eDosStation/eDosStation.zip new file mode 100644 index 0000000..49bc97c Binary files /dev/null and b/eDosStation/eDosStation.zip differ diff --git a/eDosStation/sync.cmd b/eDosStation/sync.cmd new file mode 100644 index 0000000..42b31f3 --- /dev/null +++ b/eDosStation/sync.cmd @@ -0,0 +1,31 @@ +pause "eDosStation to Sqlsrv7 " + + +set src="D:\l\src\cs2024\eDosStation\eDosStation\bin\Release" +set C="%cd:"=%\bin\release" +if /I %src%==%C% (echo "Path OK ") else (echo "Path issue !") +Pause was ok ? + +set dst="\\sqlsrv7\c$\Soft\eDos2023" + +::set zip="eDosStation.tar" +::tar -cf %zip% -C %src% --exclude *.zip *.* + +set zip="eDosStation.zip" +"c:\program files\7-zip\7z.exe" a -r %zip% .\bin\release\*.* + +xcopy %zip% %dst% /i /h /R /y + + +:: %src:"=% remove quotes +:: %src:"=%\*.*9 remove quotes and add \*.* +:: /i If destination does not exist and copying more than one file, assumes that destination must be a directory. +:: /h Copies hidden and system files also. +:: /r Overwrites read-only files +:: /y uppresses prompting to confirm you want to overwrite an existing destination file. +:: /s Copies directories and subdirectories except empty ones + +pause + + + diff --git a/eDosStation/x.zip b/eDosStation/x.zip new file mode 100644 index 0000000..10de086 Binary files /dev/null and b/eDosStation/x.zip differ diff --git a/syncEdosLocal/Program.cs b/syncEdosLocal/Program.cs index 3e54677..1e99780 100644 --- a/syncEdosLocal/Program.cs +++ b/syncEdosLocal/Program.cs @@ -11,7 +11,7 @@ namespace syncEdosLocal class cResult { - + const string className = "cResult"; public DateTime timestamp; public int VisitsNew, VisitsSkipped, VisitsAddedExits, VisitsAddedEntries; public int ID_Visit_Min, ID_Visit_Max; @@ -441,20 +441,20 @@ namespace syncEdosLocal DataSet1.CentralVisitsRow cr; try { - using (var ta = new DataSet1TableAdapters.LocalVisitsTableAdapter()) - using (var tc = new DataSet1TableAdapters.CentralVisitsTableAdapter()) + using (var localTA = new DataSet1TableAdapters.LocalVisitsTableAdapter()) + using (var centralTA = new DataSet1TableAdapters.CentralVisitsTableAdapter()) { - ta.Connection = coLocal; - tc.Connection = coCentral; - tc.ClearBeforeFill = false; - ta.Fill(ds.LocalVisits); + localTA.Connection = coLocal; + centralTA.Connection = coCentral; + centralTA.ClearBeforeFill = false; + localTA.Fill(ds.LocalVisits); spLog.KvAdd(spl.skeys.recordsAffected, ds.LocalVisits.Rows.Count); foreach (DataSet1.LocalVisitsRow lr in ds.LocalVisits.Rows) { Result.CheckVisitID(lr.ID_Visit); //min max cr = ds.CentralVisits.FindByID_StationID_Visit(lr.ID_Station, lr.ID_Visit); if (cr == null) - tc.Fill(ds.CentralVisits, lr.ID_Station, lr.ID_Visit); + centralTA.Fill(ds.CentralVisits, lr.ID_Station, lr.ID_Visit); cr = ds.CentralVisits.FindByID_StationID_Visit(lr.ID_Station, lr.ID_Visit); if (cr == null) { @@ -470,34 +470,48 @@ namespace syncEdosLocal case 2: if ((lr.VisitStatus & 1) == 1) { copyEntry(lr, cr); lr.syncedEntry = lr.syncedExit = true; Result.VisitsAddedEntries++; } break; } } - ta.Update(ds.LocalVisits); - tc.Update(ds.CentralVisits); + localTA.Update(ds.LocalVisits); + centralTA.Update(ds.CentralVisits); } + spLog.KvAdd(spl.skeys.recordsAffected, Result.VisitsNew); + spLog?.WriteSplunkLog(sStep, spl.iseverity.info); spLog.KvClear(); } catch (System.Exception ex) { error = true; Result.ErrorMessage = ex.Message; - spLog.WriteException(null, sStep, ex); + spLog.WriteException(moduleName, sStep, ex); } + ds.Dispose(); } private static void copyEntry(DataSet1.LocalVisitsRow lr, DataSet1.CentralVisitsRow cr) { - cr["ID_Station"] = lr["ID_Station"]; - cr["ID_Visit"] = lr["ID_Visit"]; - cr["Inst_CODE"] = lr["Inst_CODE"]; - cr["PersID"] = lr["PersID"]; - cr["ID_Task"] = lr["ID_Task"]; - cr["EntryTime"] = lr["EntryTime"]; - cr["ID_EPD"] = lr["ID_EPD"]; - cr["isBG"] = lr["isBG"]; - cr["ENTRY_EPD_CLOCK"] = lr["ENTRY_EPD_CLOCK"]; - cr["epdType"] = lr["epdType"]; + const string module = "copyEntry"; + try + { + cr["ID_Station"] = lr["ID_Station"]; + cr["ID_Visit"] = lr["ID_Visit"]; + cr["Inst_CODE"] = lr["Inst_CODE"]; + cr["PersID"] = lr["PersID"]; + cr["ID_Task"] = lr["ID_Task"]; + cr["EntryTime"] = lr["EntryTime"]; + cr["ID_EPD"] = lr["ID_EPD"]; + cr["isBG"] = lr["isBG"]; + cr["ENTRY_EPD_CLOCK"] = lr["ENTRY_EPD_CLOCK"]; + cr["epdType"] = lr["epdType"]; + } + catch (System.Exception ex) + { + spLog?.WriteException(moduleName, null, ex); + } } private static void copyExit(DataSet1.LocalVisitsRow lr, DataSet1.CentralVisitsRow cr) { - cr["ReturnTime"] = lr["ReturnTime"]; + const string module = "copyExit"; + try + { + cr["ReturnTime"] = lr["ReturnTime"]; cr["Hp10Dose"] = lr["Hp10Dose"]; cr["Hp07Dose"] = lr["Hp07Dose"]; cr["Hp10Total"] = lr["Hp10Total"]; @@ -535,18 +549,31 @@ namespace syncEdosLocal cr["eDosDose10Alarm"] = lr["eDosDose10Alarm"]; cr["eDosRate10Warning"] = lr["eDosRate10Warning"]; cr["eDosRate10Alarm"] = lr["eDosRate10Alarm"]; + } + catch (System.Exception ex) + { + spLog?.WriteException(moduleName, null, ex); + } } private static DataSet1.CentralVisitsRow copyrow(DataSet1.LocalVisitsRow lr, DataSet1.CentralVisitsDataTable centralVisits) { DataSet1.CentralVisitsRow cr = centralVisits.NewCentralVisitsRow(); - foreach (DataColumn sc in lr.Table.Columns) - if (lr.Table.Columns.Contains(sc.ColumnName)) cr[sc.ColumnName] = lr[sc.ColumnName]; - centralVisits.AddCentralVisitsRow(cr); + const string module = "copyExit"; + try + { + foreach (DataColumn sc in lr.Table.Columns) + if (lr.Table.Columns.Contains(sc.ColumnName)) cr[sc.ColumnName] = lr[sc.ColumnName]; + centralVisits.AddCentralVisitsRow(cr); + } + catch (System.Exception ex) + { + spLog?.WriteException(moduleName, null, ex); + } return cr; } private static void Connection_InfoMessage(object sender, System.Data.SqlClient.SqlInfoMessageEventArgs e) { - spLog.Connection_InfoMessageLog(e, ref messages); + spLog?.Connection_InfoMessageLog(e, ref messages); } } diff --git a/syncEdosLocal/sync.cmd b/syncEdosLocal/sync.cmd new file mode 100644 index 0000000..93de300 --- /dev/null +++ b/syncEdosLocal/sync.cmd @@ -0,0 +1,31 @@ +pause syndEdosLocal to Sqlsrv7 " + + +set src="D:\l\src\cs2024\eDosStation\syncEdosLocal\bin\Release" +set C="%cd:"=%\bin\release" +if /I %src%==%C% (echo "Path OK ") else (echo "Path issue !") +Pause was ok ? + +set dst="\\sqlsrv7\c$\Soft\eDos2023" + +::set zip="eDosStation.tar" +::tar -cf %zip% -C %src% --exclude *.zip *.* + +set zip="syncEdosLocal.zip" +"c:\program files\7-zip\7z.exe" a -r %zip% .\bin\release\*.* + +xcopy %zip% %dst% /i /h /R /y + + +:: %src:"=% remove quotes +:: %src:"=%\*.*9 remove quotes and add \*.* +:: /i If destination does not exist and copying more than one file, assumes that destination must be a directory. +:: /h Copies hidden and system files also. +:: /r Overwrites read-only files +:: /y uppresses prompting to confirm you want to overwrite an existing destination file. +:: /s Copies directories and subdirectories except empty ones + +pause + + + diff --git a/syncEdosLocal/syncEdosLocal.7z b/syncEdosLocal/syncEdosLocal.7z new file mode 100644 index 0000000..1965772 Binary files /dev/null and b/syncEdosLocal/syncEdosLocal.7z differ diff --git a/syncEdosLocal/syncEdosLocal.zip b/syncEdosLocal/syncEdosLocal.zip new file mode 100644 index 0000000..60ca9e3 Binary files /dev/null and b/syncEdosLocal/syncEdosLocal.zip differ diff --git a/x.zip b/x.zip new file mode 100644 index 0000000..15cb0ec Binary files /dev/null and b/x.zip differ