コード例 #1
0
        private void OnButtonUp(object sender, RoutedEventArgs evt)
        {
            ButtonEventArgs e = (ButtonEventArgs)evt;

            const int timeZoneOffsetInMinutes = -8 * 60;

            switch (e.Button)
            {
            case Microsoft.SPOT.Hardware.Button.VK_UP:
                // Reset the time to an arbitrary value.
                TimeService.SetUtcTime(128752416000000000);
                TimeService.SetTimeZoneOffset(timeZoneOffsetInMinutes);
                break;

            case Microsoft.SPOT.Hardware.Button.VK_SELECT:
                // Perform a one time sync with the time server.
                TimeServiceStatus status = TimeService.UpdateNow(TimeServerIPAddress, 10);
                TimeService.SetTimeZoneOffset(timeZoneOffsetInMinutes);
                break;

            case Microsoft.SPOT.Hardware.Button.VK_DOWN:
                // Start a scheduled periodic sync.
                TimeServiceSettings settings = new TimeServiceSettings();

                // Sync every 10 seconds.
                settings.PrimaryServer = TimeServerIPAddress;
                settings.RefreshTime   = 10;

                TimeService.Settings = settings;

                TimeService.Start();
                TimeService.SetTimeZoneOffset(timeZoneOffsetInMinutes);
                break;
            }
        }
コード例 #2
0
        public bool SyncTimeService()
        {
#if false
            var completed = false;
            if (this.IsNetworkConnected)
            {
                TimeService.SystemTimeChanged += TimeService_SystemTimeChanged;
                TimeServiceStatus status = TimeService.UpdateNow(TimeServerIPAddress, 10);
                TimeService.SetTimeZoneOffset(540); // time origin
            }
            int count = 0;
            while (count++ < 5)
            {
                var flag = false;
                lock (this)
                {
                    flag = hasTimeFixed;
                }
                if (flag)
                {
                    completed = true;
                    break;
                }
                Thread.Sleep(1000);
            }
            if (!completed)
            {
                completed = GetTimeFromWeb();
            }
#else
            var completed = GrFamily.Utility.SystemTimeInitializer.InitSystemTime();
#endif
            return(completed);
        }
コード例 #3
0
        private void OnButtonUp(object sender, RoutedEventArgs evt)
        {
            ButtonEventArgs e = (ButtonEventArgs)evt;

            if (e.Button == Microsoft.SPOT.Hardware.Button.VK_UP)
            {
                // reset the time to an arbitrary value
                TimeService.SetUtcTime(128752416000000000);
                TimeService.SetTimeZoneOffset(-420);
            }
            else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_SELECT)
            {
                // Perform a one time sync with the time server
                TimeServiceStatus status = TimeService.UpdateNow(TimeServerIPAddress, 10);

                TimeService.SetTimeZoneOffset(-420); // time origin
            }
            else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_DOWN)
            {
                // start a scheduled periodic sync
                TimeServiceSettings settings = new TimeServiceSettings();

                settings.PrimaryServer = TimeServerIPAddress;
                settings.RefreshTime   = 10; // sycn every 10 seconds

                TimeService.Settings = settings;

                TimeService.Start();
                TimeService.SetTimeZoneOffset(-420);  // time origin
            }
        }
コード例 #4
0
ファイル: ServiceTests.cs プロジェクト: yisea123/NetmfSTM32
        public MFTestResults TimeServiceLastSyncStatusTest0()
        {
            MFTestResults result = MFTestResults.Pass;

            try
            {
                DateTime now = DateTime.Now;

                /// EBS bug returns value in local time instead of UTC.
                /// Remove following line once they fixed the bug.
                now = now.AddHours(12);

                TimeService.SetUtcTime(119600064000000000); /// 1/1/1980.
                ///
                byte[] primaryServer         = new byte[] { 192, 43, 244, 18 };
                byte[] alternateServer       = new byte[] { 129, 6, 15, 28 };
                TimeServiceSettings settings = new TimeServiceSettings();
                settings.PrimaryServer   = primaryServer;
                settings.AlternateServer = alternateServer;
                settings.Tolerance       = 100;
                settings.RefreshTime     = 60;
                TimeServiceStatus status = null;

                /// Save the settings.
                TimeService.Settings = settings;
                TimeService.Start(); /// This should fire a sync event right away.

                Thread.Sleep(5000);  /// Sleep for some time, we should have time synced by now.
                ///
                for (int i = 0; i < 10; i++)
                {
                    status = TimeService.LastSyncStatus;

                    if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded)
                    {
                        break;
                    }

                    Thread.Sleep(1000);
                }

                if (status.CurrentTimeUTC.Year != DateTime.UtcNow.Year)
                {
                    throw new ArgumentException("Time not synced correctly.");
                }
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected exception", ex);
                result = MFTestResults.Fail;
            }
            finally
            {
                TimeService.Stop();
            }

            return(result);
        }
