Esempio n. 1
0
        private DateTimeZone ParseDateTime(byte[] answer, TimeZoneMap zone)
        {
            var year  = 2000 + BitwiseUtils.BcdToDec(answer[6]);
            var month = BitwiseUtils.BcdToDec(answer[5]);
            var day   = BitwiseUtils.BcdToDec(answer[4]);
            int hour  = BitwiseUtils.BcdToDec(answer[2]);
            int min   = BitwiseUtils.BcdToDec(answer[1]);
            int sec   = BitwiseUtils.BcdToDec(answer[0]);

            var ret = new DateTimeZone(year, month, day, hour, min, sec, zone);

            return(ret);
        }
Esempio n. 2
0
        public OperationResult TryWriteDateDate(IIODriverClient channel, int address, string psw, TimeZoneMap map, DeviceCompOn diff)
        {
            // Установка даты и времени защищена основным паролем.

            OperationResult result = WaitRequest(channel);

            if (!result.IsGood)
            {
                return(result);
            }

            DateTimeZone dateTime = diff.GetServerToDeviceTime(map);

            byte[] arr = new byte[7];
            arr[0] = BitwiseUtils.DecToBCD((byte)dateTime.Second);
            arr[1] = BitwiseUtils.DecToBCD((byte)dateTime.Minute);
            arr[2] = BitwiseUtils.DecToBCD((byte)dateTime.Hour);
            arr[3] = (byte)dateTime.DayOfWeek;
            arr[4] = BitwiseUtils.DecToBCD((byte)dateTime.Day);
            arr[5] = BitwiseUtils.DecToBCD((byte)dateTime.Month);
            arr[6] = BitwiseUtils.DecToBCD((byte)(dateTime.Year - 2000));

            try
            {
                var send = CreateRequest(address, Codes.CODE_WRITE_DATETIME, psw, arr);
                result = WriteReadCheck(channel, nRepeatGlobal, send, out byte[] answer);
            }
            catch (Exception e)
            {
                result = OperationResult.From(e);
            }
            return(result);
        }
Esempio n. 3
0
        public OperationResult TryReadDateTime(IIODriverClient channel, int address, string psw, TimeZoneMap zone, out DateTimeUtc response, out int timeTwoSidePathMsec)
        {
            OperationResult result = OperationResult.Bad;

            response            = DateTimeUtc.MinValue;
            timeTwoSidePathMsec = 0;
            byte[] send = CreateRequest(address, Codes.CODE_READ_DATETIME, psw);

            result = WaitRequest(channel);
            if (!result.IsGood)
            {
                return(result);
            }

            var span = SpanSnapshot.Now;

            result = WriteReadCheck(channel, nRepeatGlobal, send, out byte[] answer);
            timeTwoSidePathMsec = (int)span.DiffNowMsec();
            if (!result.IsGood)
            {
                return(result);
            }

            try
            {
                response = ParseDateTime(answer, zone);
            }
            catch (Exception e)
            {
                result = OperationResult.From(e);
            }
            return(result);
        }
Esempio n. 4
0
        public void OnlineWithSpecificFallbackValuesMapper_ReturnsCorrectFallbackMapper()
        {
            var mapper = TimeZoneMap.CreateOnlineWithSpecificFallbackValuesTZMapper(new Uri("http://example.com/test.xml"), new CustomValuesTZMapper("testcldr.xml", Encoding.UTF8));

            Assert.AreEqual("zyx.xyz", mapper.Version);
        }