设置Onvif相机时间时出错

时间:2017-03-06 17:14:41

标签: c# datetime onvif

我使用odm dll设置onvif相机时间,但是当我调用SetSystemDateandTime时,它给了我" 400来自服务器的错误请求"错误,我认为这个错误是由于时区错误的posix转换而产生的。

  

这是我的代码:

我传递的是setdatetimetype = ntp,daylisghtsaving = false,posix格式的时区,datetime = null。

public void SetOnvifCameraTime(string setdatetimeType, bool daylightSaving, System.TimeZoneInfo timeZoneInfo, System.DateTime systemDateTime)
{
    var rule = GetSystemTimeZoneRule(System.DateTime.Now, timeZoneInfo);
    var std_offset = -timeZoneInfo.BaseUtcOffset.TotalSeconds.ToInt32();
    PosixTz.Dst dst = null;

    if( rule!= null)
    {  
 // setting dst  if available
        var start = PosixTzExtensions.GetPosixRuleFromTransitionTime(rule.DaylightTransitionStart);
        var end = PosixTzExtensions.GetPosixRuleFromTransitionTime(rule.DaylightTransitionEnd);
        var dst_offset = std_offset - rule.DaylightDelta.TotalSeconds.ToInt32();
        dst = new PosixTz.Dst("DaylisghtTime", dst_offset, start, end);                

    }

    var posixTz = new   PosixTz(PosixTzWriter.NormalizeName(timeZoneInfo.StandardName), std_offset, dst);
    onvif.services.TimeZone timezone = new onvif.services.TimeZone();
    timezone.tz = posixTz.Format();   // time zone in posix format
    SetDateTimeType setdatetimeenumtype = SetDateTimeType.ntp;;

    var setTime = session.SetSystemDateAndTime(setdatetimeenumtype, daylightSaving, timezone, null).RunSynchronously();
}

所以,我检查了Onvif设备管理器并试图设置相机时间,但它给了我错误"无效时区"。

我还检查了wireshark中的数据包并找出了同样的问题"无效的时区格式"。

所以我现在很困惑,这个错误是由于我的代码还是odm dll?

如果有任何API或类可用于将时区转换为posix格式字符串?

修改

我发现我以posix格式发送了正确的时区,但相机制造商没有正确实现它,这就是为什么它给了我"无效的时区"我的代码以及Onvif设备管理器中的错误。

  

相机信息:

制作: - 索尼

型号: - SNC-CH110

有谁知道,制造商如何在设备中实施时间设置?

或者任何想法我怎样才能在相机中实现时间设置?

0 个答案:

没有答案