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); }
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); }
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); }
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); }