APP下载

基于C#的台站设备通信快速检测工具的设计与实现

2019-06-22谭仕钊陆光照

视听 2019年5期
关键词:文本框窗体控件

谭仕钊 陆光照

(广西广播电视技术中心河池分中心)

一、开发背景及意义

此前,台站维护人员面对台站设备通信故障的主要检测方式是使用网线直接连接待测设备及调试电脑,并通过CMD命令提示符发送Ping指令来确定该设备的通信状况。该方法存在操作繁琐、面对多台设备时效率低下等问题。

经过数次升级改造工作,目前广西省境内所有广播电视无线发射台站的设备均已接入台站交换机,并入内部局域网。这给台站的维护工作提供了便利,但仍缺少一款能对台站设备综合进行检测的软件工具。因此,设计并实现这样一款方便易用、能够快速定位故障设备的软件工具对提高维护人员的工作效率、保证安全播出工作的进行具有重要意义。

二、相关理论与工具

Ping指令全称“因特网包探索器”,通过发送ICMP报文并接收ICMP回声应答来确定网络链路是否通畅,是TCP/IP协议的一部分。本文基于此原理,通过编程语言调用该指令并将获得的反馈结果直观展示。

本文所设计的通信快速检测工具是在Windows10系统平台下使用Microsoft Visual Studio 2017集成开发环境来完成设计和测试。使用C#语言编写,运行在.NET Framework 3.5框架上。

三、需求分析

台站设备众多,每一台设备都有对应的操作软件及成熟完善的故障处理方法,若全部整合则工作量巨大且属于重复工作。因此本工具只需要检测台站内各式设备与交换机之间的通信情况即可。若设备与交换机之间的通信正常,则说明该设备与远程监控平台系统的通信亦正常,可以正常回传上报数据进行监测,发现问题则可以及时处理。为了提高工作效率,本工具还应该适当加入一些快捷设置功能,方便维护人员跳过繁琐的设置IP等步骤。在测试完成之后,本工具还应可直观的保存检测结果,遇到未能及时解决的问题时方便下次维护进行解决。

四、程序设计与实现

根据需求分析,本程序的主要功能可以分为IP配置模块、查询模块、单项通信检测模块、集合检测模块以及保存模块来实现。

(一)模块功能设计

1.IP 配置模块

IP配置模块在设计的时候应该考虑到易用性和直观性,可以让使用者直接通过选择选项来确定IP地址,无需手动输入,避免输入错误等情况发生。同时直接显示出当前的IP地址,让使用者能确认IP地址的修改状态。

程序启动时,模块下方的文本框内会显示当前默认网卡的IP地址,如果存在多张网卡(例如虚拟机等程序创建的虚拟网卡)无法直接确定当前正在使用的网卡时,则弹出提示,使用者可以进入Windows网络管理界面内右键禁用未使用的网卡后再操作。在下拉列表里选择对应台站后,文本框内会出现相应台站的IP地址,此时只需要点击“修改”按钮即可将检修电脑的IP修改为显示的地址。修改完成后或IP地址发生变化时可以通过点击“刷新”按钮来让文本框内显示当前的IP。另外软件会判断文本框内的IP地址格式是否正确,如果格式错误则点击修改按钮的时候会提示错误。成功修改后也会有提示IP修改成功。

模块功能的主要功能实现方法如下:

选择台站变更文本框内容:在ComboBox控件的选择变更事件(SelectedIndexChanged)内使用switch case语句进行判断,让下方TextBox控件的内容随选择的值进行变更即可。

默认显示当前IP(刷新按钮):使用C#的ManagementClass类来获取并显示IP地址。

判断IP地址格式是否正确:引用System.Text.RegularExpressions命名空间后调用Regex类,通过正则表达式来判断IP地址是否正确。

2.查询模块

查询模块主要通过一个单独的窗体来展示IP规划表,使用者选择对应的项目即可查看到对应设备的IP地址及端口等信息。由于IP规划表主要划分为1至3级台站及乡镇台站两大部分。由于台站IP都为统一规划,只需在类别设置内添加乡镇台站和1至3级台站两个选项即可。对台站还可以更详细的划分为数字电视发射机系统、调频发射机系统、信源及其他系统等多个选项以方便查阅。具体界面设计如图1。

