·28·
第3
Python语言设计的广播电视时钟同步程序
董云龙
(辽宁省广播电视锦州中波站)
【摘 要】Python语言是当下最热门的编程语言之一,它的设计风格清晰化一,语句易读易懂,容易维护,Python提供了丰富的应用程序接口和工具供用户扩充使用,使用Python语言编写程序简洁、快速、高效,因而被大量用户所欢迎,并逐渐被应用在各行各业各领域。本文介绍了如何使用Python语言,来解决了日常值机过程中的遇到的设备时钟同步的难题。【关键词】Python语言;广播电视时钟;同步程序
作者简介:董云龙,辽宁省广播电视锦州中波站,工程师,主要从事值机和维护工作。
笔者所在的单位于2019年新安装了一套广播电视综合监控报警系统,该系统有一台GPS时钟提供本系统内统一的时间信息,由厂家提供的“GpsTimer”软件安装在每台计算机的后台提供服务。在日常值机过程中笔者发现,该软件从GPS时钟获取的时间经常停顿、重复,并且该软件后台无论获取的时间是否正确,每秒强制同步计算机系统时间,导致系统时间和GPS时间显示紊乱。同时该软件向其他计算机提供时间服务,其他计算机每5s从这台时间紊乱的计算获取时间,同时强制同步,致使整套系统的时间摇摆不定。
若不使用统一的时间,由于每台计算机的时钟由主板上的晶体提供,该晶体的稳定性较差,不同计算机的时间有快有慢,但在一定时间范围内误差尚可接受。笔者通过停用时间同步服务,观察发现,网内的计算机时间在1天之内秒数变化±10s,在1hr之内基本同步。因此突发奇想,通过控制同步系统时钟的时间间隔来保持系统时钟基本稳定,同时如果GPS时钟出现
传输错误,可以实现自动计算时间,避免让静止的错误时间同步给计算机。
在计算机上实现该项功能需要选择一门编程语言。目前主流的C语言、C++、JAVA等语言若要实现这些联网、数据传输、数据计算、逻辑处理、调用应用程序接口等功能时会相当复杂,需要一定的编程基础,并且开发周期很长。笔者最终选择当前在人工智能领域应用最火的Python语言来完成这些工作。Py
thon语言把复杂的功能封装成模块,用户只需要关注希望实现的功能,使用时按照语法调用这些模块和函数即可,非常方便、快捷、高效率。
编程思路如下:
1.服务器端编程思路:①服务器端连接GPS 时钟,并获取GPS时间,当GPS时钟服务器有故障,获取的时间静止时,需要自动计算正确时间。②设定服务器端定时同步系统时间,当时间到达时,更新服务器时间,服务器需要对外提供时间信息,因此要求时间更精准,设定600s(10min)强制更新。③服务器对网内其他
·29·
总第105期
中心技术
System Technology
需要时间的计算机提供服务,监听其他计算机的连接信息,当连接建立时,向其发送北京时间数据。
2.客户端编程思路:客户端编程相对简单,只需设定需要更新计算机的时间间隔,例如设定3600s(1hr),当时间到达时,与服务器的地址和端口建立连接,发送握手信息,从服务器获取时间并强制更新本机时间。
3.其他说明:厂家的GPS时钟通过检测发现提供的是TCP连接,因此服务器端连接GPS时钟时,要选择TCP协议进行编程。服务器端对外提供服务时,为了达到快速、低延迟地传输信息的目的,则选用UDP协议进行编程。
4.编程需要的模块:socket模块提供网络连接功能;time、datetime、timedelta提供时间、
日期、时间转换功能;os模块提供Windows应用程序接口功能。import语句为导入一个整个模块或包;from import语句从包或者模块导入某个对象。
5.需要注意的问题:不同厂家的GPS时钟对外发送的时间信息类型不同,分为Timestamp时间戳、GNSS时间、GMT时间、UTC时间、BJT北京时间等。其中Timestamp和GNSS时间是同一种时间的两种不同表示方式,GMT和UTC时间是参考的基准不同,GNSS与UTC时间有37秒的时间
差,UTC与BJT时间有8小时的时间差,BJT才是最终需要的北京时间。从本单位GPS时钟获取的时间为UTC时间,运算和转换时,需要注意这些时间之间的计算关系。
计算机编程工资多少
程序详情如图1、2、3和4所示。
图1
服务器程序清单
图2 服务器运行结果
图3 客户端程序清单
图4 客户端运行结果
由此可见,使用Python语言只用了数十行代码即可实现需要的功能,目前该程序在我单位稳定运行,解决了困扰已久的计算机时间不同步的
问题。笔者将编程经验分享至此,希望广播电视同行,可以充分利用Python的优势实现更多、更智能的功能,为广播电视安全播出保驾护航!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。