英创信息技术工控主板SNTP网络校时功能

描述

英创工控主板产品,大多数都应用于连续工作的工业环境中,对实时时钟有普遍的需求。由于RTC晶体总是有一定误差的,我们控制的精度为+/-10ppm,对长期运行的设备就需要在线自动校时功能。我们可以利用标准的SNTP协议来实现这个功能。

在Windows CE中校时功能是作为标准服务,由service.exe来管理运行的。对应用程序来说,只需要执行下面的简短代码,就可实现SNTP的对时功能:

WCHAR szControlString[] = L'sync';
        DWORD dwLenIn = sizeof(szControlString);
        HANDLE hFile = CreateFile(L'NTP0:', GENERIC_READ|GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,NULL);
        if(INVALID_HANDLE_VALUE == hFile)
        {
                printf('Open NTP0: failed\r\n'); 
                return 0;
        }
        //执行时间同步操作
        DeviceIoControl(hFile, IOCTL_SERVICE_CONTROL, szControlString, dwLenIn, NULL, 0, NULL, NULL);
        CloseHandle(hFile);

如果客户直接引用上述代码在现有的主板上运行,发现对时不成功。这主要是由于微软发布的缺省release版的timesvc.dll似乎有些问题,需要重新build之后才能有效。我们会在5.1之后的标准版中增加SNTP校时功能。对先前已购买的客户,若需要使用SNTP校时功能,可与我们联系,以更新内核。

SNTP还有一组注册表,在使用前可能需要关注一下。

[HKEY_LOCAL_MACHINE\Services\Timesvc]
'AutoUpdate'=dword:0
'ClientOnly'=dword:1
'AutoDST'=dword:0      ; auto Daylight Saving Time
'Trustlocalclock'=dword:0   ;只能为0
'Refresh'=dword:48190800 ; 2 weeks
'RecoveryRefresh'=dword:1B7740 ; 30 minutes
'Threshold'=dword:5265C00 ; 1 day
'Server'='pool.ntp.org'

注册表中的各项参数都可在msdn中找到解释,所以只对特殊的情况进行简要说明。“Server”指定的是网上的SNTP服务器,根据实际应用,也可以改成ip地址。注意使用URL时,需要在userinfo.txt中配置好DNS服务器的ip。如果AutoUpdate设置为1,每次系统上电复位启动时,都会自动进行一次SNTP校时。Timesvc下还有一些参数没有列出,哪些参数是完全不能改的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分