网络的软件设计透析

时间:2022-09-25 04:48:25

网络的软件设计透析

网络编程的实现

网络编程基于TCP协议的网络编程,按照是否有帧听端口,通常分为两种模式,一种是服务器模式(侦听端口),另外一种为客户端模式。本仪器采用的是客户端模式。关于Linux网络通信中客户端编程的初始化代码,由于资料较多,这里不再累述。本文仅仅给出接收数据或发送数据的部分代码,因为仪器除了要处理网络信息外,还要进行检测数据的采集以及按键信息的处理,因此网络数据的传送或接收,不可以是阻塞的模式,必须是能够立即返回的非阻塞模式。本仪器采用传统的Linux操作系统下API函数select,来实现对网络端口状态的监控,进而实现数据传输的非阻塞功能。以下是实现功能的部分代码。发送数据的代码段,其中m_tv变量保存的是超时返回的时间设置。接收数据的代码段,m_tv的定义同上。如检测到网络口有数据上送的时候才进行数据的接收。

通信模块的详细介绍

通信协议介绍发生通信的两端(仪器和上位机),按照事先对数据传送的同步方式、数据结构、底层通信协议进行相互的约定,共同的遵守,这些约定就称为通信规约。基于网络接口的通信协议工作在应用层。通信协议制定的好坏直接影响仪器传输数据的速率,以及通信质量的可靠程度。按照通信协议的传输类型一般分为三类:(1)循环上送类型。仪器在进行正常的设置之后,不经过上位机的干预,主动将数据发送到上位机。(2)事件驱动类型。在正常工作模式下不向上位机发送数据,当有特殊事件发生的时候才向上位机发送数据。(3)被动召调类型。正常工作的时候,仪器不向上位机传送数据,直到上位机向仪器发送召调报文的时候才进行数据上送。考虑到仪器的工作模式,需要实时的向上位机发送数据,所以排除事件驱动类型的通信规约。由于检测手段的限制,要求仪器软件采样率较高,通常为10kHz以上,故对于数据传输的实时性要求较高,也不采用召调类型的传输协议。最终,仪器采用的是循环上送类型传输协议。协议内容仪器与上位机进行通信,包括两个方面的内容:(1)从上位机接收报文,例如开始采集数据、停止采集、发送参数等;(2)将采集到的数据发送给上位机,以供上位机进行显示或分析。的是三组0xD70x09共6个字节作为同步字,该报文头参照“部颁CDT循环远动规约”中的报文规定。数据帧长度:表示该帧报文的长度,由两个字节的长度表示,低字节在前,高字节在后。报文的长度不包括同步字的六个字节。命令控制字:指示该帧报文的作用,由两个字节的长度表示,低字节在前,高字节在后。数据区域:包含需要上传或是下载数据的内容。数据的内容都是两个字节组成一个数据元素,低字节在前,高字节在后。在原协议中,在数据区域后还存在一个校验码域,是用来检验该帧报文的数据是否完整。但由于仪器的底层采用的是基于流套接字的TCP报文协议,是可靠性连接,并且考虑到数据传送的实时性,在实际的工程使用中将校验码域进行删除。因篇幅有限,仅给出部分实际报文例子,其他报文类似推导即可:(1)开始采集数据0xD70x090xD70x090xD70x090x040x000x010x00(2)发送心跳包0xD70x090xD70x090xD70x090x040x000x050x00(3)循环上送数据0xD70x090xD70x090xD70x090x140x000x080x000x110x000x220x000x330x000x440x000x550x000x660x000x770x000x880x00其中,0x110x00~0x880x00表示的是八个物理采样通道的检测数值。协议分析流程图任何数据通信协议都必须依靠软件实现,因此软件对通信协议实现的好坏情况,直接影响仪器的系统稳定性和其他性能指标。系统的稳定性是指仪器能否经受得住长时间,大数据量传输的考验而不出现死机或数据传输不稳定的情况。其他性能指标是指实时性以及均匀性,实时性指仪器能否将数据实时的传输给上位机或对于上位机给出的报警信息是否及时响应,均匀性指数据的传输是否节奏一致,不能时快时慢。详细的程序处理流程协议分析流程图。当协议解析程序段分析出上位机给出的命令控制字后,就可以很方便地根据命令来进行相关的动作,例如设置参数、应答数据、设置报警等。

仪器软件自动更新的实现

由于软件自身的特性,使得任何一款软件产品在的早期阶段都不可避免的存在一些逻辑上的瑕疵或功能上的缺失。因此,为了使客户能有良好的使用体验,仪器必须能够提供一种有效的机制,使其在提供给用户使用之后,用户仍然能够方便地对其进行软件上的升级、更新操作。升级过程描述考虑到升级软件的操作必须简单、可靠,故仪器采用同样基于网络接口的FTP模式进行程序更新。实现描述如下:预先在仪器的内部存储芯片上固化一种FTP服务程序。当有需要进行软件更新时启动该服务程序,这样仪器就立刻变成了一台拥有FTP服务功能的“服务器”。用户通过网线将仪器与个人电脑相连接,通过浏览器登录到仪器上,将程序下载到仪器内部的存储器的某个地址空间,之后将仪器与个人电脑分离,让仪器内部的主控程序在对下载的应用程序进行有效性检验后,将它替换当前的应用程序,完成软件升级。升级程序的软件处理流程,程序有效性验证在更新仪器程序的过程中,由于外界偶然因素的干扰,可能导致程序的传输过程发生中断或因人为疏忽造成应用程序传输错误等问题,这样应用程序的更新就可能不成功,因此需要一种校验机制来判断所传输的程序是否正确、完整。本仪器采用的是通用的用于确保信息传输完整一致的MD5码校验机制。根据公开的MD5算法将待升级的程序进行数学变换得到一个128位的特征码,将该特征码附加到程序文件结尾,连同该程序文件一起传输给仪器。由主控程序将所下载的程序进行MD5码检验后,根据比较的结果向用户报告所传输的程序是否是完整的和正确的。MD5码生成函数参考开源MD5码软件包,主要函数与结构包含有MD5_CTX、MD5Iinit、MD5Update、MD5Final。FTP服务器的配置FTP的全称是FileTransferProtocol(文件传输协议)。FTP服务器是指能提供以FTP协议为传输协议进行文件传输服务的设备。能够实现FTP服务器功能的软件非常多,本仪器采用的是VSFTP这一款开源软件做为提供FTP服务的后台服务程序。采用VS-FTP作为后台服务程序有三点理由:(1)VSFTP服务器是开源软件,可以获得源代码。(2)VSFTP服务器规模较小,性能可靠,适合嵌入式仪器使用。(3)VSFTP具有高度的可配置性,使得仪器的使用比较灵活。由于篇幅有限,VSFTP服务器的交叉编译以及安装过程略过,读者可以从相关的官方网站上获得。正确地编写VSFTP服务器配置文件vsftp.conf,将文件复制到文件系统的/etc目录中,当vsftpd程序运行起来后,将会按照配置文件的内容进行工作。

作者:王威 柯少鈞 林伟华 林春景 林发炳 单位:爱德森( 厦门) 电子有限公司

上一篇:军舰通信系统模型研讨 下一篇:通信对抗关键点对通信网的适用性