窗体使用两个panel控件隔开,上方的panel内放置选择窗体,下方的panel内放置存有IP规划表的picturebox控件,通过comboBox控件的选择事件来控制图片的visible属性进而实现对应图片的显示与隐藏。

3.单项通信检测模块

单项通信模块用于单独测试某设备的通信状况。主要用在部分未接入远程监控系统的设备(如乡镇台站某品牌50W数字电视发射机功放单元)及单独调试某设备时使用。如果设备支持网页管理功能,则还可以调用浏览器直接打开管理页面。

当在模块内的文本框输入一个IP地址,点击测试按钮即可对该IP地址的通信状况进行检测,并能实时反馈检测结果。点击模块下方对应按钮即可调用系统默认浏览器打开该IP所指向的网页。

图1 查询模块界面设计

测试通信功能主要使用System.Net.NetworkInformation命名空间下的Ping类来实现,使用Ping.Send()方法来进行通信状态检测,PingReply类则用来存储返回的结果,如果PingReply对象的Status属性和枚举IPStatus.Success的值相同则表示通信正常。

4.集合通信检测模块

集合通信检测模块是整个程序的核心部分,其主要功能为检测台站内所有已经接入远程监控系统设备的通信情况,并将检测结果展示给使用者。

该模块的检测内容分为乡镇台站和三级台站两个部分。考虑到调试电脑显示分辨率可能不一致,同时为了方便控制总窗体的界面大小,使用tabControl控件来进行分隔放置。

某些设备存在多个检测内容(如某品牌调频发射机)或有主备机等多台相同设备,为了方便查看将其整合到同一窗体,只需点击“详情”按钮即可在弹出的窗口内看到该类型设备的通信情况。

点击选项标签后,窗体上方会显示对应项目名称,左侧为设备名称(或编号),右侧为状态。将检修电脑接入台站交换机后,点击测试按钮即可进行检测。如未选择检测内容或没有在IP配置模块选择对应台站,则点击测试按钮会弹出提示窗口进行提醒。根据设备的通信状态,检测所需时间长短也各不相同,可以点击“暂停”或“继续”选项来暂停或中止检测过程。

检测过程使用Ping类来实现,但有一点需要注意:检测过程对界面的控件状态有较多更改,若用主线程直接操作控件,在同时处理大量界面刷新请求会导致界面卡死无响应,导致程序无法正常运行,因此必须使用委托(delegate)来进行对界面控件的操作。

5.保存模块

保存模块的主要功能是将检测结果保存存档,可直接调用.Net的System.Drawing.Bitmap类来截取当前窗体内容,并使用SaveFileDialog类将其截获的图片保存为以时间日期命名的文件。

(二)总体整合设计

各模块设计完成后,将其整合为一个能正常运行、方便使用的软件工具,设计阶段基本完成。最终的软件界面如图2所示。

根据软件设计规范,各模块的工作应独立进行,因此必须使用Threading类创建多线程来进行操作,否则会造成系统资源的抢占导致程序崩溃、卡死等。为每个模块分配一个独立的线程,同时在线程内再调用委托方法,确保程序正确运行。

图2 软件主界面

五、程序测试

对该工具进行系统、全面的测试,程序运行过程中全部功能正常,未发现明显Bug。投入实际维护工作中进行检验,亦能够正确运行。图3为某次测试得出的结果展示。

六、总结

图3 测试结果

随着时代的发展,计算机技术与我们的生活工作变得密不可分。使用计算机技术实现高效管理,取代效率低下的人工管理,不仅仅是“互联网+”概念在我们广播电视工作中的实际应用,更是一种创新精神的体现。通过计算机技术来发扬创新精神,不但能极大的优化我们的工作方式,提高工作效率,更能为安全播出增添全新保障,确保整个广播电视系统工作有序进行。

猜你喜欢

文本框窗体控件
基于.net的用户定义验证控件的应用分析
巧用文本框实现PPT多图片排版
PPT文本框的另类应用
试谈Access 2007数据库在林业档案管理中的应用
关于.net控件数组的探讨
图片动画玩异样
文本框酷变3D效果
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
WinCE.net下图形用户界面的开发
Spreadsheet控件在Delphi数据库系统中的编程与应用