数据传输进程子面板

2015-10-19 10:12:26   来源:eefocus   

关键字: 数据传输  子面板

一.     概述

Tcp传输文件夹的任务也完成了,想要把程序做的完美一点,于是想起了win8中在copy文件或文件夹时的传输进程面板,显示了要从何位置传输多少文件到何位置,已传输多少的进度条还有显示实时速度和平均速度的图标,于是我借鉴了win8的做法,想要实现这样一个功能,使得数据传输过程更加清晰。下图为win8系统传输文件的面板

数据传输进程子面板
 

 

二.     需求分析

做一个一样的子面板并不难,然而子面板和主程序的通信与控制将成为重点。类似于上面的面板,子面板需要以下的数据信息:被传输的文件(或文件夹)名称,数量,绝对路径,接受的它的IP地址,当前已传输的比例,实时传输速度,平均速度。以上信息都要通过主程序传输给子面板,传输方式就是我上一篇文章中讲到的队列。

三.     具体程序

程序的程序设计思路框图没什么可说的,就是在tcp的传输子循环中把生成的上面所需要的信息组成一个簇以队列的方式发送给子面板,子面板经过相关计算后显示在子面板的前面板,主程序接收后同时关闭子面板即可,下面分别说以下每一部分的具体程序框图。

1.     主程序部分

首先主程序中通过一系列的数据组合,还有类似已传输量,总运行时间,这些数据都需要通过移位寄存器进行累计,最后组成一个簇,然后发给队列,这个簇包含以下信息(按顺序叙述):已传输文件个数,初始时间(开始传输的计时时间),文件路径,客户IP地址,文件个数,文件总量(B),已传输总量(B),每次传输量形成的数组,实时速度(发送每一小段的速度)构成的数组,当前时间(计时器计时的当前时间);

数据传输进程子面板
 

 

接下来用队列发送数据给子Vi,队列的数据格式为簇的格式,同时我们需要设定该循环停止的条件就是n个文件中的n-1个文件已经传输完毕,并且第n个结束传输信号为真,这样就关闭子Vi,然后关闭该循环。

数据传输进程子面板
 

 

2.     子面板部分

经过设计,子面板的主界面如下图所示

数据传输进程子面板
 

 

上图中进度条和图标显示的很明白,其中两个蓝色按钮本来是模仿win8中的两个按钮分别用来暂停传输和取消传输的,但是由于程序目前还木有做这一部分,所以这个问题以后再说,两个按钮左边的空白就是显示从何处传输何数据给何地址的空白,下面对后面板程序做一简单说明。

    首先说一下子Vi的整体框图,它一共包含三部分,如下图所示,用一个顺序结构将三部分分开:初始化,数据计算显示以及程序是否关闭的程序。第一部分就是设定速度图表的颜色以及按钮初始化;第三部分主要是根据文件是否传输完毕作为条件结构的输入来判断并关闭子Vi前面板和停止运行子Vi,下面主要说一下第二部分,数据的计算和处理里面的图表的描绘。

数据传输进程子面板
 

 

其他的数据大多是直接传输显示的,还有几个例如平均速度,文件路径等是经过了一定的处理后在界面上显示的,而图表相对麻烦一点

数据传输进程子面板
 

 

图表的x轴是已经传输的百分比,总长为100%,这需要把每一小块传输结束后所传输的总量用数组保存,然后通过一个for循环让数组的每一个值除以总的需要传输的量就是x轴的数据;而y轴显示的是x轴所对应的每一小块传输的时候的实时速度,然后也将它们累计起来成一个数组作为xy图的y输入数组即可,这一部分实现以以后程序就基本结束了。

[1] [2]

Warning: file_put_contents(/Data/webapps/cms/SSI/../caches/cache_relativedata/http://www.eeworld.com.cn/Test_and_measurement/2015/1019/article_13574.html) [function.file-put-contents]: failed to open stream: No such file or directory in /Data/webapps/cms/phpcms/libs/functions/global.func.php on line 2150
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

推荐阅读

编辑:什么鱼
本文引用地址: http://www.eeworld.com.cn/Test_and_measurement/2015/1019/article_13574.html
[发表评论]
[加入收藏]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
每日新闻

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /Data/webapps/cms/phpcms/libs/functions/global.func.php on line 2075

Warning: file_get_contents(http://training.eeworld.com.cn/shareCourseAPI/measure?count=5&csfl=no) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /Data/webapps/cms/phpcms/libs/functions/global.func.php on line 2075

Warning: array_values() [function.array-values]: The argument should be an array in /Data/webapps/cms/SSI/show_training_SSI.php on line 16

大学堂最新课程更多


Warning: Invalid argument supplied for foreach() in /Data/webapps/cms/SSI/show_training_SSI.php on line 23
最热点击
本周热门资源推荐
EEWORLD独家
论坛精华
精选博文