全国服务热线 : 4000-020-230

当前位置:首页 > 技术支持 > 技术文章

技术文章 产品知识 下载中心

技术文章

如何在欧视迈(OZEAM)全数字可视对讲中实现internet校时
发布日期:2012/1/18 11:58:03     作者:    已有  阅读过本文

    摘要:本文阐述了在欧视迈(OZEAM)全数字可视对讲系统中进行internet校时的必要性和实现途径

    关键词:internet校时全数字可视对讲系统欧视迈OZEAMRFC-868

    Abstract:Thispaperexplainedthenecessityandtheimplementationtosynchronizethesystemclockoftheoutdoorunitandtheindooruintinthedigitalvideointercomsystem(brand:OZEAM)usinganNTP(networktimeprotocol)server.

    Keywords:timesynchronizing,NTP(networktimeprotocol),digitalvideointercomsystem,OZEAM.

    1.全数字可视对讲系统校时的现状

    目前全数字可视对讲系统主要通过以下方法进行校时:

    (1)在安装有管理中心的情况下,管理中心充当时间服务器,门口机和室内机与管理中心通讯,获取当前时间来设置本机时间。

    (2)在没有安装管理中心的情况下,只能在门口机和室内机上手动设置本机时间。但一旦断电,又恢复到初始时间。这给用户带来不便,特别是单家独户的别墅用户,一般是不可能安装管理中心的。

    没有安装管理中心但全数字可视对讲门口机和室内机已连接互联网,能不能通过互联网进行自动校时?答案是肯定的。

    2.RFC-868时间协议

    本RFC规范了一个ARPAInternetcommunity上的标准。在ARPAInternet上的所有主机应当采用和实现这个标准。

    此协议提供了一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是以秒数,是从1900年1月1日午夜到现在的秒数。

    设计这个协议的一个重要目的在于,网络上的许多主机并没有时间的观念,在分布式的系统上,我们可以想一想,北京的时间和东京的时间如何分呢?主机的时间往往可以人为改变,而且因为机器时钟内的误差而变得不一致,因此需要使用时间服务器通过选举方式得到网络时间,让服务器有一个准确的时间观念。不要小看时间,这对于一些以时间为标准的分布运行的程序简单是太重要了。

    这个协议可以工作在TCP和UDP协议下。下面是通过TCP协议工作的时间协议的工作过程:这里S代表服务器,C代表客户。

    S:检测端口37

    U:连接到端口37

    S:以32位二进制数发送时间

    U:接收时间

    U:关闭连接

    S:关闭连接

    服务器在端口37上监听连接。当连接建立后,服务器返回一个32位的时间值,然后关闭连接。这个过程也不难,如果服务器不能决定现在是什么时间,服务器会拒绝连接或不发送任何数据而直接关闭连接。

    下面我们看看使用UDP协议的情况:这里S代表服务器,C代表客户。

    S:检测端口37

    U:发送一个空数据报到端口37

    S:接收这个空数据报

    S:发送包含32位二进制数(用于表示时间)的数据报

    U:接收时间数据报

    服务器在端口37上监听数据包。当一个数据包来后,服务器返回一个包含32位的时间的数据包。这个过程也不难,如果服务器不能决定现在是什么时间,服务器会抛弃接收到的数据报而不作出任何应答。

    *时间

    时间是由32位表示的,是自1900年1月1日0时到当前的秒数,我们可以计算一下,这个协议只能表示到2036年就不能用了。(但是我们也知道计算机发展速度这么快,可能到时候就会有更好的协议代替这个协议,或者有已经想出有效的解决办法了。)

    下面是些例子:

    thetime2,208,988,800correspondsto00:001Jan1970GMT,

    2,398,291,200correspondsto00:001Jan1976GMT,

    2,524,521,600correspondsto00:001Jan1980GMT,

    2,629,584,000correspondsto00:001May1983GMT,

    以及-1,297,728,000correspondsto00:0017Nov1858GMT. 

    3.Internet校时的程序实现

    下面是使用TCP协议的实现Internet校时的部分代码。

    voidtime_internet_to_local(void*recv_buf)//接到的数据转换为本地时间

    {

    assert(recv_buf);

    charp[4],*precv=((char*)recv_buf)+3;

    for(inti=0;i<4;i++)< p="">

    p[i]=*precv--;

    *(long*)p-=2208988800;

    SYSTEMTIMEst;

    tm*ptm=gmtime((time_t*)p);

    st.wYear=ptm->tm_year+1900;

    st.wMonth=ptm->tm_mon+1;

    st.wDay=ptm->tm_mday;

    st.wHour=ptm->tm_hour;

    st.wMinute=ptm->tm_min;

    st.wSecond=ptm->tm_sec;

    st.wMilliseconds=0;

    SetSystemTime(&st);

    }

    BOOLGetTimeFromServer(DWORD*lpdwTime)//TCP方式

    {

    *lpdwTime=0;

    BOOLbReturn=FALSE;

    SOCKETsSock=socket(AF_INET,SOCK_STREAM,0);

    if(INVALID_SOCKET!=sSock)

    {

    structsockaddr_insin;

    memcpy(&sin.sin_addr,&NISTSVRSARY[choice].addr,sizeof(in_addr));

    sin.sin_family=AF_INET;

    sin.sin_port=htons(IPPORT_TIMESERVER);

    wprintf(L"\n...waitingtolink...\n");

    if(0!=connect(sSock,(structsockaddr*)&sin,sizeof(structsockaddr_in)))

    {

    wprintf(L"Linked.Receivingdata...\n");

    intiResult;

    iResult=recv(sSock,(char*)lpdwTime,4,0);

    if(iResult==4)

    {

    *lpdwTime=ntohl(*lpdwTime);

    bReturn=TRUE;

      }

    else

    {

    wprintf(L"Failtogettime!iResult=%d\n",iResult);

    }

    }else

    wprintf(L"Failtolink,overtime!\n");

    closesocket(sSock);

    }

    returnbReturn;

    }

    4.结束语

    程序在EVC4.0编写调试正确,并在WinCE5.0下运行正确。只要门口机或室内机连接Internet,则自动进行校时,无需手动设置,也无需安装管理中心。

    Internet自动校时为欧视迈(OZEAM)全数字可视对讲系统增色不少。


返回
上一篇  
下一篇  语音导航操作在欧视迈(OZEAM)全数字可视对讲系统中的应用
【推荐阅读】

24小时全国服务热线:4000-020-230

关注我们:
©2016 广州市欧智智能科技有限公司 版权所有.All Rights Reserved.      粤ICP备10043508号-1
网络支持:艾迪品牌策划设计
尊敬的客户,您是第【{visits:all}】访客
业务服务
客服电话

4000-020-230