コード例 #5
0
        private void UpdateTimeNow()
        {
            for (int i = 0; i < 10; i++)
            {
                TimeServiceStatus status = TimeService.UpdateNow(new byte[] { 192, 43, 244, 18 }, 10);

                if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded)
                {
                    break;
                }

                Thread.Sleep(100);
            }
        }
コード例 #6
0
        public MFTestResults TimeServiceUpdateTest0()
        {
            MFTestResults result = MFTestResults.Pass;

            try
            {
                /// Now call UpdateNow this should set the time back to correct one.
                TimeServiceStatus status = TimeService.UpdateNow(new byte[] { 157, 54, 86, 20 }, 10);

                DateTime now = DateTime.Now;

                //
                // SKU == 3 indicates the device is the emulator.
                //
                if (Microsoft.SPOT.Hardware.SystemInfo.SystemID.SKU != 3)
                {
                    /// EBS bug returns value in local time instead of UTC.
                    /// Remove following line once they fixed the bug.
                    now = now.AddHours(7);
                }

                TimeService.SetUtcTime(119600064000000000); /// 1/1/1980.
                                                            ///
                DateTime old = DateTime.Now;

                /// Now call UpdateNow this should set the time back to correct one.
                status = TimeService.UpdateNow(new byte[] { 157, 54, 86, 20 }, 10);

                DateTime end = DateTime.Now;

                TimeSpan diff  = end < now ?  now - end : end - now;
                TimeSpan diff2 = now - old;

                // ten minutes (DNS may take a while)
                if (diff > new TimeSpan(0, 10, 0) && diff2 > new TimeSpan(20 * 365, 0, 0, 0))
                {
                    throw new ArgumentException("Update time invalid.");
                }
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected exception", ex);
                result = MFTestResults.Fail;
            }

            return(result);
        }
コード例 #7
0
ファイル: Time.cs プロジェクト: fabiobulgarella/plcs_project
        private static void UpdateNow()
        {
            while (true)
            {
                DateTime          beforeTime = DateTime.UtcNow;
                TimeServiceStatus status     = TimeService.UpdateNow(TimeService.Settings.Tolerance);

                if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded)
                {
                    if (!timeSynchronized)
                    {
                        TimeSpan offset = DateTime.UtcNow - beforeTime;
                        firstSyncTimeOffset = offset.Ticks;
                        timeSynchronized    = true;
                    }

                    break;
                }

                Thread.Sleep(30000);
            }
        }
コード例 #8
0
        public MFTestResults TimeServiceLastSyncStatusTest0()
        {
            MFTestResults result = MFTestResults.Pass;

            try
            {
                DateTime now = DateTime.Now;

                /// EBS bug returns value in local time instead of UTC.
                /// Remove following line once they fixed the bug.
                now = now.AddHours(12);

                TimeService.SetUtcTime(119600064000000000); /// 1/1/1980.
                ///
                TimeServiceSettings settings = new TimeServiceSettings();
                settings.PrimaryServer = GetTimeServiceAddress().GetAddressBytes();
                settings.Tolerance     = 100;
                settings.RefreshTime   = 60;
                TimeServiceStatus status = null;

                timerEvent.Reset();

                TimeService.SystemTimeChanged += new SystemTimeChangedEventHandler(TimeService_SystemTimeChanged);

                /// Save the settings.
                TimeService.Settings = settings;
                TimeService.Start(); /// This should fire a sync event right away.

                timerEvent.WaitOne(5000, false);
                ///
                for (int i = 0; i < 10; i++)
                {
                    status = TimeService.LastSyncStatus;

                    if (status.Flags == TimeServiceStatus.TimeServiceStatusFlags.SyncSucceeded)
                    {
                        break;
                    }

                    timerEvent.WaitOne(1000, false);
                }

                if (status.CurrentTimeUTC.Year != DateTime.UtcNow.Year)
                {
                    throw new ArgumentException("Time not synced correctly.");
                }
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected exception", ex);
                result = MFTestResults.Fail;
            }
            finally
            {
                TimeService.SystemTimeChanged -= new SystemTimeChangedEventHandler(TimeService_SystemTimeChanged);

                TimeService.Stop();
            }

            return(result);
        }