亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        WinCE系統(tǒng)的Internet時間自動同步軟件設計

        2011-06-25 02:45:36秦園春李建軍
        關鍵詞:嵌入式程序信息

        秦園春,李建軍

        (安徽廣播電視臺 淮北發(fā)射臺,淮北 235000)

        1 概 述

        在Windows XP及其相鄰版本的桌面操作系統(tǒng)和服務器操作系統(tǒng)中,微軟公司都設計了Internet時間自動同步功能。該功能是通過Internet網(wǎng)絡向架設在網(wǎng)絡上的時間服務器獲取時間信息,再自動校準自己的系統(tǒng)時間,從而使自己的系統(tǒng)時間與時間服務器提供的時間同步。在設計基于該系統(tǒng)的應用軟件時,只要使用API函數(shù)GetSystemTime()就可以間接地獲取較為準確的時間信息。隨著嵌入式系統(tǒng)在工業(yè)控制領域的迅速普及,WinCE操作系統(tǒng)以其方便靈活的文件系統(tǒng)和豐富多彩的操作界面,贏得了人們的廣泛關注。在當前以嵌入式系統(tǒng)為主流的工業(yè)控制系統(tǒng)中大都集成了網(wǎng)絡功能,WinCE操作系統(tǒng)雖然提供了對TIC/IP協(xié)議的全面支持,但是它無法像桌面操作系統(tǒng)或服務器操作系統(tǒng)那樣提供時間自動同步功能。

        隨著廣播電視數(shù)字化進程的推進和設備固態(tài)化的普及,筆者所處的廣播電視傳輸發(fā)射設備的控制也都由傳統(tǒng)的MCS-51系列單片機向ARM嵌入式系統(tǒng)轉變,許多設備都采用了嵌入式控制。在控制領域,尤其在信息傳輸過程中,時間信息往往又作為一個統(tǒng)一的基準,起著至關重要的作用。在日后的設備遠程監(jiān)控和技術革新中,只要涉及到嵌入式控制軟件的設計,不可避免地涉及到時間同步問題。

        鑒于此,我們在研究和分析了網(wǎng)絡時間服務器的相關協(xié)議后,結合嵌入式WinCE系統(tǒng)和Internet網(wǎng)絡的特點,設計了這一具有自動校準系統(tǒng)時間功能的Internet時間同步軟件。

        2 Internet時間服務器

        Internet時間服務器是一種利用Internet網(wǎng)絡把標準時間信息傳遞給用戶的裝置。它的時間信息來自于上一級(或層)時間服務器或原子鐘等高精度時間源。它可以提供高精準度國際標準時間UTC(Universal Time Coor-dinated)。標準時間信息通過TCP/IP網(wǎng)絡傳輸給用戶。

        在Internet上有3個不同的時間服務,每一個都由Request For Comment(RFC)定義為Internet日期時間標準。這3個標準分別為 RFC-867、RFC-868和 RFC-1305。其中的RFC-868和RFC-1305是可以提供ms級精度的時間標準,采用的是網(wǎng)絡時間協(xié)議(Network Time Protocol,NTP)。在桌面操作系統(tǒng)和服務器操作系統(tǒng)中廣泛使用的時間同步標準是RFC-867,它采用的是Daytime協(xié)議。雖然它只能提供秒級精度的時間,但是,作為一般工業(yè)控制的時鐘依據(jù)已經(jīng)足夠了,GetSystemTime()也只是秒級的時間精度。這里采用Daytime協(xié)議。

        2.1 Daytime協(xié)議

        Daytime協(xié)議(RFC867Daytime Protocol)規(guī)范了一個ARPA Internet community上的標準。在ARPA Internet上都應當采用和實現(xiàn)這個標準。它的作用就是向用戶返回當前標準的時間和日期。

        (1)基于TCP的daytime服務

        daytime服務是基于TCP的應用,服務器在TCP端口13監(jiān)聽,連接一旦建立就向對方返回ASCII形式的日期和時間。本設計就采用這種服務。

        (2)基于UDP的daytime服務

        daytime服務也可以使用UDP協(xié)議,它的端口也是13,不過UDP是用數(shù)據(jù)報傳送當前時間的。

        2.2 Daytime格式

        NIST Internet Time Service(ITS)所公布的Daytime格式如下:

        JJJJJ YR-MO-DA HH:MM:SS TT L H msADV UTC(NIST)OTM

        其中,“YR-MO-DA HH:MM:SS”代表“年-月-日 時:分:秒”;H表示服務器的工作狀態(tài),0為正常,1為異常;JJJJJ為修改后的朱利安日期(MJD)。其他項在本設計中沒有用到,就不再解釋。

        通過對Internet時間服務器連接后的返回數(shù)據(jù)分析,可以得到:第7、8兩個字節(jié)為年份;10、11兩個字節(jié)為月份;13、14兩個字節(jié)為日期;16、17兩個字節(jié)為時;19、20兩個字節(jié)為分;22、23兩個字節(jié)為秒;第30字節(jié)是服務器的工作狀態(tài)。

        2.3 時間服務器地址

        用戶可以輸入自己已知的時間服務器地址(優(yōu)先選用)。這里還置入了一些目前較為穩(wěn)定可靠的時間服務器地址:

        ◆ 129.6.15.28

        ◆ 132.163.4.101

        ◆ 132.163.4.102

        ◆ 132.163.4.103

        ◆ 128.138.140.44

        ◆ 129.6.15.29

        ◆ 129.43.244.18

        3 連接Internet時間服務器獲取時間信息

        WinCE支持TCP/IP通信協(xié)議,同時還支持套接字(Socket)的應用。通過調用Socket的API函數(shù)可以完成網(wǎng)絡通信程序的編寫。本設計就是通過套接字與Internet時間服務器建立連接來獲取時間信息的。

        首先需要用“WSAStartup(MAKEWORD(2,2),&wsd)”加載套接字,用“socket(AF_INET,SOCK_STREAM,0)”創(chuàng)建套接字;然后由“connect(hSocket,(struct sockaddr*)&sin,sizeof(sin))”向internet時間服務器發(fā)出連接請求。

        對于wsd、sin以及后面程序要用到的hostinfo等,要進行如下定義:

        WSADATA wsd;

        PHOSTENT hostinfo;

        struct sockaddr_in sin;

        struct hostent*host=NULL;

        LPCSTR ip;

        SOCKET hSocket;

        連接Internet時間服務器的具體程序為:

        WSAStartup(MAKEWORD(2,2),&wsd);

        hSocket=socket(AF_INET,SOCK_STREAM,0);

        sin.sin_addr.s_addr=inet_addr(ip);

        sin.sin_family=AF_INET;

        sin.sin_port=htons(13);

        connect(hSocket,(struct sockaddr*)&sin,sizeof(sin)))

        程序中的ip就是需要連接的Internet時間服務器的地址,13為提供時間服務的端口號。連接成功返回為空。連接成功以后還需要向它發(fā)出GET請求報文,之后就可以接收Internet時間服務器返回的時間信息了。

        發(fā)送GET請求報文:

        wsprintf(szBuff,"GET/HTTP/1.1\r\n");

        send(hSocket,szBuff,strlen(szBuff),0);

        wsprintf(szBuff,"User-Agent:WinceNetTime.EXE\r\n");

        send(hSocket Cs,szBuff,strlen(szBuff),0);

        wsprintf(szBuff,"Host:");

        strcpy(szBuff,szLocalIp);

        strcpy(szBuff,":13\r\n\r\n");

        send(hSocket,szBuff,strlen(szBuff),0);

        接收Internet時間服務器返回的時間信息:

        szRecv(hSocket,szRecv,sizeof(szRecv),0);

        這樣,服務器返回的時間信息便保存到szRecv里。

        4 自動校準系統(tǒng)時間

        4.1 時間服務器選擇策略

        由于Internet時間服務器可能存在工作狀態(tài)不正常、域名變更、Internet網(wǎng)絡阻塞等狀況,在自動同步時間時采用了如圖1所示的時間服務器選擇策略。

        圖1 時間服務器選擇策略

        4.2 校準系統(tǒng)時間

        SetSystemTime()是設置系統(tǒng)時間的函數(shù),它只有一個參數(shù),是一個SYSTEMTIME結構。只要把接收到的時間信息賦值給這個結構的對應成員,再執(zhí)行這個函數(shù),就可以同步WinCE系統(tǒng)時間了。

        SYSTEMTIME tm;

        szBuff[0]=szRecv[7];szBuff[1]=szRecv[8];szBuff[2]=0;

        tm.wYear=2000+atoi(szBuff);

        szBuff[0]=szRecv[10];szBuff[1]=szRecv[11];szBuff[2]=0;

        tm.wMonth=atoi(szBuff);

        szBuff[0]=szRecv[13];szBuff[1]=szRecv[14];szBuff[2]=0;

        tm.wDay=atoi(szBuff);

        szBuff[0]=szRecv[16];szBuff[1]=szRecv[17];szBuff[2]=0;

        tm.wHour=atoi(szBuff);

        szBuff[0]=szRecv[19];szBuff[1]=szRecv[20];szBuff[2]=0;

        tm.wMinute=atoi(szBuff);

        szBuff[0]=szRecv[22];szBuff[1]=szRecv[23];szBuff[2]=0;

        tm.wSecond=atoi(szBuff);

        SetSystemTime(&tm);

        程序中的atoi()是ASCII字符轉換成整數(shù)的子程序。為了避免時間同步程序在連接時間服務器及通信過程中出現(xiàn)阻塞,對WinCE其他程序產生影響,將這部分程序專門開辟一個線程來進行處理。在這個線程中,程序將按用戶設置的時間間隔來自動同步系統(tǒng)時間。

        結 語

        嵌入式系統(tǒng)的時間同步在自動控制和通信領域占有特別重要的地位。本文在從Internet時間服務器的Daytime協(xié)議入手,詳細地介紹了連接時間服務器獲取時間信息的實現(xiàn)機理和實現(xiàn)方法。由于在連接時間服務器時,采用了自己設計的時間服務器選擇策略,使得自動同步時間的成功率大為提高。將它定制到WinCE內核中,隨系統(tǒng)啟動后,便可以完成嵌入式WinCE系統(tǒng)的時間自動同步。同樣地,這種設計方法也可以運用到WinCE的應用軟件中。

        [1]陳華鵬.簡單網(wǎng)絡時間協(xié)議(SNTP)[OL].[2011-06].http://man.lupaworld.com/content/develop/rfc/RFC1769.htm.

        [2]Mills D L.Modelling and Analysis of Computer Network Clocks:Electrical Engineering Department Report 92-5-2[R].Newark:University of Delaware,1992:29.

        [3]J Postel.RFC867—1983Daytime Protocol[S].

        [4]馮博琴,徐景民,李波.計算機時間同步問題的研究[J].西安交通大學學報,1999,33(5).

        [5]李明國,宋海娜,胡衛(wèi)東.Internet網(wǎng)絡時間協(xié)議原理與實現(xiàn)[J].計算機工程,2002,28(2).

        猜你喜歡
        嵌入式程序信息
        試論我國未決羈押程序的立法完善
        人大建設(2019年12期)2019-05-21 02:55:44
        搭建基于Qt的嵌入式開發(fā)平臺
        “程序猿”的生活什么樣
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        英國與歐盟正式啟動“離婚”程序程序
        嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
        創(chuàng)衛(wèi)暗訪程序有待改進
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        Altera加入嵌入式視覺聯(lián)盟
        倍福 CX8091嵌入式控制器
        自動化博覽(2014年4期)2014-02-28 22:31:15
        一本色综合久久| 中文字幕乱码日本亚洲一区二区| 尹人香蕉久久99天天拍| 亚洲av日韩av无码污污网站| 色诱久久av| av免费看网站在线观看| 一本色道久久88—综合亚洲精品 | 精品人妻伦九区久久aaa片| 欧美激情乱人伦| 无码人妻精品丰满熟妇区| 亚洲日韩乱码中文无码蜜桃臀| 777久久| 熟女少妇av一区二区三区| 亚洲av高清天堂网站在线观看| 人妻丰满熟妇aⅴ无码| 国产美女精品视频线免费播放软件| 午夜不卡久久精品无码免费| 中文字幕天天躁日日躁狠狠| 日韩极品免费在线观看| 免费在线国产不卡视频| 日本无遮挡真人祼交视频| 777午夜精品免费观看| 中文字幕在线久热精品 | 亚洲碰碰人人av熟女天堂| 日韩永久免费无码AV电影| 丁香婷婷激情俺也去俺来也 | 日本做受120秒免费视频| 国产偷国产偷亚洲清高| 无码三级国产三级在线电影| 亚洲视频在线观看一区二区三区| 亚洲国产av无码专区亚洲av| 最新国产乱视频伦在线| 国产极品嫩模大尺度在线播放| 少妇激情av一区二区三区| 无遮挡边摸边吃奶边做视频免费| 成人永久福利在线观看不卡| 久久久亚洲av成人乱码| 四虎影视成人永久免费观看视频| 国自产偷精品不卡在线| 免费va国产高清不卡大片 | 久久伊人色av天堂九九|