diff --git a/EpdBase/EpdBase.cpp b/EpdBase/EpdBase.cpp index 89c4e25..7240eec 100644 --- a/EpdBase/EpdBase.cpp +++ b/EpdBase/EpdBase.cpp @@ -1,6 +1,7 @@ #include "stdafx.h" #include "EpdBase.h" -#define DiscoveryTimeslotPeriod 100 +#include "TimeFunctions.cpp" +#define DiscoveryTimeslotPeriod 500 #define DiscoveryExpirationPeriod 6000 #define RxRetryCount 5 #define TxRetryCount 5 @@ -10,6 +11,10 @@ EpdBase::Epd2U::Epd2U(int comport) { port = comport; CommsInitialized = 0; + Ev1 = INVALID_HANDLE_VALUE; + maxDiscoverTime = 10000; + + if (port == 0) return; SetAutoCommit(0); Error = 123; @@ -59,10 +64,15 @@ int EpdBase::Epd2U::StartDiscover() { //WORD rv; //System::Diagnostics::Trace::WriteLine("StartDiscover"); + Sleep(100); Error = 0; - + Ev1 = CreateWaitableTimer(NULL, TRUE, NULL); + LARGE_INTEGER wt ; + wt.QuadPart = Int32x32To64(maxDiscoverTime,-10000); //10 seconden proberen + //wt.QuadPart = -100000000LL; + if (Ev1!=NULL) SetWaitableTimer(Ev1, &wt, 0, NULL, NULL, FALSE); //SetDiscoveryTimeslotCount(port, 2); - //SetDiscoveryTimeslotPeriod(port, DiscoveryTimeslotPeriod); + SetDiscoveryTimeslotPeriod(port, DiscoveryTimeslotPeriod); //SetDiscoveryExpirationPeriod(port, DiscoveryExpirationPeriod); //rv =SetRetryCounts(RxRetryCount, TxRetryCount); @@ -72,12 +82,13 @@ int EpdBase::Epd2U::StartDiscover() DeviceIDs[0] = 768; return 1; } - FlushDiscoveryCache(port); FlushBuffers(port); - int tries = 25; DeviceCount = 0; DiscRV = 1; - while (tries-- > 0 && DeviceCount == 0 ) + int maxtries = 100; DeviceCount = 0; DiscRV = 1; DWORD wo = 1; // ongeveer 43 tries in 10 seconden + int tries = 0; + while (DeviceCount == 0 && wo!=0) //tries-- > 0 && { + tries++; //memset(DeviceIDs, 0, sizeof(DeviceIDs)); DiscRV = Discover(port, DeviceIDs, MaxDevices, &DeviceCount); //System::Diagnostics::Trace::WriteLine(System::String::Format("Discover try: {0} RV={1}", tries, DiscRV)); @@ -85,8 +96,10 @@ int EpdBase::Epd2U::StartDiscover() Error = GetErrorDetails(&ErrorSource, &ErrorReason, &ErrorData); //System::Diagnostics::Trace::WriteLine(System::String::Format("StartDiscover Error Connect Reason: {0} ErrorData {1}", ErrorReason, ErrorData)); } + wo = WaitForSingleObject(Ev1, 0); } //System::Diagnostics::Trace::WriteLine(System::String::Format("Discover DeviceCount = {0}", DeviceCount)); + CloseHandle(Ev1); Ev1 = INVALID_HANDLE_VALUE; return DiscRV; } void EpdBase::Epd2U::Open(DWORD DeviceID) diff --git a/EpdBase/EpdBase.h b/EpdBase/EpdBase.h index dde4b99..e50bd54 100644 --- a/EpdBase/EpdBase.h +++ b/EpdBase/EpdBase.h @@ -16,9 +16,9 @@ namespace EpdBase DWORD DeviceIDs[10]; DWORD CurrentDeviceID; - //WORD AlarmCtrl = 0b01111110; - WORD AlarmCtrl = 0b01111010; // NO sound - WORD EndSessionControl = 0b00010010; + WORD AlarmCtrl = 0b01111110; + //WORD AlarmCtrl = 0b01111010; // NO sound + WORD EndSessionControl = 0b00010110; BYTE displayConfig[56] = { 0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; @@ -203,6 +203,8 @@ namespace EpdBase BYTE byStatus3; BYTE byStatus4; + int maxDiscoverTime = 10000; + LARGE_INTEGER WaitDiscovery; int StartDiscover(); void Open(DWORD DeviceID); void Close(); @@ -226,10 +228,9 @@ namespace EpdBase WORD PrepareForIssue(); WORD DeIssue(); - WORD Issue(); - ~Epd2U(); + HANDLE Ev1 = INVALID_HANDLE_VALUE;; }; } diff --git a/EpdBase/EpdBase.vcxproj b/EpdBase/EpdBase.vcxproj index a14be89..2b744cf 100644 --- a/EpdBase/EpdBase.vcxproj +++ b/EpdBase/EpdBase.vcxproj @@ -128,12 +128,6 @@ - - - - - - diff --git a/EpdBase/EpdBase.vcxproj.filters b/EpdBase/EpdBase.vcxproj.filters index 1e03ebe..5d799cb 100644 --- a/EpdBase/EpdBase.vcxproj.filters +++ b/EpdBase/EpdBase.vcxproj.filters @@ -15,36 +15,18 @@ - - Header Files - Header Files Header Files + + Header Files + Header Files - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - diff --git a/EpdBase/TimeFunctions.cpp b/EpdBase/TimeFunctions.cpp index 0ca6217..1e53e3e 100644 --- a/EpdBase/TimeFunctions.cpp +++ b/EpdBase/TimeFunctions.cpp @@ -12,7 +12,7 @@ void TimeFunctions::UnixTimeToFileTime(time_t t, LPFILETIME pft) { // Note that LONGLONG is a 64-bit value LONGLONG ll; - + ll = Int32x32To64(t, 10000000) + 116444736000000000; pft->dwLowDateTime = (DWORD)ll; pft->dwHighDateTime = ll >> 32; @@ -23,4 +23,12 @@ void TimeFunctions::UnixTimeToFileTime(time_t t, LPFILETIME pft) FILETIME ft; UnixTimeToFileTime(t, &ft); FileTimeToSystemTime(&ft, pst); -} \ No newline at end of file +} + + void TimeFunctions::msToFileTime(UINT32 ms, LARGE_INTEGER &pft) + { + // Note that LONGLONG is a 64-bit value + LONGLONG ll; + ll = Int32x32To64(ms, 10000) ; + pft.QuadPart = ll; + } diff --git a/EpdBase/TimeFunctions.h b/EpdBase/TimeFunctions.h index 9756f33..aa837a0 100644 --- a/EpdBase/TimeFunctions.h +++ b/EpdBase/TimeFunctions.h @@ -8,6 +8,7 @@ public: TimeFunctions(); static void UnixTimeToFileTime(time_t t, LPFILETIME pft); static void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst); + static void msToFileTime(UINT32 ms, LARGE_INTEGER &pft); }; diff --git a/eDosStation/EntryBadge.xaml b/eDosStation/EntryBadge.xaml index 58ed806..238b258 100644 --- a/eDosStation/EntryBadge.xaml +++ b/eDosStation/EntryBadge.xaml @@ -17,7 +17,7 @@ - + @@ -44,7 +44,6 @@ - @@ -65,7 +64,6 @@ -